diff options
| author | bors <bors@rust-lang.org> | 2013-03-28 06:12:47 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-03-28 06:12:47 -0700 |
| commit | 09dc38eda54537c0c10b8a89852c714e3e14f57a (patch) | |
| tree | 77bd2fba611c9a0b7584cb0d2be104c9d4e97913 | |
| parent | b1c0a6628beb612f3d847ab088e74da639f6ca7b (diff) | |
| parent | 09255dbe2d7a94cf6a3d8bf426e428f1a50d3e8c (diff) | |
| download | rust-09dc38eda54537c0c10b8a89852c714e3e14f57a.tar.gz rust-09dc38eda54537c0c10b8a89852c714e3e14f57a.zip | |
auto merge of #5596 : luqmana/rust/unit-struct, r=catamorphism
Fixes #5449.
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/block-must-not-have-result-res.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/obsolete-syntax.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/struct-no-fields.rs | 14 |
4 files changed, 21 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 8d65f02119b..6fe003b2eba 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3207,6 +3207,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() {} |
