Skip to content

Commit aa6b7df

Browse files
committed
cleanup: re-export IndexedVal and fix some nits
1 parent 1eed3f8 commit aa6b7df

File tree

8 files changed

+77
-75
lines changed

8 files changed

+77
-75
lines changed
Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
//! Defines a set of traits that is used for abstracting
2+
//! stable_mir's components that are needed in rustc_smir.
3+
//!
4+
//! These traits are really useful when programming
5+
//! in stable_mir-agnostic settings.
6+
17
use std::fmt::Debug;
28

39
use super::Bridge;
@@ -7,35 +13,35 @@ pub trait SmirError {
713
fn from_internal<T: Debug>(err: T) -> Self;
814
}
915

10-
macro_rules! make_def_trait {
16+
pub trait Prov<B: Bridge> {
17+
fn new(aid: B::AllocId) -> Self;
18+
}
19+
20+
macro_rules! make_bridge_trait {
1121
($name:ident) => {
1222
pub trait $name<B: Bridge> {
1323
fn new(did: B::DefId) -> Self;
1424
}
1525
};
1626
}
1727

18-
make_def_trait!(CrateItem);
19-
make_def_trait!(AdtDef);
20-
make_def_trait!(ForeignModuleDef);
21-
make_def_trait!(ForeignDef);
22-
make_def_trait!(FnDef);
23-
make_def_trait!(ClosureDef);
24-
make_def_trait!(CoroutineDef);
25-
make_def_trait!(CoroutineClosureDef);
26-
make_def_trait!(AliasDef);
27-
make_def_trait!(ParamDef);
28-
make_def_trait!(BrNamedDef);
29-
make_def_trait!(TraitDef);
30-
make_def_trait!(GenericDef);
31-
make_def_trait!(ConstDef);
32-
make_def_trait!(ImplDef);
33-
make_def_trait!(RegionDef);
34-
make_def_trait!(CoroutineWitnessDef);
35-
make_def_trait!(AssocDef);
36-
make_def_trait!(OpaqueDef);
37-
make_def_trait!(StaticDef);
38-
39-
pub trait Prov<B: Bridge> {
40-
fn new(aid: B::AllocId) -> Self;
41-
}
28+
make_bridge_trait!(CrateItem);
29+
make_bridge_trait!(AdtDef);
30+
make_bridge_trait!(ForeignModuleDef);
31+
make_bridge_trait!(ForeignDef);
32+
make_bridge_trait!(FnDef);
33+
make_bridge_trait!(ClosureDef);
34+
make_bridge_trait!(CoroutineDef);
35+
make_bridge_trait!(CoroutineClosureDef);
36+
make_bridge_trait!(AliasDef);
37+
make_bridge_trait!(ParamDef);
38+
make_bridge_trait!(BrNamedDef);
39+
make_bridge_trait!(TraitDef);
40+
make_bridge_trait!(GenericDef);
41+
make_bridge_trait!(ConstDef);
42+
make_bridge_trait!(ImplDef);
43+
make_bridge_trait!(RegionDef);
44+
make_bridge_trait!(CoroutineWitnessDef);
45+
make_bridge_trait!(AssocDef);
46+
make_bridge_trait!(OpaqueDef);
47+
make_bridge_trait!(StaticDef);

compiler/rustc_smir/src/stable_mir/abi.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ impl Layout {
119119
}
120120
}
121121

122-
impl crate::rustc_smir::IndexedVal for Layout {
122+
impl stable_mir::IndexedVal for Layout {
123123
fn to_val(index: usize) -> Self {
124124
Layout(index)
125125
}

compiler/rustc_smir/src/stable_mir/compiler_interface.rs

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -65,43 +65,6 @@ impl Bridge for BridgeTys {
6565
type StaticDef = stable_mir::mir::mono::StaticDef;
6666
}
6767

68-
macro_rules! bridge_def {
69-
($name: ident, $ty: ty) => {
70-
impl rustc_smir::bridge::$name<BridgeTys> for $ty {
71-
fn new(def: stable_mir::DefId) -> Self {
72-
Self(def)
73-
}
74-
}
75-
};
76-
}
77-
78-
bridge_def!(CrateItem, stable_mir::CrateItem);
79-
bridge_def!(AdtDef, stable_mir::ty::AdtDef);
80-
bridge_def!(ForeignModuleDef, stable_mir::ty::ForeignModuleDef);
81-
bridge_def!(ForeignDef, stable_mir::ty::ForeignDef);
82-
bridge_def!(FnDef, stable_mir::ty::FnDef);
83-
bridge_def!(ClosureDef, stable_mir::ty::ClosureDef);
84-
bridge_def!(CoroutineDef, stable_mir::ty::CoroutineDef);
85-
bridge_def!(CoroutineClosureDef, stable_mir::ty::CoroutineClosureDef);
86-
bridge_def!(AliasDef, stable_mir::ty::AliasDef);
87-
bridge_def!(ParamDef, stable_mir::ty::ParamDef);
88-
bridge_def!(BrNamedDef, stable_mir::ty::BrNamedDef);
89-
bridge_def!(TraitDef, stable_mir::ty::TraitDef);
90-
bridge_def!(GenericDef, stable_mir::ty::GenericDef);
91-
bridge_def!(ConstDef, stable_mir::ty::ConstDef);
92-
bridge_def!(ImplDef, stable_mir::ty::ImplDef);
93-
bridge_def!(RegionDef, stable_mir::ty::RegionDef);
94-
bridge_def!(CoroutineWitnessDef, stable_mir::ty::CoroutineWitnessDef);
95-
bridge_def!(AssocDef, stable_mir::ty::AssocDef);
96-
bridge_def!(OpaqueDef, stable_mir::ty::OpaqueDef);
97-
bridge_def!(StaticDef, stable_mir::mir::mono::StaticDef);
98-
99-
impl rustc_smir::bridge::Prov<BridgeTys> for stable_mir::ty::Prov {
100-
fn new(aid: stable_mir::mir::alloc::AllocId) -> Self {
101-
Self(aid)
102-
}
103-
}
104-
10568
/// Stable public API for querying compiler information.
10669
///
10770
/// All queries are delegated to [`crate::rustc_smir::context::SmirCtxt`] that provides

compiler/rustc_smir/src/stable_mir/mir/alloc.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
33
use std::io::Read;
44

5-
use rustc_smir::IndexedVal;
65
use serde::Serialize;
76
use stable_mir::mir::mono::{Instance, StaticDef};
87
use stable_mir::target::{Endian, MachineInfo};
98
use stable_mir::ty::{Allocation, Binder, ExistentialTraitRef, Ty};
10-
use stable_mir::{Error, with};
9+
use stable_mir::{Error, IndexedVal, with};
1110

12-
use crate::{rustc_smir, stable_mir};
11+
use crate::stable_mir;
1312

1413
/// An allocation in the SMIR global memory can be either a function pointer,
1514
/// a static, or a "real" allocation with some data in it.

compiler/rustc_smir/src/stable_mir/mir/mono.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
use std::fmt::{Debug, Formatter};
22
use std::io;
33

4-
use rustc_smir::IndexedVal;
54
use rustc_smir::bridge::SmirError;
65
use serde::Serialize;
76
use stable_mir::abi::FnAbi;
87
use stable_mir::crate_def::CrateDef;
98
use stable_mir::mir::Body;
109
use stable_mir::ty::{Allocation, ClosureDef, ClosureKind, FnDef, GenericArgs, Ty};
11-
use stable_mir::{CrateItem, DefId, Error, ItemKind, Opaque, Symbol, with};
10+
use stable_mir::{CrateItem, DefId, Error, IndexedVal, ItemKind, Opaque, Symbol, with};
1211

1312
use crate::{rustc_smir, stable_mir};
1413

compiler/rustc_smir/src/stable_mir/mir/pretty.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ use std::io::Write;
44
use std::{fmt, io, iter};
55

66
use fmt::{Display, Formatter};
7-
use rustc_smir::IndexedVal;
87
use stable_mir::mir::{
98
Operand, Place, RawPtrKind, Rvalue, StatementKind, UnwindAction, VarDebugInfoContents,
109
};
1110
use stable_mir::ty::{AdtKind, AssocKind, MirConst, Ty, TyConst};
12-
use stable_mir::{Body, CrateDef, Mutability, with};
11+
use stable_mir::{Body, CrateDef, IndexedVal, Mutability, with};
1312

1413
use super::{AggregateKind, AssertMessage, BinOp, BorrowKind, FakeBorrowKind, TerminatorKind};
15-
use crate::{rustc_smir, stable_mir};
14+
use crate::stable_mir;
1615

1716
impl Display for Ty {
1817
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {

compiler/rustc_smir/src/stable_mir/mod.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,3 +240,40 @@ impl std::fmt::Debug for Opaque {
240240
pub fn opaque<T: Debug>(value: &T) -> Opaque {
241241
Opaque(format!("{value:?}"))
242242
}
243+
244+
macro_rules! bridge_impl {
245+
($name: ident, $ty: ty) => {
246+
impl rustc_smir::bridge::$name<compiler_interface::BridgeTys> for $ty {
247+
fn new(def: stable_mir::DefId) -> Self {
248+
Self(def)
249+
}
250+
}
251+
};
252+
}
253+
254+
bridge_impl!(CrateItem, stable_mir::CrateItem);
255+
bridge_impl!(AdtDef, stable_mir::ty::AdtDef);
256+
bridge_impl!(ForeignModuleDef, stable_mir::ty::ForeignModuleDef);
257+
bridge_impl!(ForeignDef, stable_mir::ty::ForeignDef);
258+
bridge_impl!(FnDef, stable_mir::ty::FnDef);
259+
bridge_impl!(ClosureDef, stable_mir::ty::ClosureDef);
260+
bridge_impl!(CoroutineDef, stable_mir::ty::CoroutineDef);
261+
bridge_impl!(CoroutineClosureDef, stable_mir::ty::CoroutineClosureDef);
262+
bridge_impl!(AliasDef, stable_mir::ty::AliasDef);
263+
bridge_impl!(ParamDef, stable_mir::ty::ParamDef);
264+
bridge_impl!(BrNamedDef, stable_mir::ty::BrNamedDef);
265+
bridge_impl!(TraitDef, stable_mir::ty::TraitDef);
266+
bridge_impl!(GenericDef, stable_mir::ty::GenericDef);
267+
bridge_impl!(ConstDef, stable_mir::ty::ConstDef);
268+
bridge_impl!(ImplDef, stable_mir::ty::ImplDef);
269+
bridge_impl!(RegionDef, stable_mir::ty::RegionDef);
270+
bridge_impl!(CoroutineWitnessDef, stable_mir::ty::CoroutineWitnessDef);
271+
bridge_impl!(AssocDef, stable_mir::ty::AssocDef);
272+
bridge_impl!(OpaqueDef, stable_mir::ty::OpaqueDef);
273+
bridge_impl!(StaticDef, stable_mir::mir::mono::StaticDef);
274+
275+
impl rustc_smir::bridge::Prov<compiler_interface::BridgeTys> for stable_mir::ty::Prov {
276+
fn new(aid: stable_mir::mir::alloc::AllocId) -> Self {
277+
Self(aid)
278+
}
279+
}

compiler/rustc_smir/src/stable_mir/ty.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
use std::fmt::{self, Debug, Display, Formatter};
22
use std::ops::Range;
33

4-
use rustc_smir::IndexedVal;
54
use serde::Serialize;
65
use stable_mir::abi::{FnAbi, Layout};
76
use stable_mir::crate_def::{CrateDef, CrateDefItems, CrateDefType};
87
use stable_mir::mir::alloc::{AllocId, read_target_int, read_target_uint};
98
use stable_mir::mir::mono::StaticDef;
109
use stable_mir::target::MachineInfo;
11-
use stable_mir::{Filename, Opaque};
10+
use stable_mir::{Filename, IndexedVal, Opaque};
1211

1312
use super::mir::{Body, Mutability, Safety};
1413
use super::{DefId, Error, Symbol, with};
15-
use crate::{rustc_smir, stable_mir};
14+
use crate::stable_mir;
1615

1716
#[derive(Copy, Clone, Eq, PartialEq, Hash, Serialize)]
1817
pub struct Ty(usize);
@@ -1531,7 +1530,7 @@ pub enum PredicatePolarity {
15311530

15321531
macro_rules! index_impl {
15331532
($name:ident) => {
1534-
impl crate::rustc_smir::IndexedVal for $name {
1533+
impl stable_mir::IndexedVal for $name {
15351534
fn to_val(index: usize) -> Self {
15361535
$name(index)
15371536
}

0 commit comments

Comments
 (0)