[parser] change an instance of span_bug() to struct_span_err() to avoid ICE

This commit is contained in:
David Renshaw 2020-02-09 23:01:23 -05:00
parent 840bdc349d
commit 371060b598
3 changed files with 28 additions and 1 deletions

View File

@ -214,7 +214,10 @@ impl<'a> Parser<'a> {
let path = match bounds.remove(0) { let path = match bounds.remove(0) {
GenericBound::Trait(pt, ..) => pt.trait_ref.path, GenericBound::Trait(pt, ..) => pt.trait_ref.path,
GenericBound::Outlives(..) => { GenericBound::Outlives(..) => {
self.span_bug(ty.span, "unexpected lifetime bound") return Err(self.struct_span_err(
ty.span,
"expected trait bound, not lifetime bound",
));
} }
}; };
self.parse_remaining_bounds(Vec::new(), path, lo, true) self.parse_remaining_bounds(Vec::new(), path, lo, true)

View File

@ -0,0 +1,4 @@
enum e{A((?'a a+?+l))}
//~^ ERROR `?` may only modify trait bounds, not lifetime bounds
//~| ERROR expected one of `)`, `+`, or `,`
//~| ERROR expected trait bound, not lifetime bound

View File

@ -0,0 +1,20 @@
error: `?` may only modify trait bounds, not lifetime bounds
--> $DIR/issue-68890.rs:1:11
|
LL | enum e{A((?'a a+?+l))}
| ^
error: expected one of `)`, `+`, or `,`, found `a`
--> $DIR/issue-68890.rs:1:15
|
LL | enum e{A((?'a a+?+l))}
| ^ expected one of `)`, `+`, or `,`
error: expected trait bound, not lifetime bound
--> $DIR/issue-68890.rs:1:11
|
LL | enum e{A((?'a a+?+l))}
| ^^^
error: aborting due to 3 previous errors