Merge #2790
2790: Add test for macro expansion in various expressions r=edwin0cheng a=flodiebold cc @edwin0cheng Co-authored-by: Florian Diebold <flodiebold@gmail.com>
This commit is contained in:
commit
991b62a4f9
@ -190,7 +190,6 @@ fn to_fragment_kind(db: &dyn AstDatabase, macro_call_id: MacroCallId) -> Fragmen
|
|||||||
TUPLE_EXPR => FragmentKind::Expr,
|
TUPLE_EXPR => FragmentKind::Expr,
|
||||||
PAREN_EXPR => FragmentKind::Expr,
|
PAREN_EXPR => FragmentKind::Expr,
|
||||||
|
|
||||||
// FIXME: Add tests for following cases in hir_ty
|
|
||||||
FOR_EXPR => FragmentKind::Expr,
|
FOR_EXPR => FragmentKind::Expr,
|
||||||
PATH_EXPR => FragmentKind::Expr,
|
PATH_EXPR => FragmentKind::Expr,
|
||||||
LAMBDA_EXPR => FragmentKind::Expr,
|
LAMBDA_EXPR => FragmentKind::Expr,
|
||||||
|
@ -135,6 +135,87 @@ fn main() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn expr_macro_expanded_in_various_places() {
|
||||||
|
assert_snapshot!(
|
||||||
|
infer(r#"
|
||||||
|
macro_rules! spam {
|
||||||
|
() => (1isize);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn spam() {
|
||||||
|
spam!();
|
||||||
|
(spam!());
|
||||||
|
spam!().spam(spam!());
|
||||||
|
for _ in spam!() {}
|
||||||
|
|| spam!();
|
||||||
|
while spam!() {}
|
||||||
|
break spam!();
|
||||||
|
return spam!();
|
||||||
|
match spam!() {
|
||||||
|
_ if spam!() => spam!(),
|
||||||
|
}
|
||||||
|
spam!()(spam!());
|
||||||
|
Spam { spam: spam!() };
|
||||||
|
spam!()[spam!()];
|
||||||
|
await spam!();
|
||||||
|
spam!() as usize;
|
||||||
|
&spam!();
|
||||||
|
-spam!();
|
||||||
|
spam!()..spam!();
|
||||||
|
spam!() + spam!();
|
||||||
|
}
|
||||||
|
"#),
|
||||||
|
@r###"
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
![0; 6) '1isize': isize
|
||||||
|
[54; 457) '{ ...!(); }': !
|
||||||
|
[88; 109) 'spam!(...am!())': {unknown}
|
||||||
|
[115; 134) 'for _ ...!() {}': ()
|
||||||
|
[119; 120) '_': {unknown}
|
||||||
|
[132; 134) '{}': ()
|
||||||
|
[139; 149) '|| spam!()': || -> isize
|
||||||
|
[155; 171) 'while ...!() {}': ()
|
||||||
|
[169; 171) '{}': ()
|
||||||
|
[176; 189) 'break spam!()': !
|
||||||
|
[195; 209) 'return spam!()': !
|
||||||
|
[215; 269) 'match ... }': isize
|
||||||
|
[239; 240) '_': isize
|
||||||
|
[274; 290) 'spam!(...am!())': {unknown}
|
||||||
|
[296; 318) 'Spam {...m!() }': {unknown}
|
||||||
|
[324; 340) 'spam!(...am!()]': {unknown}
|
||||||
|
[365; 381) 'spam!(... usize': usize
|
||||||
|
[387; 395) '&spam!()': &isize
|
||||||
|
[401; 409) '-spam!()': isize
|
||||||
|
[415; 431) 'spam!(...pam!()': {unknown}
|
||||||
|
[437; 454) 'spam!(...pam!()': isize
|
||||||
|
"###
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn infer_type_value_macro_having_same_name() {
|
fn infer_type_value_macro_having_same_name() {
|
||||||
assert_snapshot!(
|
assert_snapshot!(
|
||||||
|
Loading…
Reference in New Issue
Block a user