diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-01-10 02:47:34 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-10 02:47:34 +0100 |
| commit | 2307f0c4ea74d96ab64d27a2ef5efc6b75a02df5 (patch) | |
| tree | f0372c1648a4b6544d306e986393f4071bfbbb64 /src/librustc_parse/parser | |
| parent | 3bfa28c3a8e09364207c4f5c437c8e73dac67716 (diff) | |
| parent | 6e04cf062f605fbd70d728dcd364ad3eac0f822c (diff) | |
| download | rust-2307f0c4ea74d96ab64d27a2ef5efc6b75a02df5.tar.gz rust-2307f0c4ea74d96ab64d27a2ef5efc6b75a02df5.zip | |
Rollup merge of #68071 - estebank:ice-67995, r=Centril
Extend support of `_` in type parameters
- Account for `impl Trait<_>`.
- Provide a reasonable `Span` for empty `Generics` in `impl`s.
- Account for `fn foo<_>(_: _) {}` to suggest `fn foo<T>(_: T) {}`.
- Fix #67995. Follow up to #67597.
Diffstat (limited to 'src/librustc_parse/parser')
| -rw-r--r-- | src/librustc_parse/parser/generics.rs | 2 | ||||
| -rw-r--r-- | src/librustc_parse/parser/item.rs | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/librustc_parse/parser/generics.rs b/src/librustc_parse/parser/generics.rs index 1b816e2b90d..075583711f5 100644 --- a/src/librustc_parse/parser/generics.rs +++ b/src/librustc_parse/parser/generics.rs @@ -156,7 +156,7 @@ impl<'a> Parser<'a> { self.expect_gt()?; (params, span_lo.to(self.prev_span)) } else { - (vec![], self.prev_span.between(self.token.span)) + (vec![], self.prev_span.shrink_to_hi()) }; Ok(ast::Generics { params, diff --git a/src/librustc_parse/parser/item.rs b/src/librustc_parse/parser/item.rs index b209e5a7826..c53f132ff3d 100644 --- a/src/librustc_parse/parser/item.rs +++ b/src/librustc_parse/parser/item.rs @@ -556,7 +556,11 @@ impl<'a> Parser<'a> { let mut generics = if self.choose_generics_over_qpath() { self.parse_generics()? } else { - Generics::default() + let mut generics = Generics::default(); + // impl A for B {} + // /\ this is where `generics.span` should point when there are no type params. + generics.span = self.prev_span.shrink_to_hi(); + generics }; let constness = if self.eat_keyword(kw::Const) { |
