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,
|
TRY_EXPR => FragmentKind::Expr,
|
||||||
TUPLE_EXPR => FragmentKind::Expr,
|
TUPLE_EXPR => FragmentKind::Expr,
|
||||||
PAREN_EXPR => FragmentKind::Expr,
|
PAREN_EXPR => FragmentKind::Expr,
|
||||||
|
ARRAY_EXPR => FragmentKind::Expr,
|
||||||
FOR_EXPR => FragmentKind::Expr,
|
FOR_EXPR => FragmentKind::Expr,
|
||||||
PATH_EXPR => FragmentKind::Expr,
|
PATH_EXPR => FragmentKind::Expr,
|
||||||
CLOSURE_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]
|
#[test]
|
||||||
fn bug_1030() {
|
fn bug_1030() {
|
||||||
check_infer(
|
check_infer(
|
||||||
|
Loading…
Reference in New Issue
Block a user