-
Notifications
You must be signed in to change notification settings - Fork 13.8k
Open
Labels
A-attributesArea: Attributes (`#[…]`, `#![…]`)Area: Attributes (`#[…]`, `#![…]`)C-bugCategory: This is a bug.Category: This is a bug.P-criticalCritical priorityCritical priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language teamregression-from-stable-to-betaPerformance or correctness regression from stable to beta.Performance or correctness regression from stable to beta.
Description
Code
I tried this code:
#![allow(ill_formed_attribute_input)]
#[link="dl"]
unsafe extern "C" {
pub fn foo();
}
I expected the code to compile, since I allowed the FCW. Instead, it caused the following hard error:
error[E0539]: malformed `link` attribute input
--> src/lib.rs:3:1
|
3 | #[link="dl"]
| ^^^^^^^^^^^^ expected this to be a list
|
= note: for more information, visit <https://doc.rust-lang.org/reference/items/external-blocks.html#the-link-attribute>
help: try changing it to one of the following valid forms of the attribute
|
3 - #[link="dl"]
3 + #[link(name = "...")]
|
3 - #[link="dl"]
3 + #[link(name = "...", import_name_type = "decorated|noprefix|undecorated")]
|
3 - #[link="dl"]
3 + #[link(name = "...", kind = "dylib|static|...")]
|
3 - #[link="dl"]
3 + #[link(name = "...", kind = "dylib|static|...", wasm_import_module = "...", import_name_type = "decorated|noprefix|undecorated")]
|
= and 1 other candidate
For more information about this error, try `rustc --explain E0539`.
This affects old versions of the winit
crate. According to the crater run (in which this issue was discovered), this affects at least 450 crates that depend on winit
.
This presumably regressed in #143193. CC @JonathanBrouwer
As per T-lang decision, this code should have caused a "deny-by-default FCW (that reports in dependencies)", not a hard error that can't be silenced.
The issue for the FCW is seemingly #57571.
I have not yet tested the behavior of this in dependencies.
Version it worked on
Stable rust 1.90.0 on the playground.
Version with regression
1.91.0-beta.4 (2025-09-27 aa7859c0dec2de6c9cab)
on the playground
Metadata
Metadata
Assignees
Labels
A-attributesArea: Attributes (`#[…]`, `#![…]`)Area: Attributes (`#[…]`, `#![…]`)C-bugCategory: This is a bug.Category: This is a bug.P-criticalCritical priorityCritical priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language teamregression-from-stable-to-betaPerformance or correctness regression from stable to beta.Performance or correctness regression from stable to beta.