Disallow A { .. }
if A
has no fields
``` error: `A` has no fields, `..` needs at least one default field in the struct definition --> $DIR/empty-struct.rs:16:17 | LL | let _ = A { .. }; | - ^^ | | | this type has no fields ```
This commit is contained in:
parent
bcd0683e5d
commit
27f079ae24
3 changed files with 72 additions and 8 deletions
21
tests/ui/structs/default-field-values/empty-struct.rs
Normal file
21
tests/ui/structs/default-field-values/empty-struct.rs
Normal file
|
@ -0,0 +1,21 @@
|
|||
#![feature(default_field_values)]
|
||||
|
||||
// If an API wants users to always use `..` even if they specify all the fields, they should use a
|
||||
// sentinel field. As of now, that field can't be made private so it is only constructable with this
|
||||
// syntax, but this might change in the future.
|
||||
|
||||
struct A {}
|
||||
struct B();
|
||||
struct C;
|
||||
struct D {
|
||||
x: i32,
|
||||
}
|
||||
struct E(i32);
|
||||
|
||||
fn main() {
|
||||
let _ = A { .. }; //~ ERROR has no fields
|
||||
let _ = B { .. }; //~ ERROR has no fields
|
||||
let _ = C { .. }; //~ ERROR has no fields
|
||||
let _ = D { x: 0, .. };
|
||||
let _ = E { 0: 0, .. };
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue