Remove the obsolete handler for impl A;.

This is has been obsolete for quite a while now (including a release),
so removing the special handling seems fine. (The error message is quite
good still anyway.)

Fixes .
This commit is contained in:
Huon Wilson 2014-02-01 01:46:30 +11:00 committed by Alex Crichton
parent 6c52e72214
commit a9f73b5e3d
3 changed files with 19 additions and 19 deletions
src
libsyntax/parse
test/compile-fail

@ -36,7 +36,6 @@ pub enum ObsoleteSyntax {
ObsoleteUnsafeExternFn,
ObsoleteTraitFuncVisibility,
ObsoleteConstPointer,
ObsoleteEmptyImpl,
ObsoleteLoopAsContinue,
ObsoleteEnumWildcard,
ObsoleteStructWildcard,
@ -110,10 +109,6 @@ impl ParserObsoleteMethods for Parser {
"instead of `&const Foo` or `@const Foo`, write `&Foo` or \
`@Foo`"
),
ObsoleteEmptyImpl => (
"empty implementation",
"instead of `impl A;`, write `impl A {}`"
),
ObsoleteLoopAsContinue => (
"`loop` instead of `continue`",
"`loop` is now only used for loops and `continue` is used for \

@ -3926,21 +3926,15 @@ impl Parser {
};
let mut meths = ~[];
let inner_attrs = if self.eat(&token::SEMI) {
self.obsolete(self.last_span, ObsoleteEmptyImpl);
None
} else {
self.expect(&token::LBRACE);
let (inner_attrs, next) = self.parse_inner_attrs_and_next();
let mut method_attrs = Some(next);
while !self.eat(&token::RBRACE) {
meths.push(self.parse_method(method_attrs));
method_attrs = None;
}
Some(inner_attrs)
};
self.expect(&token::LBRACE);
let (inner_attrs, next) = self.parse_inner_attrs_and_next();
let mut method_attrs = Some(next);
while !self.eat(&token::RBRACE) {
meths.push(self.parse_method(method_attrs));
method_attrs = None;
}
(ident, ItemImpl(generics, opt_trait, ty, meths), inner_attrs)
(ident, ItemImpl(generics, opt_trait, ty, meths), Some(inner_attrs))
}
// parse a::B<~str,int>

@ -0,0 +1,11 @@
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
impl Foo; //~ ERROR expected `{` but found `;`