mirror of https://github.com/rust-lang/rust.git
Auto merge of #43109 - pnkfelix:fix-link_args-gate, r=nikomatsakis
Fix feature gate for `#[link_args(..)]` attribute Fix feature gate for `#[link_args(..)]` attribute so that it will fire regardless of context of attribute. See also #29596 and #43106
This commit is contained in:
commit
eb9dfb8bd9
|
@ -551,7 +551,12 @@ pub const BUILTIN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeG
|
|||
("ignore", Normal, Ungated),
|
||||
("no_implicit_prelude", Normal, Ungated),
|
||||
("reexport_test_harness_main", Normal, Ungated),
|
||||
("link_args", Normal, Ungated),
|
||||
("link_args", Normal, Gated(Stability::Unstable,
|
||||
"link_args",
|
||||
"the `link_args` attribute is experimental and not \
|
||||
portable across platforms, it is recommended to \
|
||||
use `#[link(name = \"foo\")] instead",
|
||||
cfg_fn!(link_args))),
|
||||
("macro_escape", Normal, Ungated),
|
||||
|
||||
// RFC #1445.
|
||||
|
@ -1184,12 +1189,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
|||
}
|
||||
|
||||
ast::ItemKind::ForeignMod(ref foreign_module) => {
|
||||
if attr::contains_name(&i.attrs[..], "link_args") {
|
||||
gate_feature_post!(&self, link_args, i.span,
|
||||
"the `link_args` attribute is not portable \
|
||||
across platforms, it is recommended to \
|
||||
use `#[link(name = \"foo\")]` instead")
|
||||
}
|
||||
self.check_abi(foreign_module.abi, i.span);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,12 +9,22 @@
|
|||
// except according to those terms.
|
||||
|
||||
// Test that `#[link_args]` attribute is gated by `link_args`
|
||||
// feature gate.
|
||||
// feature gate, both when it occurs where expected (atop
|
||||
// `extern { }` blocks) and where unexpected.
|
||||
|
||||
// gate-test-link_args
|
||||
|
||||
#[link_args = "aFdEfSeVEEE"]
|
||||
extern {}
|
||||
//~^ ERROR the `link_args` attribute is not portable across platforms
|
||||
// sidestep warning (which is correct, but misleading for
|
||||
// purposes of this test)
|
||||
#![allow(unused_attributes)]
|
||||
|
||||
fn main() { }
|
||||
#![link_args = "-l unexpected_use_as_inner_attr_on_mod"]
|
||||
//~^ ERROR the `link_args` attribute is experimental
|
||||
|
||||
#[link_args = "-l expected_use_case"]
|
||||
//~^ ERROR the `link_args` attribute is experimental
|
||||
extern {}
|
||||
|
||||
#[link_args = "-l unexected_use_on_non_extern_item"]
|
||||
//~^ ERROR: the `link_args` attribute is experimental
|
||||
fn main() {}
|
||||
|
|
Loading…
Reference in New Issue