mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-02 04:57:35 +00:00

When a struct definition has default field values, and the use struct ctor has missing field, if all those missing fields have defaults suggest `..`: ``` error[E0063]: missing fields `field1` and `field2` in initializer of `S` --> $DIR/non-exhaustive-ctor.rs:16:13 | LL | let _ = S { field: () }; | ^ missing `field1` and `field2` | help: all remaining fields have defaults, use `..` | LL | let _ = S { field: (), .. }; | ++++ ```
29 lines
886 B
Rust
29 lines
886 B
Rust
//@ revisions: enabled disabled
|
|
//@[enabled] run-rustfix
|
|
#![allow(private_interfaces, dead_code)]
|
|
#![cfg_attr(enabled, feature(default_field_values))]
|
|
use m::S;
|
|
|
|
mod m {
|
|
pub struct S {
|
|
pub field: () = (),
|
|
//[disabled]~^ ERROR default values on fields are experimental
|
|
pub field1: Priv = Priv,
|
|
//[disabled]~^ ERROR default values on fields are experimental
|
|
pub field2: Priv = Priv,
|
|
//[disabled]~^ ERROR default values on fields are experimental
|
|
}
|
|
struct Priv;
|
|
}
|
|
|
|
fn main() {
|
|
let _ = S { .. }; // ok
|
|
//[disabled]~^ ERROR base expression required after `..`
|
|
let _ = S { field: (), .. }; // ok
|
|
//[disabled]~^ ERROR base expression required after `..`
|
|
let _ = S { };
|
|
//~^ ERROR missing fields `field`, `field1` and `field2`
|
|
let _ = S { field: () };
|
|
//~^ ERROR missing fields `field1` and `field2`
|
|
}
|