about summary refs log tree commit diff
path: root/compiler/rustc_public_bridge/src/context/traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_public_bridge/src/context/traits.rs')
-rw-r--r--compiler/rustc_public_bridge/src/context/traits.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/compiler/rustc_public_bridge/src/context/traits.rs b/compiler/rustc_public_bridge/src/context/traits.rs
new file mode 100644
index 00000000000..8483bee4aad
--- /dev/null
+++ b/compiler/rustc_public_bridge/src/context/traits.rs
@@ -0,0 +1,21 @@
+//! A set of traits that define a stable interface to rustc's internals.
+//!
+//! These traits abstract rustc's internal APIs, allowing StableMIR to maintain a stable
+//! interface regardless of internal compiler changes.
+
+use rustc_middle::mir::interpret::AllocRange;
+use rustc_middle::ty;
+use rustc_middle::ty::Ty;
+use rustc_span::def_id::DefId;
+
+pub trait SmirTy<'tcx> {
+    fn new_foreign(&self, def_id: DefId) -> Ty<'tcx>;
+}
+
+pub trait SmirTypingEnv<'tcx> {
+    fn fully_monomorphized(&self) -> ty::TypingEnv<'tcx>;
+}
+
+pub trait SmirAllocRange<'tcx> {
+    fn alloc_range(&self, offset: rustc_abi::Size, size: rustc_abi::Size) -> AllocRange;
+}