Commit a08b6f6
committed
Detect struct construction with private field in field with default
When trying to construct a struct that has a public field of a private type, suggest using `..` if that field has a default value.
```
error[E0603]: struct `Priv1` is private
--> $DIR/non-exhaustive-ctor.rs:25:39
|
LL | let _ = S { field: (), field1: m::Priv1 {} };
| ------ ^^^^^ private struct
| |
| while setting this field
|
note: the struct `Priv1` is defined here
--> $DIR/non-exhaustive-ctor.rs:14:4
|
LL | struct Priv1 {}
| ^^^^^^^^^^^^
help: the field `field1` you're trying to set has a default value, you can use `..` to use it
|
LL | let _ = S { field: (), .. };
| ~~
```1 parent e5e79f8 commit a08b6f6
File tree
11 files changed
+290
-36
lines changed- compiler
- rustc_metadata/src/rmeta/decoder
- rustc_middle/src/query
- rustc_resolve/src
- late
- tests/ui/structs/default-field-values
- auxiliary
11 files changed
+290
-36
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
413 | 413 | | |
414 | 414 | | |
415 | 415 | | |
| 416 | + | |
416 | 417 | | |
417 | 418 | | |
418 | 419 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1863 | 1863 | | |
1864 | 1864 | | |
1865 | 1865 | | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
1866 | 1873 | | |
1867 | 1874 | | |
1868 | 1875 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
420 | 420 | | |
421 | 421 | | |
422 | 422 | | |
423 | | - | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
424 | 429 | | |
425 | 430 | | |
426 | | - | |
427 | | - | |
428 | | - | |
| 431 | + | |
429 | 432 | | |
430 | | - | |
| 433 | + | |
| 434 | + | |
431 | 435 | | |
432 | 436 | | |
433 | 437 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1946 | 1946 | | |
1947 | 1947 | | |
1948 | 1948 | | |
1949 | | - | |
1950 | | - | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
1951 | 1958 | | |
1952 | 1959 | | |
1953 | 1960 | | |
| |||
1963 | 1970 | | |
1964 | 1971 | | |
1965 | 1972 | | |
| 1973 | + | |
| 1974 | + | |
| 1975 | + | |
| 1976 | + | |
| 1977 | + | |
| 1978 | + | |
| 1979 | + | |
| 1980 | + | |
| 1981 | + | |
| 1982 | + | |
| 1983 | + | |
| 1984 | + | |
| 1985 | + | |
| 1986 | + | |
| 1987 | + | |
| 1988 | + | |
| 1989 | + | |
| 1990 | + | |
| 1991 | + | |
| 1992 | + | |
| 1993 | + | |
| 1994 | + | |
| 1995 | + | |
| 1996 | + | |
| 1997 | + | |
| 1998 | + | |
| 1999 | + | |
| 2000 | + | |
| 2001 | + | |
| 2002 | + | |
| 2003 | + | |
| 2004 | + | |
| 2005 | + | |
| 2006 | + | |
| 2007 | + | |
| 2008 | + | |
| 2009 | + | |
| 2010 | + | |
| 2011 | + | |
| 2012 | + | |
| 2013 | + | |
| 2014 | + | |
| 2015 | + | |
| 2016 | + | |
| 2017 | + | |
| 2018 | + | |
| 2019 | + | |
| 2020 | + | |
| 2021 | + | |
1966 | 2022 | | |
1967 | 2023 | | |
1968 | 2024 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1010 | 1010 | | |
1011 | 1011 | | |
1012 | 1012 | | |
| 1013 | + | |
1013 | 1014 | | |
1014 | 1015 | | |
1015 | 1016 | | |
| |||
1416 | 1417 | | |
1417 | 1418 | | |
1418 | 1419 | | |
1419 | | - | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
| 1425 | + | |
| 1426 | + | |
| 1427 | + | |
| 1428 | + | |
| 1429 | + | |
1420 | 1430 | | |
1421 | 1431 | | |
1422 | 1432 | | |
| |||
1433 | 1443 | | |
1434 | 1444 | | |
1435 | 1445 | | |
| 1446 | + | |
1436 | 1447 | | |
1437 | 1448 | | |
1438 | 1449 | | |
| |||
1445 | 1456 | | |
1446 | 1457 | | |
1447 | 1458 | | |
| 1459 | + | |
1448 | 1460 | | |
1449 | 1461 | | |
1450 | 1462 | | |
| |||
1620 | 1632 | | |
1621 | 1633 | | |
1622 | 1634 | | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
1623 | 1640 | | |
1624 | 1641 | | |
1625 | 1642 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
425 | 425 | | |
426 | 426 | | |
427 | 427 | | |
428 | | - | |
| 428 | + | |
429 | 429 | | |
430 | 430 | | |
431 | 431 | | |
| |||
448 | 448 | | |
449 | 449 | | |
450 | 450 | | |
451 | | - | |
| 451 | + | |
452 | 452 | | |
453 | 453 | | |
454 | 454 | | |
| |||
465 | 465 | | |
466 | 466 | | |
467 | 467 | | |
468 | | - | |
| 468 | + | |
469 | 469 | | |
470 | 470 | | |
471 | 471 | | |
| |||
482 | 482 | | |
483 | 483 | | |
484 | 484 | | |
485 | | - | |
| 485 | + | |
486 | 486 | | |
487 | 487 | | |
488 | 488 | | |
| |||
577 | 577 | | |
578 | 578 | | |
579 | 579 | | |
580 | | - | |
| 580 | + | |
581 | 581 | | |
582 | 582 | | |
583 | 583 | | |
| |||
617 | 617 | | |
618 | 618 | | |
619 | 619 | | |
620 | | - | |
621 | | - | |
| 620 | + | |
| 621 | + | |
622 | 622 | | |
623 | 623 | | |
624 | 624 | | |
| |||
1483 | 1483 | | |
1484 | 1484 | | |
1485 | 1485 | | |
| 1486 | + | |
1486 | 1487 | | |
1487 | 1488 | | |
1488 | 1489 | | |
1489 | 1490 | | |
1490 | 1491 | | |
| 1492 | + | |
1491 | 1493 | | |
1492 | 1494 | | |
1493 | 1495 | | |
| |||
1967 | 1969 | | |
1968 | 1970 | | |
1969 | 1971 | | |
1970 | | - | |
| 1972 | + | |
1971 | 1973 | | |
1972 | 1974 | | |
1973 | 1975 | | |
| |||
2020 | 2022 | | |
2021 | 2023 | | |
2022 | 2024 | | |
2023 | | - | |
| 2025 | + | |
2024 | 2026 | | |
2025 | 2027 | | |
2026 | 2028 | | |
| |||
3867 | 3869 | | |
3868 | 3870 | | |
3869 | 3871 | | |
3870 | | - | |
| 3872 | + | |
3871 | 3873 | | |
3872 | 3874 | | |
3873 | 3875 | | |
| |||
4111 | 4113 | | |
4112 | 4114 | | |
4113 | 4115 | | |
4114 | | - | |
| 4116 | + | |
4115 | 4117 | | |
4116 | 4118 | | |
4117 | 4119 | | |
| |||
4128 | 4130 | | |
4129 | 4131 | | |
4130 | 4132 | | |
4131 | | - | |
| 4133 | + | |
4132 | 4134 | | |
4133 | 4135 | | |
4134 | 4136 | | |
| |||
4358 | 4360 | | |
4359 | 4361 | | |
4360 | 4362 | | |
4361 | | - | |
| 4363 | + | |
4362 | 4364 | | |
4363 | 4365 | | |
4364 | 4366 | | |
| |||
4432 | 4434 | | |
4433 | 4435 | | |
4434 | 4436 | | |
4435 | | - | |
| 4437 | + | |
4436 | 4438 | | |
4437 | 4439 | | |
4438 | 4440 | | |
| |||
4475 | 4477 | | |
4476 | 4478 | | |
4477 | 4479 | | |
4478 | | - | |
| 4480 | + | |
4479 | 4481 | | |
4480 | 4482 | | |
4481 | 4483 | | |
| |||
4538 | 4540 | | |
4539 | 4541 | | |
4540 | 4542 | | |
4541 | | - | |
| 4543 | + | |
4542 | 4544 | | |
4543 | 4545 | | |
4544 | 4546 | | |
| |||
4761 | 4763 | | |
4762 | 4764 | | |
4763 | 4765 | | |
4764 | | - | |
| 4766 | + | |
4765 | 4767 | | |
4766 | 4768 | | |
4767 | 4769 | | |
| |||
0 commit comments