Commit 877fc0d
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 2801f9a commit 877fc0d
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 | |
|---|---|---|---|
| |||
420 | 420 | | |
421 | 421 | | |
422 | 422 | | |
| 423 | + | |
423 | 424 | | |
424 | 425 | | |
425 | 426 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1855 | 1855 | | |
1856 | 1856 | | |
1857 | 1857 | | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
1858 | 1865 | | |
1859 | 1866 | | |
1860 | 1867 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
396 | 396 | | |
397 | 397 | | |
398 | 398 | | |
399 | | - | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
400 | 405 | | |
401 | 406 | | |
402 | | - | |
403 | | - | |
404 | | - | |
| 407 | + | |
405 | 408 | | |
406 | | - | |
| 409 | + | |
| 410 | + | |
407 | 411 | | |
408 | 412 | | |
409 | 413 | | |
| |||
| 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 | |
|---|---|---|---|
| |||
891 | 891 | | |
892 | 892 | | |
893 | 893 | | |
| 894 | + | |
894 | 895 | | |
895 | 896 | | |
896 | 897 | | |
| |||
1407 | 1408 | | |
1408 | 1409 | | |
1409 | 1410 | | |
1410 | | - | |
| 1411 | + | |
| 1412 | + | |
| 1413 | + | |
| 1414 | + | |
| 1415 | + | |
| 1416 | + | |
| 1417 | + | |
| 1418 | + | |
| 1419 | + | |
| 1420 | + | |
1411 | 1421 | | |
1412 | 1422 | | |
1413 | 1423 | | |
| |||
1424 | 1434 | | |
1425 | 1435 | | |
1426 | 1436 | | |
| 1437 | + | |
1427 | 1438 | | |
1428 | 1439 | | |
1429 | 1440 | | |
| |||
1436 | 1447 | | |
1437 | 1448 | | |
1438 | 1449 | | |
| 1450 | + | |
1439 | 1451 | | |
1440 | 1452 | | |
1441 | 1453 | | |
| |||
1610 | 1622 | | |
1611 | 1623 | | |
1612 | 1624 | | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
1613 | 1630 | | |
1614 | 1631 | | |
1615 | 1632 | | |
| |||
| 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 | | |
| |||
1515 | 1515 | | |
1516 | 1516 | | |
1517 | 1517 | | |
| 1518 | + | |
1518 | 1519 | | |
1519 | 1520 | | |
1520 | 1521 | | |
1521 | 1522 | | |
1522 | 1523 | | |
| 1524 | + | |
1523 | 1525 | | |
1524 | 1526 | | |
1525 | 1527 | | |
| |||
1999 | 2001 | | |
2000 | 2002 | | |
2001 | 2003 | | |
2002 | | - | |
| 2004 | + | |
2003 | 2005 | | |
2004 | 2006 | | |
2005 | 2007 | | |
| |||
2052 | 2054 | | |
2053 | 2055 | | |
2054 | 2056 | | |
2055 | | - | |
| 2057 | + | |
2056 | 2058 | | |
2057 | 2059 | | |
2058 | 2060 | | |
| |||
3880 | 3882 | | |
3881 | 3883 | | |
3882 | 3884 | | |
3883 | | - | |
| 3885 | + | |
3884 | 3886 | | |
3885 | 3887 | | |
3886 | 3888 | | |
| |||
4124 | 4126 | | |
4125 | 4127 | | |
4126 | 4128 | | |
4127 | | - | |
| 4129 | + | |
4128 | 4130 | | |
4129 | 4131 | | |
4130 | 4132 | | |
| |||
4141 | 4143 | | |
4142 | 4144 | | |
4143 | 4145 | | |
4144 | | - | |
| 4146 | + | |
4145 | 4147 | | |
4146 | 4148 | | |
4147 | 4149 | | |
| |||
4371 | 4373 | | |
4372 | 4374 | | |
4373 | 4375 | | |
4374 | | - | |
| 4376 | + | |
4375 | 4377 | | |
4376 | 4378 | | |
4377 | 4379 | | |
| |||
4445 | 4447 | | |
4446 | 4448 | | |
4447 | 4449 | | |
4448 | | - | |
| 4450 | + | |
4449 | 4451 | | |
4450 | 4452 | | |
4451 | 4453 | | |
| |||
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