about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libsyntax/parse/parser.rs4
-rw-r--r--src/test/compile-fail/block-must-not-have-result-res.rs2
-rw-r--r--src/test/compile-fail/obsolete-syntax.rs2
-rw-r--r--src/test/compile-fail/struct-no-fields.rs14
4 files changed, 21 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index c2e7ecacd20..83f53ded76b 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3214,6 +3214,10 @@ pub impl Parser {
                   }
                 }
             }
+            if fields.len() == 0 {
+                self.fatal(fmt!("Unit-like struct should be written as: struct %s;",
+                                *self.interner.get(class_name)));
+            }
             self.bump();
         } else if *self.token == token::LPAREN {
             // It's a tuple-like struct.
diff --git a/src/test/compile-fail/block-must-not-have-result-res.rs b/src/test/compile-fail/block-must-not-have-result-res.rs
index 6095d645f48..8b8bb04c08b 100644
--- a/src/test/compile-fail/block-must-not-have-result-res.rs
+++ b/src/test/compile-fail/block-must-not-have-result-res.rs
@@ -10,7 +10,7 @@
 
 // error-pattern:mismatched types: expected `()` but found `bool`
 
-struct r {}
+struct r;
 
 impl Drop for r {
     fn finalize(&self) {
diff --git a/src/test/compile-fail/obsolete-syntax.rs b/src/test/compile-fail/obsolete-syntax.rs
index cd3be9dc3d9..65ba4ed6e00 100644
--- a/src/test/compile-fail/obsolete-syntax.rs
+++ b/src/test/compile-fail/obsolete-syntax.rs
@@ -31,9 +31,11 @@ struct s {
 
 struct q : r {
     //~^ ERROR obsolete syntax: class traits
+    foo: int
 }
 
 struct sss {
+    bar: int,
     priv {
     //~^ ERROR obsolete syntax: private section
         foo: ()
diff --git a/src/test/compile-fail/struct-no-fields.rs b/src/test/compile-fail/struct-no-fields.rs
new file mode 100644
index 00000000000..08a590f7396
--- /dev/null
+++ b/src/test/compile-fail/struct-no-fields.rs
@@ -0,0 +1,14 @@
+// Copyright 2012 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.
+
+// error-pattern: Unit-like struct should be written as: struct Foo;
+struct Foo {}
+
+fn main() {}