Rollup merge of #144050 - JonathanBrouwer:cross-crate-reexport, r=jdonszelmann
Fix encoding of link_section and no_mangle cross crate Fixes https://github.com/rust-lang/rust/issues/144004 ``@bjorn3`` suggested using the `codegen_fn_attrs` query but given that these attributes are not that common it's probably fine to just always encode them. I can also go for that solution if it is preferred but that would require more changes. r? ``@jdonszelmann`` ``@fmease`` (whoever feels like it)
This commit is contained in:
@@ -41,9 +41,9 @@ impl AttributeKind {
|
|||||||
Fundamental { .. } => Yes,
|
Fundamental { .. } => Yes,
|
||||||
Ignore { .. } => No,
|
Ignore { .. } => No,
|
||||||
Inline(..) => No,
|
Inline(..) => No,
|
||||||
LinkName { .. } => Yes,
|
LinkName { .. } => Yes, // Needed for rustdoc
|
||||||
LinkOrdinal { .. } => No,
|
LinkOrdinal { .. } => No,
|
||||||
LinkSection { .. } => No,
|
LinkSection { .. } => Yes, // Needed for rustdoc
|
||||||
LoopMatch(..) => No,
|
LoopMatch(..) => No,
|
||||||
MacroTransparency(..) => Yes,
|
MacroTransparency(..) => Yes,
|
||||||
Marker(..) => No,
|
Marker(..) => No,
|
||||||
@@ -51,8 +51,8 @@ impl AttributeKind {
|
|||||||
MustUse { .. } => Yes,
|
MustUse { .. } => Yes,
|
||||||
Naked(..) => No,
|
Naked(..) => No,
|
||||||
NoImplicitPrelude(..) => No,
|
NoImplicitPrelude(..) => No,
|
||||||
NoMangle(..) => No,
|
NoMangle(..) => Yes, // Needed for rustdoc
|
||||||
NonExhaustive(..) => Yes,
|
NonExhaustive(..) => Yes, // Needed for rustdoc
|
||||||
OmitGdbPrettyPrinterSection => No,
|
OmitGdbPrettyPrinterSection => No,
|
||||||
Optimize(..) => No,
|
Optimize(..) => No,
|
||||||
ParenSugar(..) => No,
|
ParenSugar(..) => No,
|
||||||
|
|||||||
14
tests/rustdoc/reexport/auxiliary/reexports-attrs.rs
Normal file
14
tests/rustdoc/reexport/auxiliary/reexports-attrs.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#[unsafe(no_mangle)]
|
||||||
|
pub fn f0() {}
|
||||||
|
|
||||||
|
#[unsafe(link_section = ".here")]
|
||||||
|
pub fn f1() {}
|
||||||
|
|
||||||
|
#[unsafe(export_name = "f2export")]
|
||||||
|
pub fn f2() {}
|
||||||
|
|
||||||
|
#[repr(u8)]
|
||||||
|
pub enum T0 { V1 }
|
||||||
|
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum T1 {}
|
||||||
20
tests/rustdoc/reexport/reexport-attrs.rs
Normal file
20
tests/rustdoc/reexport/reexport-attrs.rs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
//@ aux-build: reexports-attrs.rs
|
||||||
|
|
||||||
|
#![crate_name = "foo"]
|
||||||
|
|
||||||
|
extern crate reexports_attrs;
|
||||||
|
|
||||||
|
//@ has 'foo/fn.f0.html' '//pre[@class="rust item-decl"]' '#[no_mangle]'
|
||||||
|
pub use reexports_attrs::f0;
|
||||||
|
|
||||||
|
//@ has 'foo/fn.f1.html' '//pre[@class="rust item-decl"]' '#[link_section = ".here"]'
|
||||||
|
pub use reexports_attrs::f1;
|
||||||
|
|
||||||
|
//@ has 'foo/fn.f2.html' '//pre[@class="rust item-decl"]' '#[export_name = "f2export"]'
|
||||||
|
pub use reexports_attrs::f2;
|
||||||
|
|
||||||
|
//@ has 'foo/enum.T0.html' '//pre[@class="rust item-decl"]' '#[repr(u8)]'
|
||||||
|
pub use reexports_attrs::T0;
|
||||||
|
|
||||||
|
//@ has 'foo/enum.T1.html' '//pre[@class="rust item-decl"]' '#[non_exhaustive]'
|
||||||
|
pub use reexports_attrs::T1;
|
||||||
Reference in New Issue
Block a user