@@ -25,6 +25,144 @@ use stable_mir::{
25
25
26
26
use crate :: { rustc_smir, stable_mir} ;
27
27
28
+ pub struct BridgeTys ;
29
+
30
+ impl Bridge for BridgeTys {
31
+ type DefId = stable_mir:: DefId ;
32
+ type AllocId = stable_mir:: mir:: alloc:: AllocId ;
33
+ type Span = stable_mir:: ty:: Span ;
34
+ type Ty = stable_mir:: ty:: Ty ;
35
+ type InstanceDef = stable_mir:: mir:: mono:: InstanceDef ;
36
+ type TyConstId = stable_mir:: ty:: TyConstId ;
37
+ type MirConstId = stable_mir:: ty:: MirConstId ;
38
+ type Layout = stable_mir:: abi:: Layout ;
39
+ type Error = stable_mir:: Error ;
40
+ }
41
+
42
+ impl < ' tcx > Tables < ' tcx , BridgeTys > {
43
+ pub ( crate ) fn crate_item ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: CrateItem {
44
+ stable_mir:: CrateItem ( self . create_def_id ( did) )
45
+ }
46
+
47
+ pub ( crate ) fn adt_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: AdtDef {
48
+ stable_mir:: ty:: AdtDef ( self . create_def_id ( did) )
49
+ }
50
+
51
+ pub ( crate ) fn foreign_module_def (
52
+ & mut self ,
53
+ did : rustc_span:: def_id:: DefId ,
54
+ ) -> stable_mir:: ty:: ForeignModuleDef {
55
+ stable_mir:: ty:: ForeignModuleDef ( self . create_def_id ( did) )
56
+ }
57
+
58
+ pub ( crate ) fn foreign_def (
59
+ & mut self ,
60
+ did : rustc_span:: def_id:: DefId ,
61
+ ) -> stable_mir:: ty:: ForeignDef {
62
+ stable_mir:: ty:: ForeignDef ( self . create_def_id ( did) )
63
+ }
64
+
65
+ pub ( crate ) fn fn_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: FnDef {
66
+ stable_mir:: ty:: FnDef ( self . create_def_id ( did) )
67
+ }
68
+
69
+ pub ( crate ) fn closure_def (
70
+ & mut self ,
71
+ did : rustc_span:: def_id:: DefId ,
72
+ ) -> stable_mir:: ty:: ClosureDef {
73
+ stable_mir:: ty:: ClosureDef ( self . create_def_id ( did) )
74
+ }
75
+
76
+ pub ( crate ) fn coroutine_def (
77
+ & mut self ,
78
+ did : rustc_span:: def_id:: DefId ,
79
+ ) -> stable_mir:: ty:: CoroutineDef {
80
+ stable_mir:: ty:: CoroutineDef ( self . create_def_id ( did) )
81
+ }
82
+
83
+ pub ( crate ) fn coroutine_closure_def (
84
+ & mut self ,
85
+ did : rustc_span:: def_id:: DefId ,
86
+ ) -> stable_mir:: ty:: CoroutineClosureDef {
87
+ stable_mir:: ty:: CoroutineClosureDef ( self . create_def_id ( did) )
88
+ }
89
+
90
+ pub ( crate ) fn alias_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: AliasDef {
91
+ stable_mir:: ty:: AliasDef ( self . create_def_id ( did) )
92
+ }
93
+
94
+ pub ( crate ) fn param_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: ParamDef {
95
+ stable_mir:: ty:: ParamDef ( self . create_def_id ( did) )
96
+ }
97
+
98
+ pub ( crate ) fn br_named_def (
99
+ & mut self ,
100
+ did : rustc_span:: def_id:: DefId ,
101
+ ) -> stable_mir:: ty:: BrNamedDef {
102
+ stable_mir:: ty:: BrNamedDef ( self . create_def_id ( did) )
103
+ }
104
+
105
+ pub ( crate ) fn trait_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: TraitDef {
106
+ stable_mir:: ty:: TraitDef ( self . create_def_id ( did) )
107
+ }
108
+
109
+ pub ( crate ) fn generic_def (
110
+ & mut self ,
111
+ did : rustc_span:: def_id:: DefId ,
112
+ ) -> stable_mir:: ty:: GenericDef {
113
+ stable_mir:: ty:: GenericDef ( self . create_def_id ( did) )
114
+ }
115
+
116
+ pub ( crate ) fn const_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: ConstDef {
117
+ stable_mir:: ty:: ConstDef ( self . create_def_id ( did) )
118
+ }
119
+
120
+ pub ( crate ) fn impl_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: ImplDef {
121
+ stable_mir:: ty:: ImplDef ( self . create_def_id ( did) )
122
+ }
123
+
124
+ /*
125
+ pub(crate) fn region_def(
126
+ &mut self,
127
+ did: rustc_span::def_id::DefId,
128
+ ) -> stable_mir::ty::RegionDef {
129
+ stable_mir::ty::RegionDef(self.create_def_id(did))
130
+ }
131
+ */
132
+
133
+ pub ( crate ) fn coroutine_witness_def (
134
+ & mut self ,
135
+ did : rustc_span:: def_id:: DefId ,
136
+ ) -> stable_mir:: ty:: CoroutineWitnessDef {
137
+ stable_mir:: ty:: CoroutineWitnessDef ( self . create_def_id ( did) )
138
+ }
139
+
140
+ pub ( crate ) fn assoc_def ( & mut self , did : rustc_span:: def_id:: DefId ) -> stable_mir:: ty:: AssocDef {
141
+ stable_mir:: ty:: AssocDef ( self . create_def_id ( did) )
142
+ }
143
+
144
+ pub ( crate ) fn opaque_def (
145
+ & mut self ,
146
+ did : rustc_span:: def_id:: DefId ,
147
+ ) -> stable_mir:: ty:: OpaqueDef {
148
+ stable_mir:: ty:: OpaqueDef ( self . create_def_id ( did) )
149
+ }
150
+
151
+ pub ( crate ) fn prov (
152
+ & mut self ,
153
+ aid : rustc_middle:: mir:: interpret:: AllocId ,
154
+ ) -> stable_mir:: ty:: Prov {
155
+ stable_mir:: ty:: Prov ( self . create_alloc_id ( aid) )
156
+ }
157
+
158
+ pub ( crate ) fn static_def (
159
+ & mut self ,
160
+ did : rustc_span:: def_id:: DefId ,
161
+ ) -> stable_mir:: mir:: mono:: StaticDef {
162
+ stable_mir:: mir:: mono:: StaticDef ( self . create_def_id ( did) )
163
+ }
164
+ }
165
+
28
166
/// Stable public API for querying compiler information.
29
167
///
30
168
/// All queries are delegated to an internal [`SmirCtxt`] that provides
0 commit comments