Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stop accepting 'impl ...;', require {} instead #9336

Merged
merged 1 commit into from
Sep 25, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/libstd/rt/io/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@ pub trait Writer {

pub trait Stream: Reader + Writer { }

impl<T: Reader + Writer> Stream for T;
impl<T: Reader + Writer> Stream for T {}

pub enum SeekStyle {
/// Seek from the beginning of the stream
Expand Down
2 changes: 1 addition & 1 deletion src/libstd/rt/uv/file.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ use libc::{c_int};
use option::{None, Some, Option};

pub struct FsRequest(*uvll::uv_fs_t);
impl Request for FsRequest;
impl Request for FsRequest {}

pub struct RequestData {
complete_cb: Option<FsCallback>
Expand Down
5 changes: 5 additions & 0 deletions src/libsyntax/parse/obsolete.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ pub enum ObsoleteSyntax {
ObsoletePrivVisibility,
ObsoleteTraitFuncVisibility,
ObsoleteConstPointer,
ObsoleteEmptyImpl,
}

impl to_bytes::IterBytes for ObsoleteSyntax {
Expand Down Expand Up @@ -256,6 +257,10 @@ 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 {}`"
),
};

self.report(sp, kind, kind_str, desc);
Expand Down
4 changes: 3 additions & 1 deletion src/libsyntax/parse/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3852,7 +3852,9 @@ impl Parser {
}

let mut meths = ~[];
if !self.eat(&token::SEMI) {
if self.eat(&token::SEMI) {
self.obsolete(*self.span, ObsoleteEmptyImpl);
} else {
self.expect(&token::LBRACE);
while !self.eat(&token::RBRACE) {
meths.push(self.parse_method());
Expand Down
16 changes: 5 additions & 11 deletions src/libsyntax/print/pprust.rs
Original file line number Diff line number Diff line change
Expand Up @@ -587,18 +587,12 @@ pub fn print_item(s: @ps, item: &ast::item) {

print_type(s, ty);

if methods.len() == 0 {
word(s.s, ";");
end(s); // end the head-ibox
end(s); // end the outer cbox
} else {
space(s.s);
bopen(s);
for meth in methods.iter() {
print_method(s, *meth);
}
bclose(s, item.span);
space(s.s);
bopen(s);
for meth in methods.iter() {
print_method(s, *meth);
}
bclose(s, item.span);
}
ast::item_trait(ref generics, ref traits, ref methods) => {
head(s, visibility_qualified(item.vis, "trait"));
Expand Down
2 changes: 1 addition & 1 deletion src/test/auxiliary/trait_inheritance_overloading_xc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,6 @@ impl Eq for MyInt {
fn ne(&self, other: &MyInt) -> bool { !self.eq(other) }
}

impl MyNum for MyInt;
impl MyNum for MyInt {}

fn mi(v: int) -> MyInt { MyInt { val: v } }
2 changes: 1 addition & 1 deletion src/test/compile-fail/missing-derivable-attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ impl MyEq for int {
fn eq(&self, other: &int) -> bool { *self == *other }
}

impl MyEq for A; //~ ERROR missing method
impl MyEq for A {} //~ ERROR missing method

fn main() {
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ trait Trait<T1> {
}
}

impl<T> Trait<T> for Struct;
impl<T> Trait<T> for Struct {}

fn main() {

Expand Down
2 changes: 1 addition & 1 deletion src/test/debug-info/self-in-default-method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ trait Trait {
}
}

impl Trait for Struct;
impl Trait for Struct {}

fn main() {
let stack = Struct { x: 100 };
Expand Down
2 changes: 1 addition & 1 deletion src/test/debug-info/self-in-generic-default-method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ trait Trait {
}
}

impl Trait for Struct;
impl Trait for Struct {}

fn main() {
let stack = Struct { x: 987 };
Expand Down
2 changes: 1 addition & 1 deletion src/test/debug-info/trait-generic-static-default-method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ trait Trait {
}
}

impl Trait for Struct;
impl Trait for Struct {}

fn main() {

Expand Down
4 changes: 2 additions & 2 deletions src/test/pretty/empty-impl.pp
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
trait X { }
impl X for uint;
impl X for uint { }

trait Y { }
impl Y for uint;
impl Y for uint { }
4 changes: 2 additions & 2 deletions src/test/pretty/empty-impl.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
trait X { }
impl X for uint;
impl X for uint { }

trait Y { }
impl Y for uint;
impl Y for uint { }
2 changes: 1 addition & 1 deletion src/test/pretty/path-type-bounds.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// pp-exact

trait Tr { }
impl Tr for int;
impl Tr for int { }

fn foo(x: ~Tr: Freeze) -> ~Tr: Freeze { x }

Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/default-method-supertrait-vtable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ impl Y for int {
fn y(self) -> int { self }
}

impl Z for int;
impl Z for int {}

fn main() {
assert_eq!(12.x(), 12);
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/issue-3979-generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ impl Positioned<int> for Point {
}
}

impl Movable<int> for Point;
impl Movable<int> for Point {}

pub fn main() {
let mut p = Point{ x: 1, y: 2};
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/issue-3979-xcrate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ impl Positioned for Point {
}
}

impl Movable for Point;
impl Movable for Point {}

pub fn main() {
let mut p = Point{ x: 1, y: 2};
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/issue-3979.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ impl Positioned for Point {
}
}

impl Movable for Point;
impl Movable for Point {}

pub fn main() {
let mut p = Point{ x: 1, y: 2};
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/supertrait-default-generics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ impl<S: Clone> Positioned<S> for Point<S> {
}
}

impl<S: Clone + Add<S, S>> Movable<S> for Point<S>;
impl<S: Clone + Add<S, S>> Movable<S> for Point<S> {}

pub fn main() {
let mut p = Point{ x: 1, y: 2};
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/trait-inheritance-overloading-simple.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ impl Eq for MyInt {
fn ne(&self, other: &MyInt) -> bool { !self.eq(other) }
}

impl MyNum for MyInt;
impl MyNum for MyInt {}

fn f<T:MyNum>(x: T, y: T) -> bool {
return x == y;
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/trait-inheritance-overloading.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ impl Eq for MyInt {
fn ne(&self, other: &MyInt) -> bool { !self.eq(other) }
}

impl MyNum for MyInt;
impl MyNum for MyInt {}

fn f<T:MyNum>(x: T, y: T) -> (T, T, T) {
return (x + y, x - y, x * y);
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/trait-inheritance-subst.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ impl Add<MyInt, MyInt> for MyInt {
fn add(&self, other: &MyInt) -> MyInt { mi(self.val + other.val) }
}

impl MyNum for MyInt;
impl MyNum for MyInt {}

fn f<T:MyNum>(x: T, y: T) -> T {
return x.add(&y);
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/trait-inheritance-subst2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ impl Add<MyInt, MyInt> for MyInt {
fn add(&self, other: &MyInt) -> MyInt { self.chomp(other) }
}

impl MyNum for MyInt;
impl MyNum for MyInt {}

fn f<T:MyNum>(x: T, y: T) -> T {
return x.add(&y).chomp(&y);
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/trait-inheritance2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ struct A { x: int }
impl Foo for A { fn f(&self) -> int { 10 } }
impl Bar for A { fn g(&self) -> int { 20 } }
impl Baz for A { fn h(&self) -> int { 30 } }
impl Quux for A;
impl Quux for A {}

fn f<T:Quux + Foo + Bar + Baz>(a: &T) {
assert_eq!(a.f(), 10);
Expand Down