diff options
| author | Gianni Ciccarelli <gianni.ciccarelli@gmail.com> | 2017-04-24 09:56:54 +0000 |
|---|---|---|
| committer | Gianni Ciccarelli <gianni.ciccarelli@gmail.com> | 2017-04-25 05:28:22 +0000 |
| commit | 715811d0be05dcdc55b44f97d9fd2cd1eb7eee05 (patch) | |
| tree | c893a210beed2ccc862c0154255461010915c50b /src/libsyntax | |
| parent | b0fca5f790e86a4235c64095f4ac55d325253b92 (diff) | |
| download | rust-715811d0be05dcdc55b44f97d9fd2cd1eb7eee05.tar.gz rust-715811d0be05dcdc55b44f97d9fd2cd1eb7eee05.zip | |
support `default impl` for specialization
pr review
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 58f81c8b3d7..2c10fff03db 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4918,6 +4918,14 @@ impl<'a> Parser<'a> { allowed to have generics"); } + match defaultness { + ast::Defaultness::Default => { + self.span_err(impl_span, "`default impl` is not allowed for \ + default trait implementations"); + } + _ => {} + } + self.expect(&token::OpenDelim(token::Brace))?; self.expect(&token::CloseDelim(token::Brace))?; Ok((keywords::Invalid.ident(), @@ -5760,13 +5768,13 @@ impl<'a> Parser<'a> { } if (self.check_keyword(keywords::Unsafe) && self.look_ahead(1, |t| t.is_keyword(keywords::Impl))) || - (self.check_keyword(keywords::Default) && - self.look_ahead(1, |t| t.is_keyword(keywords::Unsafe)) && + (self.check_keyword(keywords::Unsafe) && + self.look_ahead(1, |t| t.is_keyword(keywords::Default)) && self.look_ahead(2, |t| t.is_keyword(keywords::Impl))) { // IMPL ITEM - let defaultness = self.parse_defaultness()?; self.expect_keyword(keywords::Unsafe)?; + let defaultness = self.parse_defaultness()?; self.expect_keyword(keywords::Impl)?; let (ident, item_, |
