Detect attempts to expand a macro to a match arm again
Because a macro invocation can expand to a never pattern, we can't rule out a `arm!(),` arm at parse time. Instead we detect that case at expansion time, if the macro tries to output a pattern followed by `=>`.
This commit is contained in:
parent
80bdcbf50a
commit
0bfebc6105
8 changed files with 27 additions and 29 deletions
|
@ -155,11 +155,7 @@ impl<'a> Parser<'a> {
|
|||
Err(err) => return Err(err),
|
||||
};
|
||||
if rc == RecoverComma::Yes && !first_pat.could_be_never_pattern() {
|
||||
self.maybe_recover_unexpected_comma(
|
||||
first_pat.span,
|
||||
matches!(first_pat.kind, PatKind::MacCall(_)),
|
||||
rt,
|
||||
)?;
|
||||
self.maybe_recover_unexpected_comma(first_pat.span, rt)?;
|
||||
}
|
||||
|
||||
// If the next token is not a `|`,
|
||||
|
@ -201,7 +197,7 @@ impl<'a> Parser<'a> {
|
|||
err
|
||||
})?;
|
||||
if rc == RecoverComma::Yes && !pat.could_be_never_pattern() {
|
||||
self.maybe_recover_unexpected_comma(pat.span, false, rt)?;
|
||||
self.maybe_recover_unexpected_comma(pat.span, rt)?;
|
||||
}
|
||||
pats.push(pat);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue