diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-06-02 15:23:49 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-02 15:23:49 +0200 |
| commit | 83b74f2aad1191ca93265aece416f8641e49524a (patch) | |
| tree | 084c9ec63c493b43549245d26aeccf7ab1dcfd2b /src/libsyntax/parse | |
| parent | 5599985caa3d89e6f83b37fa779cae045913df89 (diff) | |
| parent | 31918d6eef4d5c6459fc4e16e4ddedf9d8ab698d (diff) | |
| download | rust-83b74f2aad1191ca93265aece416f8641e49524a.tar.gz rust-83b74f2aad1191ca93265aece416f8641e49524a.zip | |
Rollup merge of #61438 - estebank:generics-span, r=varkor
Point at individual type args on arg count mismatch - Point at individual type arguments on arg count mismatch - Make generics always have a valid span, even when there are no args - Explain that `impl Trait` introduces an implicit type argument Fix #55991.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 92c27f883d1..7bc95ad0369 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5050,21 +5050,22 @@ impl<'a> Parser<'a> { /// where typaramseq = ( typaram ) | ( typaram , typaramseq ) fn parse_generics(&mut self) -> PResult<'a, ast::Generics> { let span_lo = self.span; - if self.eat_lt() { + let (params, span) = if self.eat_lt() { let params = self.parse_generic_params()?; self.expect_gt()?; - Ok(ast::Generics { - params, - where_clause: WhereClause { - id: ast::DUMMY_NODE_ID, - predicates: Vec::new(), - span: DUMMY_SP, - }, - span: span_lo.to(self.prev_span), - }) + (params, span_lo.to(self.prev_span)) } else { - Ok(ast::Generics::default()) - } + (vec![], self.prev_span.between(self.span)) + }; + Ok(ast::Generics { + params, + where_clause: WhereClause { + id: ast::DUMMY_NODE_ID, + predicates: Vec::new(), + span: DUMMY_SP, + }, + span, + }) } /// Parses generic args (within a path segment) with recovery for extra leading angle brackets. |
