rustc: Stricter checking for #[link] attributes
This commit is contained in:
parent
70b3681bf6
commit
4fa24bcb54
61 changed files with 787 additions and 548 deletions
|
@ -396,37 +396,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
// Check for unstable modifiers on `#[link(..)]` attribute
|
||||
if attr.has_name(sym::link) {
|
||||
for nested_meta in attr.meta_item_list().unwrap_or_default() {
|
||||
if nested_meta.has_name(sym::modifiers) {
|
||||
if let Some(modifiers) = nested_meta.value_str() {
|
||||
for modifier in modifiers.as_str().split(',') {
|
||||
if let Some(modifier) = modifier.strip_prefix(&['+', '-']) {
|
||||
macro_rules! gate_modifier { ($($name:literal => $feature:ident)*) => {
|
||||
$(if modifier == $name {
|
||||
let msg = concat!("`#[link(modifiers=\"", $name, "\")]` is unstable");
|
||||
gate_feature_post!(
|
||||
self,
|
||||
$feature,
|
||||
nested_meta.name_value_literal_span().unwrap(),
|
||||
msg
|
||||
);
|
||||
})*
|
||||
}}
|
||||
|
||||
gate_modifier!(
|
||||
"bundle" => native_link_modifiers_bundle
|
||||
"verbatim" => native_link_modifiers_verbatim
|
||||
"as-needed" => native_link_modifiers_as_needed
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Emit errors for non-staged-api crates.
|
||||
if !self.features.staged_api {
|
||||
if attr.has_name(sym::rustc_deprecated)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue