Commit 21a19c2
committed
Auto merge of rust-lang#135846 - estebank:non-exhaustive-dfv-ctor-2, r=BoxyUwU
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-2.rs:19: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-2.rs:14:4
|
LL | struct Priv1 {}
| ^^^^^^^^^^^^
help: the type `Priv1` of field `field1` is private, but you can construct the default value defined for it in `S` using `..` in the struct initializer expression
|
LL | let _ = S { field: (), .. };
| ~~
```File tree
11 files changed
+321
-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
+321
-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 | + | |
1867 | 1873 | | |
1868 | 1874 | | |
1869 | 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 | |
|---|---|---|---|
| |||
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 | + | |
1963 | 1972 | | |
1964 | 1973 | | |
1965 | 1974 | | |
| |||
2141 | 2150 | | |
2142 | 2151 | | |
2143 | 2152 | | |
| 2153 | + | |
| 2154 | + | |
| 2155 | + | |
| 2156 | + | |
| 2157 | + | |
| 2158 | + | |
| 2159 | + | |
| 2160 | + | |
| 2161 | + | |
| 2162 | + | |
| 2163 | + | |
| 2164 | + | |
| 2165 | + | |
| 2166 | + | |
| 2167 | + | |
| 2168 | + | |
| 2169 | + | |
| 2170 | + | |
| 2171 | + | |
| 2172 | + | |
| 2173 | + | |
| 2174 | + | |
| 2175 | + | |
| 2176 | + | |
| 2177 | + | |
| 2178 | + | |
| 2179 | + | |
| 2180 | + | |
| 2181 | + | |
| 2182 | + | |
| 2183 | + | |
| 2184 | + | |
| 2185 | + | |
| 2186 | + | |
| 2187 | + | |
| 2188 | + | |
| 2189 | + | |
| 2190 | + | |
| 2191 | + | |
| 2192 | + | |
| 2193 | + | |
| 2194 | + | |
| 2195 | + | |
| 2196 | + | |
| 2197 | + | |
| 2198 | + | |
| 2199 | + | |
| 2200 | + | |
| 2201 | + | |
| 2202 | + | |
| 2203 | + | |
| 2204 | + | |
| 2205 | + | |
| 2206 | + | |
| 2207 | + | |
| 2208 | + | |
| 2209 | + | |
| 2210 | + | |
| 2211 | + | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
| 2215 | + | |
| 2216 | + | |
| 2217 | + | |
| 2218 | + | |
| 2219 | + | |
| 2220 | + | |
| 2221 | + | |
| 2222 | + | |
| 2223 | + | |
| 2224 | + | |
| 2225 | + | |
| 2226 | + | |
| 2227 | + | |
| 2228 | + | |
| 2229 | + | |
| 2230 | + | |
| 2231 | + | |
2144 | 2232 | | |
2145 | 2233 | | |
2146 | 2234 | | |
| |||
| 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