rust/tests/ui/privacy
Matthias Krüger 9abf8b105e
Rollup merge of #125622 - oli-obk:define_opaque_types15, r=compiler-errors
Winnow private method candidates instead of assuming any candidate of the right name will apply

partially reverts https://github.com/rust-lang/rust/pull/60721

My original motivation was just to avoid the `delay_span_bug` (by attempting to thread the `ErrorGuaranteed` through to here). But then I realized that the error message is wrong. It refers to the `Foo<A>::foo` instead of `Foo<B>::foo`. This is almost invisible, because both functions are the same, but on different lines, so `-Zui-testing` makes it so the test is the same no matter which of these two functions is referenced.

But there's a much more obvious bug: If `Foo<B>` does not have a `foo` method at all, but `Foo<A>` has a private `foo` method, then we'll refer to that one. This has now been fixed, and we report a normal `method not found` error.

The way this is done is by creating a list of all possible private functions (just like we create a list of the public functions that can actually be called), and then winnowing it by analyzing where bounds and `Self` types to see if any of the found methods can actually apply (again, just like with the list of public functions).

I wonder if there is room for doing the same thing with unstable functions instead of running all of method resolution twice.

r? ``@compiler-errors`` for method resolution stuff
2024-06-05 18:21:11 +02: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_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
effective_visibilities.rs resolve: Restore some effective visibility optimizations 2023-03-31 17:07:59 +04:00
effective_visibilities.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +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_b.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
issue-75907_b.stderr
issue-75907.rs
issue-75907.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
privacy1-rpass.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +00:00
privacy1.rs diagnostics: update test cases to refer to assoc fn with self as method 2023-02-22 08:40:47 -07:00
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 review comments: Tweak output 2023-01-11 21:36:02 +00: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-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-ns.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +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
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 diagnostics: update test cases to refer to assoc fn with self as method 2023-02-22 08:40:47 -07:00
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 Tighter spans for bad inherent impl types 2023-02-13 18:41:18 +00:00
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 diagnostics: update test cases to refer to assoc fn with self as method 2023-02-22 08:40:47 -07:00
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 diagnostics: update test cases to refer to assoc fn with self as method 2023-02-22 08:40:47 -07:00
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
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
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
pub_use_mods_xcrate_exe.rs [AUTO-GENERATED] Migrate ui tests from // to //@ directives 2024-02-16 20:02:50 +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
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 review comments: Tweak output 2023-01-11 21:36:02 +00:00
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 privacy tests (only diagnostic duplication) 2024-06-04 11:27:54 +00:00
where-priv-type.stderr bless privacy tests (only diagnostic duplication) 2024-06-04 11:27:54 +00: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-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
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