This commit is contained in:
Aleksey Kladov 2021-12-29 19:37:35 +03:00
parent f5cfc0504e
commit 841cd30b45
2 changed files with 49 additions and 28 deletions

View File

@ -299,34 +299,6 @@ fn baz() {
)
}
#[test]
fn asi() {
// Thanks, Christopher!
//
// https://internals.rust-lang.org/t/understanding-decisions-behind-semicolons/15181/29
check(
r#"
macro_rules! asi { ($($stmt:stmt)*) => ($($stmt)*); }
fn main() {
asi! {
let a = 2
let b = 5
drop(b-a)
println!("{}", a+b)
}
}
"#,
expect![[r#"
macro_rules! asi { ($($stmt:stmt)*) => ($($stmt)*); }
fn main() {
let a = 2let b = 5drop(b-a)println!("{}", a+b)
}
"#]],
)
}
#[test]
fn test_match_group_empty_fixed_token() {
check(

View File

@ -50,3 +50,52 @@ fn test_empty_comments() {
"#]],
);
}
#[test]
fn asi() {
// Thanks, Christopher!
//
// https://internals.rust-lang.org/t/understanding-decisions-behind-semicolons/15181/29
check(
r#"
macro_rules! asi { ($($stmt:stmt)*) => ($($stmt)*); }
fn main() {
asi! {
let a = 2
let b = 5
drop(b-a)
println!("{}", a+b)
}
}
"#,
expect![[r#"
macro_rules! asi { ($($stmt:stmt)*) => ($($stmt)*); }
fn main() {
let a = 2let b = 5drop(b-a)println!("{}", a+b)
}
"#]],
)
}
#[test]
fn stmt_boundaries() {
// FIXME: this actually works OK under rustc.
check(
r#"
macro_rules! m {
($($s:stmt)*) => (stringify!($($s |)*))
}
// +errors
m!(;;92;let x = 92; loop {};);
"#,
expect![[r#"
macro_rules! m {
($($s:stmt)*) => (stringify!($($s |)*))
}
/* error: expected Stmt *//* parse error: expected SEMICOLON */
stringify!()
"#]],
);
}