From b48eb5e0be2a6e06d9629f770288c46f7bcb326c Mon Sep 17 00:00:00 2001 From: Gianni Ciccarelli Date: Wed, 26 Apr 2017 03:17:48 +0000 Subject: support `default impl` for specialization `[default] [unsafe] impl` and typecheck --- src/libsyntax/feature_gate.rs | 11 ++++------- src/libsyntax/parse/parser.rs | 15 ++++++--------- 2 files changed, 10 insertions(+), 16 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 152a4e7ee1a..b6a2c983fd4 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -1226,13 +1226,10 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> { _ => {} } - match defaultness { - ast::Defaultness::Default => { - gate_feature_post!(&self, specialization, - i.span, - "specialization is unstable"); - } - _ => {} + if let ast::Defaultness::Default = defaultness { + gate_feature_post!(&self, specialization, + i.span, + "specialization is unstable"); } } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 2c10fff03db..f806e1e3bde 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4918,12 +4918,9 @@ 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"); - } - _ => {} + if let ast::Defaultness::Default = defaultness { + self.span_err(impl_span, "`default impl` is not allowed for \ + default trait implementations"); } self.expect(&token::OpenDelim(token::Brace))?; @@ -5768,13 +5765,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::Unsafe) && - self.look_ahead(1, |t| t.is_keyword(keywords::Default)) && + (self.check_keyword(keywords::Default) && + self.look_ahead(1, |t| t.is_keyword(keywords::Unsafe)) && self.look_ahead(2, |t| t.is_keyword(keywords::Impl))) { // IMPL ITEM - self.expect_keyword(keywords::Unsafe)?; let defaultness = self.parse_defaultness()?; + self.expect_keyword(keywords::Unsafe)?; self.expect_keyword(keywords::Impl)?; let (ident, item_, -- cgit 1.4.1-3-g733a5