diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2025-01-18 21:04:52 +0000 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2025-01-18 21:05:09 +0000 |
| commit | 27f079ae24175a60edae59afdc34099d80e898c7 (patch) | |
| tree | cd2bc31c20a6268a729c9fc6a024d867909347fd /tests/ui/structs/default-field-values/empty-struct.rs | |
| parent | bcd0683e5dce1945b5d940714742e7502883bb5c (diff) | |
| download | rust-27f079ae24175a60edae59afdc34099d80e898c7.tar.gz rust-27f079ae24175a60edae59afdc34099d80e898c7.zip | |
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
```
Diffstat (limited to 'tests/ui/structs/default-field-values/empty-struct.rs')
| -rw-r--r-- | tests/ui/structs/default-field-values/empty-struct.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/ui/structs/default-field-values/empty-struct.rs b/tests/ui/structs/default-field-values/empty-struct.rs new file mode 100644 index 00000000000..c9cb861ae27 --- /dev/null +++ b/tests/ui/structs/default-field-values/empty-struct.rs @@ -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, .. }; +} |
