mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-03 07:04:49 +00:00
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
2 changed files with 19 additions and 1 deletions
|
@ -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 infer_paren_macro_call() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[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…
Add table
Add a link
Reference in a new issue