rust/tests/ui/privacy
bors ed43cbcb88 Auto merge of #134299 - RalfJung:remove-start, r=compiler-errors
remove support for the (unstable) #[start] attribute

As explained by `@Noratrieb:`
`#[start]` should be deleted. It's nothing but an accidentally leaked implementation detail that's a not very useful mix between "portable" entrypoint logic and bad abstraction.

I think the way the stable user-facing entrypoint should work (and works today on stable) is pretty simple:
- `std`-using cross-platform programs should use `fn main()`. the compiler, together with `std`, will then ensure that code ends up at `main` (by having a platform-specific entrypoint that gets directed through `lang_start` in `std` to `main` - but that's just an implementation detail)
- `no_std` platform-specific programs should use `#![no_main]` and define their own platform-specific entrypoint symbol with `#[no_mangle]`, like `main`, `_start`, `WinMain` or `my_embedded_platform_wants_to_start_here`. most of them only support a single platform anyways, and need cfg for the different platform's ways of passing arguments or other things *anyways*

`#[start]` is in a super weird position of being neither of those two. It tries to pretend that it's cross-platform, but its signature is  a total lie. Those arguments are just stubbed out to zero on ~~Windows~~ wasm, for example. It also only handles the platform-specific entrypoints for a few platforms that are supported by `std`, like Windows or Unix-likes. `my_embedded_platform_wants_to_start_here` can't use it, and neither could a libc-less Linux program.
So we have an attribute that only works in some cases anyways, that has a signature that's a total lie (and a signature that, as I might want to add, has changed recently, and that I definitely would not be comfortable giving *any* stability guarantees on), and where there's a pretty easy way to get things working without it in the first place.

Note that this feature has **not** been RFCed in the first place.

*This comment was posted [in May](https://github.com/rust-lang/rust/issues/29633#issuecomment-2088596042) and so far nobody spoke up in that issue with a usecase that would require keeping the attribute.*

Closes https://github.com/rust-lang/rust/issues/29633

try-job: x86_64-gnu-nopt
try-job: x86_64-msvc-1
try-job: x86_64-msvc-2
try-job: test-various
2025-01-21 19:46:20 +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 Emit a single privacy error for multiple fields on the same struct expression 2025-01-18 20:33:15 +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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
crate-private-reexport.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
decl-macro.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
effective_visibilities.rs resolve: Restore some effective visibility optimizations 2023-03-31 17:07:59 +04:00
effective_visibilities.stderr Filter empty lines, comments and delimiters from previous to last multiline span rendering 2024-12-12 23:36:27 +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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
effective_visibilities_glob.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
effective_visibilities_invariants.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
effective_visibilities_invariants.stderr Filter empty lines, comments and delimiters from previous to last multiline span rendering 2024-12-12 23:36:27 +00:00
export-tag-variant.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-13641.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-75906.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
issue-75907.rs Suggest making private tuple struct field public 2023-01-11 21:35:42 +00:00
issue-75907.stderr Do not underline suggestions for code that is already there 2024-08-01 18:53:42 +00: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-79593.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Filter empty lines, comments and delimiters from previous to last multiline span rendering 2024-12-12 23:36:27 +00:00
issue-113860-2.rs privacy: no nominal visibility for assoc fns 2023-07-28 14:28:02 +01:00
issue-113860-2.stderr Filter empty lines, comments and delimiters from previous to last multiline span rendering 2024-12-12 23:36:27 +00:00
issue-113860.rs privacy: no nominal visibility for assoc fns 2023-07-28 14:28:02 +01:00
issue-113860.stderr Filter empty lines, comments and delimiters from previous to last multiline span rendering 2024-12-12 23:36:27 +00: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
no-ice-on-inference-failure.rs Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
no-ice-on-inference-failure.stderr Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
priv-impl-prim-ty.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
privacy-in-paths.stderr Tweak privacy errors to account for reachable items 2023-06-22 16:50:31 +00:00
privacy-ns.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
privacy-ns1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
privacy-ns1.stderr Special-case item attributes in the suggestion output 2023-04-12 22:50:10 +00:00
privacy-ns2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
privacy-ns2.stderr Special-case item attributes in the suggestion output 2023-04-12 22:50:10 +00:00
privacy-reexport.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
privacy-ufcs.stderr Show number in error message even for one error 2023-11-24 19:15:52 +01:00
privacy1-rpass.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
privacy1.rs remove support for the #[start] attribute 2025-01-21 06:59:15 -07:00
privacy1.stderr Add a note to duplicate diagnostics 2023-10-05 01:04:41 +00:00
privacy2.rs remove support for the #[start] attribute 2025-01-21 06:59:15 -07:00
privacy2.stderr Structured use suggestion on privacy error 2023-12-04 22:26:08 +00:00
privacy3.rs remove support for the #[start] attribute 2025-01-21 06:59:15 -07:00
privacy3.stderr typeck in parallel 2023-07-11 17:52:43 +08:00
privacy4.rs remove support for the #[start] attribute 2025-01-21 06:59:15 -07:00
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 Do not underline suggestions for code that is already there 2024-08-01 18:53:42 +00: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
private-in-public-warn.stderr Use FnSig instead of raw FnDecl for ForeignItemKind::Fn 2024-08-16 14:10:06 -04: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
private-item-simple.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08: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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
private-struct-field-ctor.stderr Emit a single privacy error for multiple fields on the same struct expression 2025-01-18 20:33:15 +00:00
private-struct-field-pattern.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
private-struct-field-pattern.stderr Emit a single privacy error for multiple fields on the same struct expression 2025-01-18 20:33:15 +00:00
private-struct-field.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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 Bless ui tests. 2024-10-04 23:38:41 +00:00
private-type-in-interface.stderr Bless ui tests. 2024-10-04 23:38:41 +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 tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
pub-use-xcrate.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08:00
pub_use_mods_xcrate_exe.rs tests: remove //@ pretty-expanded usages 2024-11-26 02:50:48 +08: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 Bless tests due to new method suggestions. 2024-09-07 21:06:49 +07: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
sysroot-private.default.stderr Mark dependencies of the standard library as private by default 2025-01-14 08:51:19 +00:00
sysroot-private.rs Mark dependencies of the standard library as private by default 2025-01-14 08:51:19 +00:00
sysroot-private.rustc_private_enabled.stderr Add a UI test for stdlib-private dependencies 2025-01-14 08:51:17 +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 Move /src/test to /tests 2023-01-11 09:32:08 +00:00
union-field-privacy-1.stderr Emit a single privacy error for multiple fields on the same struct expression 2025-01-18 20:33:15 +00:00
union-field-privacy-2.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
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