Enable link-arg link kind inside of #[link] attribute

- Implement link-arg as an attribute
- Apply suggestions from review
  - Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
- Add unstable book entry
This commit is contained in:
zetanumbers 2023-11-29 02:13:58 -08:00
parent 1670ff64bf
commit f7617c1cd4
19 changed files with 114 additions and 26 deletions

View file

@ -500,6 +500,9 @@ declare_features! (
(incomplete, lazy_type_alias, "1.72.0", Some(112792), None),
/// Allows `if/while p && let q = r && ...` chains.
(unstable, let_chains, "1.37.0", Some(53667), None),
/// Allows using `#[link(kind = "link-arg", name = "...")]`
/// to pass custom arguments to the linker.
(unstable, link_arg_attribute, "CURRENT_RUSTC_VERSION", Some(99427), None),
/// Allows using `reason` in lint attributes and the `#[expect(lint)]` lint check.
(unstable, lint_reasons, "1.31.0", Some(54503), None),
/// Give access to additional metadata about declarative macro meta-variables.

View file

@ -269,7 +269,7 @@ metadata_unknown_import_name_type =
unknown import name type `{$import_name_type}`, expected one of: decorated, noprefix, undecorated
metadata_unknown_link_kind =
unknown link kind `{$kind}`, expected one of: static, dylib, framework, raw-dylib
unknown link kind `{$kind}`, expected one of: static, dylib, framework, raw-dylib, link-arg
.label = unknown link kind
metadata_unknown_link_modifier =

View file

@ -160,6 +160,18 @@ impl<'tcx> Collector<'tcx> {
}
NativeLibKind::RawDylib
}
"link-arg" => {
if !features.link_arg_attribute {
feature_err(
&sess.parse_sess,
sym::link_arg_attribute,
span,
"link kind `link-arg` is unstable",
)
.emit();
}
NativeLibKind::LinkArg
}
kind => {
sess.emit_err(errors::UnknownLinkKind { span, kind });
continue;

View file

@ -934,6 +934,7 @@ symbols! {
likely,
line,
link,
link_arg_attribute,
link_args,
link_cfg,
link_llvm_intrinsics,