Recover from default value for a lifetime in generic parameters.
This commit is contained in:
parent
3de7d7fb22
commit
d9f60052d2
5 changed files with 41 additions and 1 deletions
|
@ -1589,6 +1589,14 @@ pub(crate) struct UnexpectedSelfInGenericParameters {
|
|||
pub span: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(parse_unexpected_default_value_for_lifetime_in_generic_parameters)]
|
||||
pub(crate) struct UnexpectedDefaultValueForLifetimeInGenericParameters {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub span: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(parse_multiple_where_clauses)]
|
||||
pub(crate) struct MultipleWhereClauses {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::errors::{
|
||||
MultipleWhereClauses, UnexpectedSelfInGenericParameters, WhereClauseBeforeTupleStructBody,
|
||||
MultipleWhereClauses, UnexpectedDefaultValueForLifetimeInGenericParameters,
|
||||
UnexpectedSelfInGenericParameters, WhereClauseBeforeTupleStructBody,
|
||||
WhereClauseBeforeTupleStructBodySugg,
|
||||
};
|
||||
|
||||
|
@ -145,6 +146,20 @@ impl<'a> Parser<'a> {
|
|||
} else {
|
||||
(None, Vec::new())
|
||||
};
|
||||
|
||||
if this.check_noexpect(&token::Eq)
|
||||
&& this.look_ahead(1, |t| t.is_lifetime())
|
||||
{
|
||||
let lo = this.token.span;
|
||||
// Parse `= 'lifetime`.
|
||||
this.bump(); // `=`
|
||||
this.bump(); // `'lifetime`
|
||||
let span = lo.to(this.prev_token.span);
|
||||
this.sess.emit_err(
|
||||
UnexpectedDefaultValueForLifetimeInGenericParameters { span },
|
||||
);
|
||||
}
|
||||
|
||||
Some(ast::GenericParam {
|
||||
ident: lifetime.ident,
|
||||
id: lifetime.id,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue