minor: Add a mbe test for parsing negative literals

This commit is contained in:
Lukas Wirth 2025-05-05 12:09:49 +02:00
parent b3e086ad10
commit 9d1364b730
2 changed files with 118 additions and 0 deletions

View file

@ -483,6 +483,7 @@ impl DefMap {
curr_per_ns = match curr.def {
ModuleDefId::ModuleId(module) => {
if module.krate != self.krate {
// FIXME: Inefficient
let path = ModPath::from_segments(
PathKind::SELF,
path.segments()[i..].iter().cloned(),

View file

@ -356,3 +356,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:0@0..2#ROOT2024 1:0@0..2#ROOT2024
PUNCH - [alone] 0:0@10..11#ROOT2024
LITERAL Integer 1 0:0@11..12#ROOT2024
-1"#]],
);
check(
"- 1",
expect![[r#"
SUBTREE $$ 1:0@0..3#ROOT2024 1:0@0..3#ROOT2024
PUNCH - [alone] 0:0@10..11#ROOT2024
LITERAL Integer 1 0:0@11..12#ROOT2024
-1"#]],
);
check(
"-2",
expect![[r#"
SUBTREE $$ 1:0@0..2#ROOT2024 1:0@0..2#ROOT2024
PUNCH - [alone] 0:0@25..26#ROOT2024
LITERAL Integer 2 0:0@27..28#ROOT2024
-2"#]],
);
check(
"- 2",
expect![[r#"
SUBTREE $$ 1:0@0..3#ROOT2024 1:0@0..3#ROOT2024
PUNCH - [alone] 0:0@25..26#ROOT2024
LITERAL Integer 2 0:0@27..28#ROOT2024
-2"#]],
);
check(
"-3.0",
expect![[r#"
SUBTREE $$ 1:0@0..4#ROOT2024 1:0@0..4#ROOT2024
PUNCH - [alone] 0:0@43..44#ROOT2024
LITERAL Float 3.0 0:0@45..48#ROOT2024
-3.0"#]],
);
check(
"- 3.0",
expect![[r#"
SUBTREE $$ 1:0@0..5#ROOT2024 1:0@0..5#ROOT2024
PUNCH - [alone] 0:0@43..44#ROOT2024
LITERAL Float 3.0 0:0@45..48#ROOT2024
-3.0"#]],
);
check(
"@1",
expect![[r#"
SUBTREE $$ 1:0@0..2#ROOT2024 1:0@0..2#ROOT2024
LITERAL Integer 1 1:0@1..2#ROOT2024
1"#]],
);
check(
"@-1",
expect![[r#"
SUBTREE $$ 1:0@0..3#ROOT2024 1:0@0..3#ROOT2024
PUNCH - [alone] 1:0@1..2#ROOT2024
LITERAL Integer 1 1:0@2..3#ROOT2024
-1"#]],
);
check(
"@1.0",
expect![[r#"
SUBTREE $$ 1:0@0..4#ROOT2024 1:0@0..4#ROOT2024
LITERAL Float 1.0 1:0@1..4#ROOT2024
1.0"#]],
);
check(
"@-1.0",
expect![[r#"
SUBTREE $$ 1:0@0..5#ROOT2024 1:0@0..5#ROOT2024
PUNCH - [alone] 1:0@1..2#ROOT2024
LITERAL Float 1.0 1:0@2..5#ROOT2024
-1.0"#]],
);
check(
"@--1.0",
expect![[r#"
ExpandError {
inner: (
1:0@1..2#ROOT2024,
BindingError(
"expected literal",
),
),
}
SUBTREE $$ 1:0@0..6#ROOT2024 1:0@0..6#ROOT2024
PUNCH - [joint] 1:0@1..2#ROOT2024
PUNCH - [alone] 1:0@2..3#ROOT2024
--"#]],
);
}