8082: Proper handle inner recursive macro rules cases r=edwin0cheng a=edwin0cheng

Fixes #7645

cc @jonas-schievink 

bors r+

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
This commit is contained in:
bors[bot] 2021-03-18 12:25:44 +00:00 committed by GitHub
commit d3da042a62
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 0 deletions

View file

@ -231,6 +231,28 @@ fn expr_macro_expanded_in_stmts() {
);
}
#[test]
fn recursive_inner_item_macro_rules() {
check_infer(
r#"
macro_rules! mac {
() => { mac!($)};
($x:tt) => { macro_rules! blub { () => { 1 }; } };
}
fn foo() {
mac!();
let a = blub!();
}
"#,
expect![[r#"
!0..1 '1': i32
!0..7 'mac!($)': {unknown}
107..143 '{ ...!(); }': ()
129..130 'a': i32
"#]],
);
}
#[test]
fn infer_type_value_macro_having_same_name() {
check_infer(