diff options
| author | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2020-01-20 01:20:45 -0800 |
|---|---|---|
| committer | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2020-01-20 01:28:10 -0800 |
| commit | 0ac4ba0eed776599e2d9f2ef76f6ae94a4471a4e (patch) | |
| tree | e2bcafc66d84cf59670c6726d1714a64598ef306 /src/librustc_parse | |
| parent | 3b1a9d35c8ee396d2c546603347b5dc65d619cdf (diff) | |
| download | rust-0ac4ba0eed776599e2d9f2ef76f6ae94a4471a4e.tar.gz rust-0ac4ba0eed776599e2d9f2ef76f6ae94a4471a4e.zip | |
Parse `?const ?Trait`
Diffstat (limited to 'src/librustc_parse')
| -rw-r--r-- | src/librustc_parse/parser/ty.rs | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/src/librustc_parse/parser/ty.rs b/src/librustc_parse/parser/ty.rs index 9c9180778e5..efd8acc933a 100644 --- a/src/librustc_parse/parser/ty.rs +++ b/src/librustc_parse/parser/ty.rs @@ -27,17 +27,13 @@ struct BoundModifiers { } impl BoundModifiers { - fn to_trait_bound_modifier(&self) -> Result<TraitBoundModifier, &'static str> { - let modifier = match (self.maybe, self.maybe_const) { + fn to_trait_bound_modifier(&self) -> TraitBoundModifier { + match (self.maybe, self.maybe_const) { (None, None) => TraitBoundModifier::None, (Some(_), None) => TraitBoundModifier::Maybe, (None, Some(_)) => TraitBoundModifier::MaybeConst, - (Some(_), Some(_)) => { - return Err("`?const` and `?` are mutually exclusive"); - } - }; - - Ok(modifier) + (Some(_), Some(_)) => TraitBoundModifier::MaybeConstMaybe, + } } } @@ -563,16 +559,7 @@ impl<'a> Parser<'a> { self.expect(&token::CloseDelim(token::Paren))?; } - let modifier = match modifiers.to_trait_bound_modifier() { - Ok(m) => m, - Err(msg) => { - self.struct_span_err(lo.to(self.prev_span), msg).emit(); - - // Continue compilation as if the user had written `?Trait`. - TraitBoundModifier::Maybe - } - }; - + let modifier = modifiers.to_trait_bound_modifier(); let poly_trait = PolyTraitRef::new(lifetime_defs, path, lo.to(self.prev_span)); Ok(GenericBound::Trait(poly_trait, modifier)) } |
