Rollup merge of #39179 - petrochenkov:objparen, r=eddyb
Fix regression in parsing of trait object types Fixes https://github.com/rust-lang/rust/issues/39169 Accepting parens in this position is a regression itself, introduced in Rust 1.6 by https://github.com/rust-lang/rust/pull/29870, so I hope to revert this in my next bounds refactoring patch (possibly with a warning, crater run, etc). r? @eddyb
This commit is contained in:
commit
465a0d12b9
2 changed files with 24 additions and 2 deletions
|
@ -1236,10 +1236,17 @@ impl<'a> Parser<'a> {
|
|||
"at least one type parameter bound \
|
||||
must be specified");
|
||||
}
|
||||
if let TyKind::Path(None, ref path) = lhs.node {
|
||||
|
||||
let mut lhs = lhs.unwrap();
|
||||
if let TyKind::Paren(ty) = lhs.node {
|
||||
// We have to accept the first bound in parens for backward compatibility.
|
||||
// Example: `(Bound) + Bound + Bound`
|
||||
lhs = ty.unwrap();
|
||||
}
|
||||
if let TyKind::Path(None, path) = lhs.node {
|
||||
let poly_trait_ref = PolyTraitRef {
|
||||
bound_lifetimes: Vec::new(),
|
||||
trait_ref: TraitRef { path: path.clone(), ref_id: lhs.id },
|
||||
trait_ref: TraitRef { path: path, ref_id: lhs.id },
|
||||
span: lhs.span,
|
||||
};
|
||||
let poly_trait_ref = TraitTyParamBound(poly_trait_ref, TraitBoundModifier::None);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue