rust/tests/ui/privacy
bors 003a902792 Auto merge of #125958 - BoxyUwU:remove_const_ty, r=lcnr
Remove the `ty` field from type system `Const`s

Fixes #125556
Fixes #122908

Part of the work on `adt_const_params`/`generic_const_param_types`/`min_generic_const_exprs`/generally making the compiler nicer. cc rust-lang/project-const-generics#44

Please review commit-by-commit otherwise I wasted a lot of time not just squashing this into a giant mess (and also it'll be SO much nicer because theres a lot of fluff changes mixed in with other more careful changes if looking via File Changes

---

Why do this?
- The `ty` field keeps causing ICEs and weird behaviour due to it either being treated as "part of the const" or it being forgotten about leading to ICEs.
- As we move forward with `adt_const_params` and a potential `min_generic_const_exprs` it's going to become more complex to actually lower the correct `Ty<'tcx>`
- It muddles the idea behind how we check `Const` arguments have the correct type. By having the `ty` field it may seem like we ought to be relating it when we relate two types, or that its generally important information about the `Const`.
- Brings the compiler more in line with `a-mir-formality` as that also tracks the type of type system `Const`s via `ConstArgHasType` bounds in the env instead of on the `Const` itself.
- A lot of stuff is a lot nicer when you dont have to pass around the type of a const lol. Everywhere we construct `Const` is now significantly nicer 😅

See #125671's description for some more information about the `ty` field

---

General summary of changes in this PR:

- Add `Ty` to `ConstKind::Value` as otherwise there is no way to implement `ConstArgHasType` to ensure that const arguments are correctly typed for the parameter when we stop creating anon consts for all const args. It's also just incredibly difficult/annoying to thread the correct `Ty` around to a bunch of ctfe functions otherwise.
-  Fully implement `ConstArgHasType` in both the old and new solver. Since it now has no reliance on the `ty` field it serves its originally intended purpose of being able to act as a double check that trait vs impls have correctly typed const parameters. It also will now be able to be responsible for checking types of const arguments to parameters under `min_generic_const_exprs`.
- Add `Ty` to `mir::Const::Ty`. I dont have a great understanding of why mir constants are setup like this to be honest. Regardless they need to be able to determine the type of the const and the easiest way to make this happen was to simply store the `Ty` along side the `ty::Const`. Maybe we can do better here in the future but I'd have to spend way more time looking at everywhere we use `mir::Const`.
- rustdoc has its own `Const` which also has a `ty` field. It was relatively easy to remove this.

---

r? `@lcnr` `@compiler-errors`
2024-06-06 03:41:23 +00:00
..
auxiliary [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
pub-priv-dep Add some tests for public-private dependencies. 2024-05-22 13:47:15 -07:00
restricted [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
sealed-traits [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
associated-item-privacy-inherent.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
associated-item-privacy-inherent.stderr
associated-item-privacy-trait.rs Allow newly added non_local_definitions lint in tests 2024-02-17 13:59:45 +01:00
associated-item-privacy-trait.stderr Stop using hir_ty_to_ty in rustc_privacy 2024-02-07 14:59:26 +00:00
associated-item-privacy-type-binding.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
associated-item-privacy-type-binding.stderr Stop using hir_ty_to_ty in rustc_privacy 2024-02-07 14:59:26 +00:00
crate-private-reexport.rs
crate-private-reexport.stderr
ctor.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
decl-macro-infinite-global-import-cycle-ice-64784.rs add issue numbers via // issue: rust-lang/rust#ISSUE_NUM directive 2024-03-24 09:34:11 +01:00
decl-macro.rs
decl-macro.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
effective_visibilities.rs
effective_visibilities.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
effective_visibilities_full_priv.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
effective_visibilities_full_priv.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
effective_visibilities_glob.rs
effective_visibilities_glob.stderr
effective_visibilities_invariants.rs
effective_visibilities_invariants.stderr When displaying multispans, ignore empty lines adjacent to ... 2024-03-18 16:25:36 +00:00
export-tag-variant.rs
export-tag-variant.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
generic_struct_field_projection.rs Only inspect user-written predicates for privacy concerns 2024-04-04 14:43:44 +00:00
impl-privacy-xc-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
import-list-stem-visibility-issue-119126.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-11593.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-11593.stderr Move some tests 2024-02-09 15:43:08 -03:00
issue-13641.rs
issue-13641.stderr
issue-17718-const-privacy.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-17718-const-privacy.stderr
issue-29161.rs Update ui tests involving invalid visibility qualifiers 2023-04-03 22:28:55 -05:00
issue-29161.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
issue-30079.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
issue-30079.stderr Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
issue-46209-private-enum-variant-reexport.rs Make early lints translatable 2024-05-21 20:16:39 +00:00
issue-46209-private-enum-variant-reexport.stderr Make early lints translatable 2024-05-21 20:16:39 +00:00
issue-57264-1.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-57264-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-75062-fieldless-tuple-struct.rs
issue-75062-fieldless-tuple-struct.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-75906.rs
issue-75906.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-75907.rs
issue-75907.stderr
issue-75907_b.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-75907_b.stderr
issue-79593.rs
issue-79593.stderr Tweak message on ADT with private fields building 2023-11-29 18:11:57 +00:00
issue-92755.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-111220-2-tuple-struct-fields-projection.rs fix for Self not respecting tuple Ctor privacy 2023-05-26 06:23:03 +00:00
issue-111220-2-tuple-struct-fields-projection.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-111220-tuple-struct-fields.rs fix for Self not respecting tuple Ctor privacy 2023-05-26 06:23:03 +00:00
issue-111220-tuple-struct-fields.stderr fix for Self not respecting tuple Ctor privacy 2023-05-26 06:23:03 +00:00
issue-113860-1.rs privacy: no nominal visibility for assoc fns 2023-07-28 14:28:02 +01:00
issue-113860-1.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
issue-113860-2.rs privacy: no nominal visibility for assoc fns 2023-07-28 14:28:02 +01:00
issue-113860-2.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
issue-113860.rs privacy: no nominal visibility for assoc fns 2023-07-28 14:28:02 +01:00
issue-113860.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
issue-117997.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-119463.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-119463.stderr fallback visibility for unexpected trait item 2024-01-04 02:02:57 +08:00
legacy-ctor-visibility.rs
legacy-ctor-visibility.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
macro-private-reexport.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
macro-private-reexport.stderr
priv-impl-prim-ty.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
priv-in-bad-locations.rs Update ui tests involving invalid visibility qualifiers 2023-04-03 22:28:55 -05:00
priv-in-bad-locations.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
privacy-in-paths.rs
privacy-in-paths.stderr Tweak privacy errors to account for reachable items 2023-06-22 16:50:31 +00:00
privacy-ns.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy-ns1.rs
privacy-ns1.stderr Special-case item attributes in the suggestion output 2023-04-12 22:50:10 +00:00
privacy-ns2.rs
privacy-ns2.stderr Special-case item attributes in the suggestion output 2023-04-12 22:50:10 +00:00
privacy-reexport.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy-sanity.rs Update ui tests involving invalid visibility qualifiers 2023-04-03 22:28:55 -05:00
privacy-sanity.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
privacy-ufcs.rs
privacy-ufcs.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
privacy1-rpass.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy1.rs
privacy1.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
privacy2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy2.stderr Structured use suggestion on privacy error 2023-12-04 22:26:08 +00:00
privacy3.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy3.stderr typeck in parallel 2023-07-11 17:52:43 +08:00
privacy4.rs
privacy4.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
privacy5.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy5.stderr
private-bounds-locally-allowed.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-class-field.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-field-ty-err.rs
private-field-ty-err.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-impl-method.rs
private-impl-method.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-in-public-assoc-ty.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
private-in-public-assoc-ty.stderr Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
private-in-public-expr-pat.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-in-public-ill-formed.rs
private-in-public-ill-formed.stderr
private-in-public-non-principal-2.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
private-in-public-non-principal-2.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-in-public-non-principal.rs Allow newly added non_local_definitions lint in tests 2024-02-17 13:59:45 +01:00
private-in-public-non-principal.stderr Allow newly added non_local_definitions lint in tests 2024-02-17 13:59:45 +01:00
private-in-public-type-alias-impl-trait.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-in-public-warn.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
private-in-public-warn.stderr Extend impl's def_span to include where clauses 2023-10-09 11:47:02 +00:00
private-in-public.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-in-public.stderr privacy: visit trait def id of projections 2023-12-08 14:26:03 +00:00
private-inferred-type-1.rs Private-in-public lints implementation 2023-06-12 01:02:19 +03:00
private-inferred-type-1.stderr Private-in-public lints implementation 2023-06-12 01:02:19 +03:00
private-inferred-type-2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-inferred-type-2.stderr Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
private-inferred-type-3.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-inferred-type-3.stderr
private-inferred-type.rs Replace old private-in-public diagnostic with type privacy lints 2023-08-02 13:40:28 +03:00
private-inferred-type.stderr
private-item-simple.rs
private-item-simple.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-method-cross-crate.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-method-cross-crate.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-method-inherited.rs
private-method-inherited.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-method-rpass.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-method.rs
private-method.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-struct-field-cross-crate.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-struct-field-cross-crate.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-struct-field-ctor.rs
private-struct-field-ctor.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-struct-field-pattern.rs
private-struct-field-pattern.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-struct-field.rs
private-struct-field.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
private-type-in-interface.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
private-type-in-interface.stderr Stop using hir_ty_to_ty in rustc_privacy 2024-02-07 14:59:26 +00:00
private-variant-reexport.rs use visibility to check unused imports and delete some stmts 2023-10-22 21:27:46 +08:00
private-variant-reexport.stderr vis note for no pub reexports glob import 2023-12-01 12:10:07 +08:00
projections.rs Add some tests for associated type normalization edge cases 2024-02-08 12:28:35 +00:00
projections.stderr Add some tests for associated type normalization edge cases 2024-02-08 12:28:35 +00:00
projections2.rs Add some tests for associated type normalization edge cases 2024-02-08 12:28:35 +00:00
projections2.stderr Add some tests for associated type normalization edge cases 2024-02-08 12:28:35 +00:00
pub-extern-privacy.rs Update test directives for wasm32-wasip1 2024-03-11 09:36:35 -07:00
pub-use-xcrate.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
pub_use_mods_xcrate_exe.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
reachable-unnameable-items.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
struct-field-type.rs Stop using hir_ty_to_ty in rustc_privacy 2024-02-07 14:59:26 +00:00
struct-field-type.stderr Stop using hir_ty_to_ty in rustc_privacy 2024-02-07 14:59:26 +00:00
suggest-box-new.rs Suggest builder functions on struct literal with private fields 2023-11-19 17:50:47 +00:00
suggest-box-new.stderr Tweak message on ADT with private fields building 2023-11-29 18:11:57 +00:00
suggest-making-field-public.fixed Allow unused fields in some tests 2024-03-12 10:59:41 +01:00
suggest-making-field-public.rs Allow unused fields in some tests 2024-03-12 10:59:41 +01:00
suggest-making-field-public.stderr
ufc-method-call.different_name.stderr Add test description 2024-06-04 15:34:04 +00:00
ufc-method-call.rs Add test description 2024-06-04 15:34:04 +00:00
ufc-method-call.same_name.stderr Add test description 2024-06-04 15:34:04 +00:00
union-field-privacy-1.rs
union-field-privacy-1.stderr
union-field-privacy-2.rs
union-field-privacy-2.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
unnameable_types.rs privacy: Stabilize lint unnameable_types 2024-03-13 18:37:40 +03:00
unnameable_types.stderr privacy: Stabilize lint unnameable_types 2024-03-13 18:37:40 +03:00
unreachable-issue-121455.rs Allow for a missing adt_def in NamePrivacyVisitor. 2024-02-23 10:57:11 +11:00
unreachable-issue-121455.stderr Allow for a missing adt_def in NamePrivacyVisitor. 2024-02-23 10:57:11 +11:00
unresolved-trait-impl-item.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
unresolved-trait-impl-item.stderr resolve: Feed visibilities for unresolved trait impl items 2023-12-19 22:33:26 +03:00
useless-pub.rs Update ui tests involving invalid visibility qualifiers 2023-04-03 22:28:55 -05:00
useless-pub.stderr Improve diagnostic by suggesting to remove visibility qualifier 2024-04-12 12:59:40 +09:00
where-priv-type.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
where-priv-type.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
where-pub-type-impls-priv-trait.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
where-pub-type-impls-priv-trait.stderr Extend impl's def_span to include where clauses 2023-10-09 11:47:02 +00:00
xc-private-method.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
xc-private-method.stderr Move some UI tests into subdirectories 2023-04-02 19:42:30 -04:00
xc-private-method2.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
xc-private-method2.stderr Move some UI tests into subdirectories 2023-04-02 19:42:30 -04:00