Merge #7134
7134: Fix infer error of macro invocation in array expr r=edwin0cheng a=edwin0cheng Fixed following infer error: ```rust macro_rules! bar { () => {0u32} } fn test() { let a = [bar!()]; // a : [unknown] } ``` bors r+ Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
This commit is contained in:
commit
3b347eaa4e
@ -404,7 +404,7 @@ fn to_fragment_kind(db: &dyn AstDatabase, id: MacroCallId) -> FragmentKind {
|
||||
TRY_EXPR => FragmentKind::Expr,
|
||||
TUPLE_EXPR => FragmentKind::Expr,
|
||||
PAREN_EXPR => FragmentKind::Expr,
|
||||
|
||||
ARRAY_EXPR => FragmentKind::Expr,
|
||||
FOR_EXPR => FragmentKind::Expr,
|
||||
PATH_EXPR => FragmentKind::Expr,
|
||||
CLOSURE_EXPR => FragmentKind::Expr,
|
||||
|
@ -325,6 +325,24 @@ fn test() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn infer_array_macro_call() {
|
||||
check_infer(
|
||||
r#"
|
||||
macro_rules! bar { () => {0u32} }
|
||||
fn test() {
|
||||
let a = [bar!()];
|
||||
}
|
||||
"#,
|
||||
expect![[r#"
|
||||
!0..4 '0u32': u32
|
||||
44..69 '{ ...()]; }': ()
|
||||
54..55 'a': [u32; _]
|
||||
58..66 '[bar!()]': [u32; _]
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn bug_1030() {
|
||||
check_infer(
|
||||
|
Loading…
Reference in New Issue
Block a user