about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-09-19 12:09:52 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-09-24 14:12:02 -0700
commit4b266f1c0df9732bbdea44b0df3d459d4cf2756d (patch)
tree001f53c217538001b4dcc2b5388da2aafe7403b6 /src
parent4dacd736510b2ae28a54489fe88571f1a6de019f (diff)
downloadrust-4b266f1c0df9732bbdea44b0df3d459d4cf2756d.tar.gz
rust-4b266f1c0df9732bbdea44b0df3d459d4cf2756d.zip
Stop accepting 'impl ...;', require {} instead
Progress on #7981
Diffstat (limited to 'src')
-rw-r--r--src/libstd/rt/io/mod.rs2
-rw-r--r--src/libstd/rt/uv/file.rs2
-rw-r--r--src/libsyntax/parse/obsolete.rs5
-rw-r--r--src/libsyntax/parse/parser.rs4
-rw-r--r--src/libsyntax/print/pprust.rs16
-rw-r--r--src/test/auxiliary/trait_inheritance_overloading_xc.rs2
-rw-r--r--src/test/compile-fail/missing-derivable-attr.rs2
-rw-r--r--src/test/debug-info/generic-trait-generic-static-default-method.rs2
-rw-r--r--src/test/debug-info/self-in-default-method.rs2
-rw-r--r--src/test/debug-info/self-in-generic-default-method.rs2
-rw-r--r--src/test/debug-info/trait-generic-static-default-method.rs2
-rw-r--r--src/test/pretty/empty-impl.pp4
-rw-r--r--src/test/pretty/empty-impl.rs4
-rw-r--r--src/test/pretty/path-type-bounds.rs2
-rw-r--r--src/test/run-pass/default-method-supertrait-vtable.rs2
-rw-r--r--src/test/run-pass/issue-3979-generics.rs2
-rw-r--r--src/test/run-pass/issue-3979-xcrate.rs2
-rw-r--r--src/test/run-pass/issue-3979.rs2
-rw-r--r--src/test/run-pass/supertrait-default-generics.rs2
-rw-r--r--src/test/run-pass/trait-inheritance-overloading-simple.rs2
-rw-r--r--src/test/run-pass/trait-inheritance-overloading.rs2
-rw-r--r--src/test/run-pass/trait-inheritance-subst.rs2
-rw-r--r--src/test/run-pass/trait-inheritance-subst2.rs2
-rw-r--r--src/test/run-pass/trait-inheritance2.rs2
24 files changed, 36 insertions, 35 deletions
diff --git a/src/libstd/rt/io/mod.rs b/src/libstd/rt/io/mod.rs
index 6b405b0948a..70fcf442f3f 100644
--- a/src/libstd/rt/io/mod.rs
+++ b/src/libstd/rt/io/mod.rs
@@ -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
diff --git a/src/libstd/rt/uv/file.rs b/src/libstd/rt/uv/file.rs
index ada558036cf..54cb40c9873 100644
--- a/src/libstd/rt/uv/file.rs
+++ b/src/libstd/rt/uv/file.rs
@@ -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>
diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs
index b056b39eb6e..c2c08ce9360 100644
--- a/src/libsyntax/parse/obsolete.rs
+++ b/src/libsyntax/parse/obsolete.rs
@@ -65,6 +65,7 @@ pub enum ObsoleteSyntax {
     ObsoletePrivVisibility,
     ObsoleteTraitFuncVisibility,
     ObsoleteConstPointer,
+    ObsoleteEmptyImpl,
 }
 
 impl to_bytes::IterBytes for ObsoleteSyntax {
@@ -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);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 4aad5c24d0f..5a0ccac2cdb 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -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());
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs
index b5868cbc63d..0e9af985517 100644
--- a/src/libsyntax/print/pprust.rs
+++ b/src/libsyntax/print/pprust.rs
@@ -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"));
diff --git a/src/test/auxiliary/trait_inheritance_overloading_xc.rs b/src/test/auxiliary/trait_inheritance_overloading_xc.rs
index f938c9c56ed..8694871417a 100644
--- a/src/test/auxiliary/trait_inheritance_overloading_xc.rs
+++ b/src/test/auxiliary/trait_inheritance_overloading_xc.rs
@@ -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 } }
diff --git a/src/test/compile-fail/missing-derivable-attr.rs b/src/test/compile-fail/missing-derivable-attr.rs
index eb27d51061f..70c16e0baef 100644
--- a/src/test/compile-fail/missing-derivable-attr.rs
+++ b/src/test/compile-fail/missing-derivable-attr.rs
@@ -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() {
 }
diff --git a/src/test/debug-info/generic-trait-generic-static-default-method.rs b/src/test/debug-info/generic-trait-generic-static-default-method.rs
index 8523a947aac..4355b4b98fe 100644
--- a/src/test/debug-info/generic-trait-generic-static-default-method.rs
+++ b/src/test/debug-info/generic-trait-generic-static-default-method.rs
@@ -40,7 +40,7 @@ trait Trait<T1> {
     }
 }
 
-impl<T> Trait<T> for Struct;
+impl<T> Trait<T> for Struct {}
 
 fn main() {
 
diff --git a/src/test/debug-info/self-in-default-method.rs b/src/test/debug-info/self-in-default-method.rs
index 53b2e9ee21d..fde58f76acc 100644
--- a/src/test/debug-info/self-in-default-method.rs
+++ b/src/test/debug-info/self-in-default-method.rs
@@ -118,7 +118,7 @@ trait Trait {
     }
 }
 
-impl Trait for Struct;
+impl Trait for Struct {}
 
 fn main() {
     let stack = Struct { x: 100 };
diff --git a/src/test/debug-info/self-in-generic-default-method.rs b/src/test/debug-info/self-in-generic-default-method.rs
index 47f58930760..3daf7afd4b1 100644
--- a/src/test/debug-info/self-in-generic-default-method.rs
+++ b/src/test/debug-info/self-in-generic-default-method.rs
@@ -119,7 +119,7 @@ trait Trait {
     }
 }
 
-impl Trait for Struct;
+impl Trait for Struct {}
 
 fn main() {
     let stack = Struct { x: 987 };
diff --git a/src/test/debug-info/trait-generic-static-default-method.rs b/src/test/debug-info/trait-generic-static-default-method.rs
index 1f6e6992e27..05258d53586 100644
--- a/src/test/debug-info/trait-generic-static-default-method.rs
+++ b/src/test/debug-info/trait-generic-static-default-method.rs
@@ -40,7 +40,7 @@ trait Trait {
     }
 }
 
-impl Trait for Struct;
+impl Trait for Struct {}
 
 fn main() {
 
diff --git a/src/test/pretty/empty-impl.pp b/src/test/pretty/empty-impl.pp
index af401bd25ca..685cdcdaead 100644
--- a/src/test/pretty/empty-impl.pp
+++ b/src/test/pretty/empty-impl.pp
@@ -1,5 +1,5 @@
 trait X { }
-impl X for uint;
+impl X for uint { }
 
 trait Y { }
-impl Y for uint;
+impl Y for uint { }
diff --git a/src/test/pretty/empty-impl.rs b/src/test/pretty/empty-impl.rs
index af401bd25ca..685cdcdaead 100644
--- a/src/test/pretty/empty-impl.rs
+++ b/src/test/pretty/empty-impl.rs
@@ -1,5 +1,5 @@
 trait X { }
-impl X for uint;
+impl X for uint { }
 
 trait Y { }
-impl Y for uint;
+impl Y for uint { }
diff --git a/src/test/pretty/path-type-bounds.rs b/src/test/pretty/path-type-bounds.rs
index a62fbdeeb18..4a402132254 100644
--- a/src/test/pretty/path-type-bounds.rs
+++ b/src/test/pretty/path-type-bounds.rs
@@ -1,7 +1,7 @@
 // pp-exact
 
 trait Tr { }
-impl Tr for int;
+impl Tr for int { }
 
 fn foo(x: ~Tr: Freeze) -> ~Tr: Freeze { x }
 
diff --git a/src/test/run-pass/default-method-supertrait-vtable.rs b/src/test/run-pass/default-method-supertrait-vtable.rs
index 90a2b914021..b5790269d90 100644
--- a/src/test/run-pass/default-method-supertrait-vtable.rs
+++ b/src/test/run-pass/default-method-supertrait-vtable.rs
@@ -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);
diff --git a/src/test/run-pass/issue-3979-generics.rs b/src/test/run-pass/issue-3979-generics.rs
index 867301121da..86cdd6135ec 100644
--- a/src/test/run-pass/issue-3979-generics.rs
+++ b/src/test/run-pass/issue-3979-generics.rs
@@ -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};
diff --git a/src/test/run-pass/issue-3979-xcrate.rs b/src/test/run-pass/issue-3979-xcrate.rs
index caf6d202316..63d2562f541 100644
--- a/src/test/run-pass/issue-3979-xcrate.rs
+++ b/src/test/run-pass/issue-3979-xcrate.rs
@@ -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};
diff --git a/src/test/run-pass/issue-3979.rs b/src/test/run-pass/issue-3979.rs
index 2e53fb5d3f9..4f69342830b 100644
--- a/src/test/run-pass/issue-3979.rs
+++ b/src/test/run-pass/issue-3979.rs
@@ -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};
diff --git a/src/test/run-pass/supertrait-default-generics.rs b/src/test/run-pass/supertrait-default-generics.rs
index ae7e18d532b..2cfc22111a7 100644
--- a/src/test/run-pass/supertrait-default-generics.rs
+++ b/src/test/run-pass/supertrait-default-generics.rs
@@ -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};
diff --git a/src/test/run-pass/trait-inheritance-overloading-simple.rs b/src/test/run-pass/trait-inheritance-overloading-simple.rs
index 041452176e0..3a0f2dd9464 100644
--- a/src/test/run-pass/trait-inheritance-overloading-simple.rs
+++ b/src/test/run-pass/trait-inheritance-overloading-simple.rs
@@ -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;
diff --git a/src/test/run-pass/trait-inheritance-overloading.rs b/src/test/run-pass/trait-inheritance-overloading.rs
index d5321ea5298..fb19bfa674f 100644
--- a/src/test/run-pass/trait-inheritance-overloading.rs
+++ b/src/test/run-pass/trait-inheritance-overloading.rs
@@ -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);
diff --git a/src/test/run-pass/trait-inheritance-subst.rs b/src/test/run-pass/trait-inheritance-subst.rs
index 479f293a396..cd57e6a7dd0 100644
--- a/src/test/run-pass/trait-inheritance-subst.rs
+++ b/src/test/run-pass/trait-inheritance-subst.rs
@@ -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);
diff --git a/src/test/run-pass/trait-inheritance-subst2.rs b/src/test/run-pass/trait-inheritance-subst2.rs
index 214505172a5..ebddfafc3b4 100644
--- a/src/test/run-pass/trait-inheritance-subst2.rs
+++ b/src/test/run-pass/trait-inheritance-subst2.rs
@@ -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);
diff --git a/src/test/run-pass/trait-inheritance2.rs b/src/test/run-pass/trait-inheritance2.rs
index 6046da41217..7fa895ddf98 100644
--- a/src/test/run-pass/trait-inheritance2.rs
+++ b/src/test/run-pass/trait-inheritance2.rs
@@ -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);