Add Expr::Underscore
This commit is contained in:
parent
e10799536a
commit
c1c867506b
@ -536,7 +536,7 @@ impl ExprCollector<'_> {
|
||||
|
||||
self.alloc_expr(Expr::MacroStmts { tail }, syntax_ptr)
|
||||
}
|
||||
ast::Expr::UnderscoreExpr(_) => return None,
|
||||
ast::Expr::UnderscoreExpr(_) => self.alloc_expr(Expr::Underscore, syntax_ptr),
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -203,6 +203,7 @@ pub enum Expr {
|
||||
},
|
||||
Array(Array),
|
||||
Literal(Literal),
|
||||
Underscore,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Eq, PartialEq)]
|
||||
@ -345,6 +346,7 @@ impl Expr {
|
||||
},
|
||||
Expr::MacroStmts { tail } => f(*tail),
|
||||
Expr::Literal(_) => {}
|
||||
Expr::Underscore => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -775,6 +775,12 @@ impl<'a> InferenceContext<'a> {
|
||||
},
|
||||
},
|
||||
Expr::MacroStmts { tail } => self.infer_expr_inner(*tail, expected),
|
||||
Expr::Underscore => {
|
||||
// Underscore expressions may only appear in assignee expressions,
|
||||
// which are handled by `infer_assignee_expr()`, so any underscore
|
||||
// expression reaching this branch is an error.
|
||||
self.err_ty()
|
||||
}
|
||||
};
|
||||
// use a new type variable if we got unknown here
|
||||
let ty = self.insert_type_vars_shallow(ty);
|
||||
|
Loading…
x
Reference in New Issue
Block a user