Rollup merge of #138842 - Noratrieb:inline-exported, r=me,saethlin
Emit `unused_attributes` for `#[inline]` on exported functions I saw someone post a code sample that contained these two attributes, which immediately made me suspicious. My suspicions were confirmed when I did a small test and checked the compiler source code to confirm that in these cases, `#[inline]` is indeed ignored (because you can't exactly `LocalCopy`an unmangled symbol since that would lead to duplicate symbols, and doing a mix of an unmangled `GloballyShared` and mangled `LocalCopy` instantiation is too complicated for our current instatiation mode logic, which I don't want to change right now). So instead, emit the usual unused attribute lint with a message saying that the attribute is ignored in this position. I think this is not 100% true, since I expect LLVM `inlinehint` to still be applied to such a function, but that's not why people use this attribute, they use it for the `LocalCopy` instantiation mode, where it doesn't work. r? saethlin as the instantiation guy Procedurally, I think this should be fine to merge without any lang involvement, as this only does a very minor extension to an existing lint.
This commit is contained in:
@@ -1441,6 +1441,11 @@ pub(crate) struct OnlyHasEffectOn {
|
||||
pub target_name: String,
|
||||
}
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
#[diag(passes_inline_ignored_for_exported)]
|
||||
#[help]
|
||||
pub(crate) struct InlineIgnoredForExported {}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(passes_object_lifetime_err)]
|
||||
pub(crate) struct ObjectLifetimeErr {
|
||||
|
||||
Reference in New Issue
Block a user