Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/mbe/src/tests.rs')
| -rw-r--r-- | crates/mbe/src/tests.rs | 120 |
1 files changed, 119 insertions, 1 deletions
diff --git a/crates/mbe/src/tests.rs b/crates/mbe/src/tests.rs index a5672e4e05..769455faac 100644 --- a/crates/mbe/src/tests.rs +++ b/crates/mbe/src/tests.rs @@ -74,7 +74,8 @@ fn check_( "{}", syntax_bridge::prettify_macro_expansion::prettify_macro_expansion( node.syntax_node(), - &mut |it| it.clone() + &mut |_| None, + |_| () ) ); expect.assert_eq(&expect_res); @@ -356,3 +357,120 @@ fn expr_2021() { ;"#]], ); } + +#[test] +fn minus_belongs_to_literal() { + let decl = r#" +(-1) => {-1}; +(- 2) => {- 2}; +(- 3.0) => {- 3.0}; +(@$lit:literal) => {$lit} +"#; + let check = |args, expect| check(Edition::CURRENT, Edition::CURRENT, decl, args, expect); + check( + "-1", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 0:[email protected]#ROOT2024 + LITERAL Integer 1 0:[email protected]#ROOT2024 + + -1"#]], + ); + check( + "- 1", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 0:[email protected]#ROOT2024 + LITERAL Integer 1 0:[email protected]#ROOT2024 + + -1"#]], + ); + check( + "-2", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 0:[email protected]#ROOT2024 + LITERAL Integer 2 0:[email protected]#ROOT2024 + + -2"#]], + ); + check( + "- 2", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 0:[email protected]#ROOT2024 + LITERAL Integer 2 0:[email protected]#ROOT2024 + + -2"#]], + ); + check( + "-3.0", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 0:[email protected]#ROOT2024 + LITERAL Float 3.0 0:[email protected]#ROOT2024 + + -3.0"#]], + ); + check( + "- 3.0", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 0:[email protected]#ROOT2024 + LITERAL Float 3.0 0:[email protected]#ROOT2024 + + -3.0"#]], + ); + check( + "@1", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + LITERAL Integer 1 1:[email protected]#ROOT2024 + + 1"#]], + ); + check( + "@-1", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 1:[email protected]#ROOT2024 + LITERAL Integer 1 1:[email protected]#ROOT2024 + + -1"#]], + ); + check( + "@1.0", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + LITERAL Float 1.0 1:[email protected]#ROOT2024 + + 1.0"#]], + ); + check( + "@-1.0", + expect![[r#" + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [alone] 1:[email protected]#ROOT2024 + LITERAL Float 1.0 1:[email protected]#ROOT2024 + + -1.0"#]], + ); + check( + "@--1.0", + expect![[r#" + ExpandError { + inner: ( + 1:[email protected]#ROOT2024, + BindingError( + "expected literal", + ), + ), + } + + SUBTREE $$ 1:[email protected]#ROOT2024 1:[email protected]#ROOT2024 + PUNCH - [joint] 1:[email protected]#ROOT2024 + PUNCH - [alone] 1:[email protected]#ROOT2024 + + --"#]], + ); +} |