1
Fork 0

Add a note to the ArbitraryExpressionInPattern error

This commit is contained in:
est31 2024-04-28 15:14:32 +02:00
parent 4d570eea02
commit 4284bca720
9 changed files with 39 additions and 1 deletions

View file

@ -368,6 +368,8 @@ pub struct NeverPatternWithGuard {
pub struct ArbitraryExpressionInPattern {
#[primary_span]
pub span: Span,
#[note(ast_lowering_pattern_from_macro_note)]
pub pattern_from_macro_note: bool,
}
#[derive(Diagnostic)]

View file

@ -339,7 +339,11 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
ExprKind::Path(..) if allow_paths => {}
ExprKind::Unary(UnOp::Neg, inner) if matches!(inner.kind, ExprKind::Lit(_)) => {}
_ => {
let guar = self.dcx().emit_err(ArbitraryExpressionInPattern { span: expr.span });
let pattern_from_macro = expr.is_approximately_pattern();
let guar = self.dcx().emit_err(ArbitraryExpressionInPattern {
span: expr.span,
pattern_from_macro_note: pattern_from_macro,
});
return self.arena.alloc(self.expr_err(expr.span, guar));
}
}