about summary refs log tree commit diff
path: root/compiler/rustc_attr_data_structures/src
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_attr_data_structures/src')
-rw-r--r--compiler/rustc_attr_data_structures/src/encode_cross_crate.rs42
-rw-r--r--compiler/rustc_attr_data_structures/src/lib.rs2
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};