diff options
| author | bors <bors@rust-lang.org> | 2025-06-25 20:34:13 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-06-25 20:34:13 +0000 |
| commit | 0fa4ec6cde46fa17ab07acb5531cfe0dc1349ffa (patch) | |
| tree | b3044715a0b424b82d38cc5f253d8748a5fa2db7 /compiler/rustc_attr_data_structures/src | |
| parent | d14d202262d13df896b0c624b0cec6e4bfde631a (diff) | |
| parent | 64a1a98f47a653e620317e5172f7d87a7ce72ec4 (diff) | |
Auto merge of #142777 - jdonszelmann:restore-encode-cross-crate, r=oli-obk
Encode hir attributes cross-crate properly r? `@oli-obk` This should return the lost perf in rust-lang/rust#138165 cc: `@therealprof`
Diffstat (limited to 'compiler/rustc_attr_data_structures/src')
| -rw-r--r-- | compiler/rustc_attr_data_structures/src/encode_cross_crate.rs | 42 | ||||
| -rw-r--r-- | compiler/rustc_attr_data_structures/src/lib.rs | 2 |
2 files changed, 44 insertions, 0 deletions
diff --git a/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs b/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs new file mode 100644 index 00000000000..e41dd8bde8f --- /dev/null +++ b/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs @@ -0,0 +1,42 @@ +use crate::AttributeKind; + +#[derive(PartialEq)] +pub enum EncodeCrossCrate { + Yes, + No, +} + +impl AttributeKind { + pub fn encode_cross_crate(&self) -> EncodeCrossCrate { + use AttributeKind::*; + use EncodeCrossCrate::*; + + match self { + Align { .. } => No, + AllowConstFnUnstable(..) => No, + AllowInternalUnstable(..) => Yes, + AsPtr(..) => Yes, + BodyStability { .. } => No, + Confusables { .. } => Yes, + ConstStability { .. } => Yes, + ConstStabilityIndirect => No, + Deprecation { .. } => Yes, + DocComment { .. } => Yes, + Inline(..) => No, + MacroTransparency(..) => Yes, + Repr(..) => No, + Stability { .. } => Yes, + Cold(..) => No, + ConstContinue(..) => No, + LoopMatch(..) => No, + MayDangle(..) => No, + MustUse { .. } => Yes, + Naked(..) => No, + NoMangle(..) => No, + Optimize(..) => No, + PubTransparent(..) => Yes, + SkipDuringMethodDispatch { .. } => No, + TrackCaller(..) => Yes, + } + } +} diff --git a/compiler/rustc_attr_data_structures/src/lib.rs b/compiler/rustc_attr_data_structures/src/lib.rs index f8355be09ad..86c73f0d9a0 100644 --- a/compiler/rustc_attr_data_structures/src/lib.rs +++ b/compiler/rustc_attr_data_structures/src/lib.rs @@ -9,6 +9,7 @@ // tidy-alphabetical-end mod attributes; +mod encode_cross_crate; mod stability; mod version; @@ -17,6 +18,7 @@ pub mod lints; use std::num::NonZero; pub use attributes::*; +pub use encode_cross_crate::EncodeCrossCrate; use rustc_abi::Align; use rustc_ast::token::CommentKind; use rustc_ast::{AttrStyle, IntTy, UintTy}; |
