Auto merge of #41542 - petrochenkov:objpars2, r=nikomatsakis
syntax: Parse trait object types starting with a lifetime bound Fixes https://github.com/rust-lang/rust/issues/39085 This was originally implemented in https://github.com/rust-lang/rust/pull/40043, then reverted, then there was some [agreement](https://github.com/rust-lang/rust/issues/39318#issuecomment-289108720) that it should be supported. (This is hopefully the last PR related to bound parsing.)
This commit is contained in:
commit
810ed98d08
5 changed files with 78 additions and 2 deletions
|
@ -1453,9 +1453,9 @@ impl<'a> Parser<'a> {
|
|||
} else if self.eat_keyword(keywords::Impl) {
|
||||
// FIXME: figure out priority of `+` in `impl Trait1 + Trait2` (#34511).
|
||||
TyKind::ImplTrait(self.parse_ty_param_bounds()?)
|
||||
} else if self.check(&token::Question) {
|
||||
} else if self.check(&token::Question) ||
|
||||
self.check_lifetime() && self.look_ahead(1, |t| t == &token::BinOp(token::Plus)){
|
||||
// Bound list (trait object type)
|
||||
// Bound lists starting with `'lt` are not currently supported (#40043)
|
||||
TyKind::TraitObject(self.parse_ty_param_bounds_common(allow_plus)?)
|
||||
} else {
|
||||
let msg = format!("expected type, found {}", self.this_token_descr());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue