From 475e4eeb6557af820ee2b48f213f178eca5e11ce Mon Sep 17 00:00:00 2001 From: Jeremy Banks <_@jeremy.ca> Date: Mon, 7 Feb 2022 23:40:17 +0000 Subject: [PATCH] Remove obsolete no-op #[main] attribute from compiler. --- compiler/rustc_feature/src/builtin_attrs.rs | 1 - src/test/ui/attributes/main-removed-1.rs | 2 ++ src/test/ui/attributes/main-removed-1.stderr | 10 ++++++++++ .../ui/attributes/main-removed-2/auxiliary/tokyo.rs | 12 ++++++++++++ src/test/ui/attributes/main-removed-2/main.rs | 11 +++++++++++ 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/attributes/main-removed-1.rs create mode 100644 src/test/ui/attributes/main-removed-1.stderr create mode 100644 src/test/ui/attributes/main-removed-2/auxiliary/tokyo.rs create mode 100644 src/test/ui/attributes/main-removed-2/main.rs diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs index cb2562d09a525..b224c64ece7f6 100644 --- a/compiler/rustc_feature/src/builtin_attrs.rs +++ b/compiler/rustc_feature/src/builtin_attrs.rs @@ -339,7 +339,6 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[ ), // Entry point: - ungated!(main, Normal, template!(Word), WarnFollowing), ungated!(start, Normal, template!(Word), WarnFollowing), ungated!(no_start, CrateLevel, template!(Word), WarnFollowing), ungated!(no_main, CrateLevel, template!(Word), WarnFollowing), diff --git a/src/test/ui/attributes/main-removed-1.rs b/src/test/ui/attributes/main-removed-1.rs new file mode 100644 index 0000000000000..0e887469d4466 --- /dev/null +++ b/src/test/ui/attributes/main-removed-1.rs @@ -0,0 +1,2 @@ +#[main] //~ ERROR cannot find attribute `main` in this scope +fn main() {} diff --git a/src/test/ui/attributes/main-removed-1.stderr b/src/test/ui/attributes/main-removed-1.stderr new file mode 100644 index 0000000000000..2422c5c3b6239 --- /dev/null +++ b/src/test/ui/attributes/main-removed-1.stderr @@ -0,0 +1,10 @@ +error: cannot find attribute `main` in this scope + --> $DIR/main-removed-1.rs:1:3 + | +LL | #[main] + | ^^^^ + | + = note: `main` is in scope, but it is a function, not an attribute + +error: aborting due to previous error + diff --git a/src/test/ui/attributes/main-removed-2/auxiliary/tokyo.rs b/src/test/ui/attributes/main-removed-2/auxiliary/tokyo.rs new file mode 100644 index 0000000000000..196b5be2dd086 --- /dev/null +++ b/src/test/ui/attributes/main-removed-2/auxiliary/tokyo.rs @@ -0,0 +1,12 @@ +// force-host +// no-prefer-dynamic + +#![crate_type = "proc-macro"] + +extern crate proc_macro; +use proc_macro::TokenStream; + +#[proc_macro_attribute] +pub fn main(_: TokenStream, input: TokenStream) -> TokenStream { + "fn main() { println!(\"Hello Tokyo!\"); }".parse().unwrap() +} diff --git a/src/test/ui/attributes/main-removed-2/main.rs b/src/test/ui/attributes/main-removed-2/main.rs new file mode 100644 index 0000000000000..e8fecf825fa83 --- /dev/null +++ b/src/test/ui/attributes/main-removed-2/main.rs @@ -0,0 +1,11 @@ +// run-pass +// aux-build:tokyo.rs +// compile-flags:--extern tokyo +// edition:2021 + +use tokyo::main; + +#[main] +fn main() { + panic!("the #[main] macro should replace this with non-panicking code") +}