Skip to content

Commit 09dc38e

Browse files
committed
auto merge of #5596 : luqmana/rust/unit-struct, r=catamorphism
Fixes #5449.
2 parents b1c0a66 + 09255db commit 09dc38e

File tree

4 files changed

+21
-1
lines changed

4 files changed

+21
-1
lines changed

Diff for: src/libsyntax/parse/parser.rs

+4
Original file line numberDiff line numberDiff line change
@@ -3207,6 +3207,10 @@ pub impl Parser {
32073207
}
32083208
}
32093209
}
3210+
if fields.len() == 0 {
3211+
self.fatal(fmt!("Unit-like struct should be written as: struct %s;",
3212+
*self.interner.get(class_name)));
3213+
}
32103214
self.bump();
32113215
} else if *self.token == token::LPAREN {
32123216
// It's a tuple-like struct.

Diff for: src/test/compile-fail/block-must-not-have-result-res.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// error-pattern:mismatched types: expected `()` but found `bool`
1212

13-
struct r {}
13+
struct r;
1414

1515
impl Drop for r {
1616
fn finalize(&self) {

Diff for: src/test/compile-fail/obsolete-syntax.rs

+2
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@ struct s {
3131

3232
struct q : r {
3333
//~^ ERROR obsolete syntax: class traits
34+
foo: int
3435
}
3536

3637
struct sss {
38+
bar: int,
3739
priv {
3840
//~^ ERROR obsolete syntax: private section
3941
foo: ()

Diff for: src/test/compile-fail/struct-no-fields.rs

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// error-pattern: Unit-like struct should be written as: struct Foo;
12+
struct Foo {}
13+
14+
fn main() {}

0 commit comments

Comments
 (0)