1
Fork 0

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:
Esteban Küber 2025-01-18 21:04:52 +00:00
parent bcd0683e5d
commit 27f079ae24
3 changed files with 72 additions and 8 deletions

View 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, .. };
}