Commit 21c50ce
committed
Auto merge of #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 | |
|---|---|---|---|
| |||
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 | + | |
1866 | 1872 | | |
1867 | 1873 | | |
1868 | 1874 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
391 | 391 | | |
392 | 392 | | |
393 | 393 | | |
394 | | - | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
395 | 400 | | |
396 | 401 | | |
397 | | - | |
398 | | - | |
399 | | - | |
| 402 | + | |
400 | 403 | | |
401 | | - | |
| 404 | + | |
| 405 | + | |
402 | 406 | | |
403 | 407 | | |
404 | 408 | | |
| |||
| 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 | + | |
1966 | 1975 | | |
1967 | 1976 | | |
1968 | 1977 | | |
| |||
2144 | 2153 | | |
2145 | 2154 | | |
2146 | 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 | + | |
| 2232 | + | |
| 2233 | + | |
| 2234 | + | |
2147 | 2235 | | |
2148 | 2236 | | |
2149 | 2237 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1005 | 1005 | | |
1006 | 1006 | | |
1007 | 1007 | | |
| 1008 | + | |
1008 | 1009 | | |
1009 | 1010 | | |
1010 | 1011 | | |
| |||
1411 | 1412 | | |
1412 | 1413 | | |
1413 | 1414 | | |
1414 | | - | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
| 1421 | + | |
| 1422 | + | |
| 1423 | + | |
| 1424 | + | |
1415 | 1425 | | |
1416 | 1426 | | |
1417 | 1427 | | |
| |||
1428 | 1438 | | |
1429 | 1439 | | |
1430 | 1440 | | |
| 1441 | + | |
1431 | 1442 | | |
1432 | 1443 | | |
1433 | 1444 | | |
| |||
1440 | 1451 | | |
1441 | 1452 | | |
1442 | 1453 | | |
| 1454 | + | |
1443 | 1455 | | |
1444 | 1456 | | |
1445 | 1457 | | |
| |||
1615 | 1627 | | |
1616 | 1628 | | |
1617 | 1629 | | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
1618 | 1635 | | |
1619 | 1636 | | |
1620 | 1637 | | |
| |||
| 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 | | |
| |||
1511 | 1511 | | |
1512 | 1512 | | |
1513 | 1513 | | |
| 1514 | + | |
1514 | 1515 | | |
1515 | 1516 | | |
1516 | 1517 | | |
1517 | 1518 | | |
1518 | 1519 | | |
| 1520 | + | |
1519 | 1521 | | |
1520 | 1522 | | |
1521 | 1523 | | |
| |||
1995 | 1997 | | |
1996 | 1998 | | |
1997 | 1999 | | |
1998 | | - | |
| 2000 | + | |
1999 | 2001 | | |
2000 | 2002 | | |
2001 | 2003 | | |
| |||
2048 | 2050 | | |
2049 | 2051 | | |
2050 | 2052 | | |
2051 | | - | |
| 2053 | + | |
2052 | 2054 | | |
2053 | 2055 | | |
2054 | 2056 | | |
| |||
3890 | 3892 | | |
3891 | 3893 | | |
3892 | 3894 | | |
3893 | | - | |
| 3895 | + | |
3894 | 3896 | | |
3895 | 3897 | | |
3896 | 3898 | | |
| |||
4134 | 4136 | | |
4135 | 4137 | | |
4136 | 4138 | | |
4137 | | - | |
| 4139 | + | |
4138 | 4140 | | |
4139 | 4141 | | |
4140 | 4142 | | |
| |||
4151 | 4153 | | |
4152 | 4154 | | |
4153 | 4155 | | |
4154 | | - | |
| 4156 | + | |
4155 | 4157 | | |
4156 | 4158 | | |
4157 | 4159 | | |
| |||
4381 | 4383 | | |
4382 | 4384 | | |
4383 | 4385 | | |
4384 | | - | |
| 4386 | + | |
4385 | 4387 | | |
4386 | 4388 | | |
4387 | 4389 | | |
| |||
4455 | 4457 | | |
4456 | 4458 | | |
4457 | 4459 | | |
4458 | | - | |
| 4460 | + | |
4459 | 4461 | | |
4460 | 4462 | | |
4461 | 4463 | | |
| |||
4498 | 4500 | | |
4499 | 4501 | | |
4500 | 4502 | | |
4501 | | - | |
| 4503 | + | |
4502 | 4504 | | |
4503 | 4505 | | |
4504 | 4506 | | |
| |||
4561 | 4563 | | |
4562 | 4564 | | |
4563 | 4565 | | |
4564 | | - | |
| 4566 | + | |
4565 | 4567 | | |
4566 | 4568 | | |
4567 | 4569 | | |
| |||
4784 | 4786 | | |
4785 | 4787 | | |
4786 | 4788 | | |
4787 | | - | |
| 4789 | + | |
4788 | 4790 | | |
4789 | 4791 | | |
4790 | 4792 | | |
| |||
0 commit comments