Commit 464a6b1
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 18eeac0 commit 464a6b1
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 | |
|---|---|---|---|
| |||
395 | 395 | | |
396 | 396 | | |
397 | 397 | | |
| 398 | + | |
398 | 399 | | |
399 | 400 | | |
400 | 401 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1864 | 1864 | | |
1865 | 1865 | | |
1866 | 1866 | | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
1867 | 1874 | | |
1868 | 1875 | | |
1869 | 1876 | | |
| |||
| 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 | |
|---|---|---|---|
| |||
1943 | 1943 | | |
1944 | 1944 | | |
1945 | 1945 | | |
1946 | | - | |
1947 | | - | |
| 1946 | + | |
| 1947 | + | |
| 1948 | + | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
1948 | 1955 | | |
1949 | 1956 | | |
1950 | 1957 | | |
| |||
1960 | 1967 | | |
1961 | 1968 | | |
1962 | 1969 | | |
| 1970 | + | |
| 1971 | + | |
| 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 | + | |
1963 | 2019 | | |
1964 | 2020 | | |
1965 | 2021 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1029 | 1029 | | |
1030 | 1030 | | |
1031 | 1031 | | |
| 1032 | + | |
1032 | 1033 | | |
1033 | 1034 | | |
1034 | 1035 | | |
| |||
1435 | 1436 | | |
1436 | 1437 | | |
1437 | 1438 | | |
1438 | | - | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
1439 | 1449 | | |
1440 | 1450 | | |
1441 | 1451 | | |
| |||
1451 | 1461 | | |
1452 | 1462 | | |
1453 | 1463 | | |
| 1464 | + | |
1454 | 1465 | | |
1455 | 1466 | | |
1456 | 1467 | | |
| |||
1463 | 1474 | | |
1464 | 1475 | | |
1465 | 1476 | | |
| 1477 | + | |
1466 | 1478 | | |
1467 | 1479 | | |
1468 | 1480 | | |
| |||
1645 | 1657 | | |
1646 | 1658 | | |
1647 | 1659 | | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
1648 | 1665 | | |
1649 | 1666 | | |
1650 | 1667 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
424 | 424 | | |
425 | 425 | | |
426 | 426 | | |
427 | | - | |
| 427 | + | |
428 | 428 | | |
429 | 429 | | |
430 | 430 | | |
| |||
447 | 447 | | |
448 | 448 | | |
449 | 449 | | |
450 | | - | |
| 450 | + | |
451 | 451 | | |
452 | 452 | | |
453 | 453 | | |
| |||
464 | 464 | | |
465 | 465 | | |
466 | 466 | | |
467 | | - | |
| 467 | + | |
468 | 468 | | |
469 | 469 | | |
470 | 470 | | |
| |||
481 | 481 | | |
482 | 482 | | |
483 | 483 | | |
484 | | - | |
| 484 | + | |
485 | 485 | | |
486 | 486 | | |
487 | 487 | | |
| |||
576 | 576 | | |
577 | 577 | | |
578 | 578 | | |
579 | | - | |
| 579 | + | |
580 | 580 | | |
581 | 581 | | |
582 | 582 | | |
| |||
616 | 616 | | |
617 | 617 | | |
618 | 618 | | |
619 | | - | |
620 | | - | |
| 619 | + | |
| 620 | + | |
621 | 621 | | |
622 | 622 | | |
623 | 623 | | |
| |||
1482 | 1482 | | |
1483 | 1483 | | |
1484 | 1484 | | |
| 1485 | + | |
1485 | 1486 | | |
1486 | 1487 | | |
1487 | 1488 | | |
1488 | 1489 | | |
1489 | 1490 | | |
| 1491 | + | |
1490 | 1492 | | |
1491 | 1493 | | |
1492 | 1494 | | |
| |||
1966 | 1968 | | |
1967 | 1969 | | |
1968 | 1970 | | |
1969 | | - | |
| 1971 | + | |
1970 | 1972 | | |
1971 | 1973 | | |
1972 | 1974 | | |
| |||
2019 | 2021 | | |
2020 | 2022 | | |
2021 | 2023 | | |
2022 | | - | |
| 2024 | + | |
2023 | 2025 | | |
2024 | 2026 | | |
2025 | 2027 | | |
| |||
3866 | 3868 | | |
3867 | 3869 | | |
3868 | 3870 | | |
3869 | | - | |
| 3871 | + | |
3870 | 3872 | | |
3871 | 3873 | | |
3872 | 3874 | | |
| |||
4110 | 4112 | | |
4111 | 4113 | | |
4112 | 4114 | | |
4113 | | - | |
| 4115 | + | |
4114 | 4116 | | |
4115 | 4117 | | |
4116 | 4118 | | |
| |||
4127 | 4129 | | |
4128 | 4130 | | |
4129 | 4131 | | |
4130 | | - | |
| 4132 | + | |
4131 | 4133 | | |
4132 | 4134 | | |
4133 | 4135 | | |
| |||
4365 | 4367 | | |
4366 | 4368 | | |
4367 | 4369 | | |
4368 | | - | |
| 4370 | + | |
4369 | 4371 | | |
4370 | 4372 | | |
4371 | 4373 | | |
| |||
4439 | 4441 | | |
4440 | 4442 | | |
4441 | 4443 | | |
4442 | | - | |
| 4444 | + | |
4443 | 4445 | | |
4444 | 4446 | | |
4445 | 4447 | | |
| |||
4488 | 4490 | | |
4489 | 4491 | | |
4490 | 4492 | | |
4491 | | - | |
| 4493 | + | |
4492 | 4494 | | |
4493 | 4495 | | |
4494 | 4496 | | |
| |||
4551 | 4553 | | |
4552 | 4554 | | |
4553 | 4555 | | |
4554 | | - | |
| 4556 | + | |
4555 | 4557 | | |
4556 | 4558 | | |
4557 | 4559 | | |
| |||
4774 | 4776 | | |
4775 | 4777 | | |
4776 | 4778 | | |
4777 | | - | |
| 4779 | + | |
4778 | 4780 | | |
4779 | 4781 | | |
4780 | 4782 | | |
| |||
0 commit comments