Closed as duplicate of#133994
Closed as duplicate of#133994
Description
Code
# bar/Cargo.toml
[package]
name = "bar"
version = "0.1.0"
edition = "2024"
[lib]
proc-macro = true
[dependencies]
quote = "1.0.37"
// bar/src/lib.rs
use proc_macro::TokenStream;
use quote::quote;
#[proc_macro]
pub fn bar(input: TokenStream) -> TokenStream {
assert!(input.is_empty());
quote! {
#[no_mangle]
pub extern "C" fn yolo() {}
}
.into()
}
# foo/Cargo.toml
[package]
name = "foo"
version = "0.1.0"
edition = "2021"
[dependencies]
bar.path = "../bar"
// foo/src/lib.rs
bar::bar!();
Current output
Running cargo check
from the foo
directory:
error: unsafe attribute used without unsafe
--> src/lib.rs:1:1
|
1 | bar::bar!();
| ^^^^^^^^^^^ usage of unsafe attribute
|
= note: this error originates in the macro `bar::bar` (in Nightly builds, run with -Z macro-backtrace for more info)
help: wrap the attribute in `unsafe(...)`
|
1 | baunsafe(r::bar!());
| +++++++ +
error: could not compile `foo` (lib) due to 1 previous error
Desired output
error: unsafe attribute used without unsafe
--> src/lib.rs:1:1
|
1 | bar::bar!();
| ^^^^^^^^^^^ usage of unsafe attribute
|
= note: this error originates in the macro `bar::bar` (in Nightly builds, run with -Z macro-backtrace for more info)
help: wrap the attribute in `unsafe(...)`
|
1 | #[unsafe(no_mangle)]
| +++++++ +
error: could not compile `foo` (lib) due to 1 previous error
Rationale and extra context
Note that the problem occurs only when bar
uses edition 2024. It doesn't matter if foo
does too.
Other cases
No response
Rust Version
rustc 1.85.0-nightly (d49be02cf 2024-12-02)
binary: rustc
commit-hash: d49be02cf6d2e2a01264fcdef1e20c826710c0f5
commit-date: 2024-12-02
host: x86_64-unknown-linux-gnu
release: 1.85.0-nightly
LLVM version: 19.1.4
Anything else?
No response
Metadata
Metadata
Assignees
Labels
Area: Messages for errors, warnings, and lintsArea: The 2024 editionArea: Procedural macrosArea: Suggestions generated by the compiler applied by `cargo fix`Diagnostics: A structured suggestion resulting in incorrect code.Lint: unsafe_attr_outside_unsafeRelevant to the compiler team, which will review and decide on the PR/issue.