Skip to content

Commit 488d6ce

Browse files
committed
Use rustc_type_ir directly in derived traversables
1 parent 6640ab8 commit 488d6ce

File tree

6 files changed

+33
-15
lines changed

6 files changed

+33
-15
lines changed

Cargo.lock

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4045,6 +4045,7 @@ dependencies = [
40454045
"rustc_serialize",
40464046
"rustc_span",
40474047
"rustc_target",
4048+
"rustc_type_ir",
40484049
"smallvec",
40494050
"tracing",
40504051
]
@@ -4614,6 +4615,7 @@ dependencies = [
46144615
"rustc_span",
46154616
"rustc_target",
46164617
"rustc_transmute",
4618+
"rustc_type_ir",
46174619
"smallvec",
46184620
"tracing",
46194621
]
@@ -4643,6 +4645,7 @@ dependencies = [
46434645
"rustc_middle",
46444646
"rustc_span",
46454647
"rustc_target",
4648+
"rustc_type_ir",
46464649
"tracing",
46474650
]
46484651

compiler/rustc_infer/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ rustc_middle = { path = "../rustc_middle" }
1818
rustc_serialize = { path = "../rustc_serialize" }
1919
rustc_span = { path = "../rustc_span" }
2020
rustc_target = { path = "../rustc_target" }
21+
rustc_type_ir = { path = "../rustc_type_ir" }
2122
smallvec = { version = "1.8.1", features = ["union", "may_dangle"] }
2223
tracing = "0.1"
2324
# tidy-alphabetical-end

compiler/rustc_macros/src/traversable.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ pub trait Traversable {
168168

169169
impl Traversable for Foldable {
170170
fn traversable(interner: &Interner<'_>) -> TokenStream {
171-
quote! { ::rustc_middle::ty::fold::TypeFoldable<#interner> }
171+
quote! { ::rustc_type_ir::fold::TypeFoldable<#interner> }
172172
}
173173
fn supertraits(interner: &Interner<'_>) -> TokenStream {
174174
Visitable::traversable(interner)
@@ -177,7 +177,7 @@ impl Traversable for Foldable {
177177
if noop {
178178
bind
179179
} else {
180-
quote! { ::rustc_middle::ty::noop_traversal_if_boring!(#bind.try_fold_with(folder))? }
180+
quote! { ::rustc_type_ir::noop_traversal_if_boring!(#bind.try_fold_with(folder))? }
181181
}
182182
}
183183
fn arm(
@@ -193,7 +193,7 @@ impl Traversable for Foldable {
193193
body: impl ToTokens,
194194
) -> TokenStream {
195195
quote! {
196-
fn try_fold_with<#traverser: ::rustc_middle::ty::fold::FallibleTypeFolder<#interner>>(
196+
fn try_fold_with<#traverser: ::rustc_type_ir::fold::FallibleTypeFolder<#interner>>(
197197
self,
198198
folder: &mut #traverser
199199
) -> ::core::result::Result<Self, #traverser::Error> {
@@ -205,7 +205,7 @@ impl Traversable for Foldable {
205205

206206
impl Traversable for Visitable {
207207
fn traversable(interner: &Interner<'_>) -> TokenStream {
208-
quote! { ::rustc_middle::ty::visit::TypeVisitable<#interner> }
208+
quote! { ::rustc_type_ir::visit::TypeVisitable<#interner> }
209209
}
210210
fn supertraits(_: &Interner<'_>) -> TokenStream {
211211
quote! { ::core::clone::Clone + ::core::fmt::Debug }
@@ -214,7 +214,7 @@ impl Traversable for Visitable {
214214
if noop {
215215
quote! {}
216216
} else {
217-
quote! { ::rustc_middle::ty::noop_traversal_if_boring!(#bind.visit_with(visitor))?; }
217+
quote! { ::rustc_type_ir::noop_traversal_if_boring!(#bind.visit_with(visitor))?; }
218218
}
219219
}
220220
fn arm(
@@ -234,7 +234,7 @@ impl Traversable for Visitable {
234234
body: impl ToTokens,
235235
) -> TokenStream {
236236
quote! {
237-
fn visit_with<#traverser: ::rustc_middle::ty::visit::TypeVisitor<#interner>>(
237+
fn visit_with<#traverser: ::rustc_type_ir::visit::TypeVisitor<#interner>>(
238238
&self,
239239
visitor: &mut #traverser
240240
) -> ::core::ops::ControlFlow<#traverser::BreakTy> {
@@ -294,7 +294,7 @@ pub fn traversable_derive<T: Traversable>(
294294
) -> Result<TokenStream, Error> {
295295
use WhenToSkip::*;
296296

297-
let skip_traversal = quote! { ::rustc_middle::ty::BoringTraversable };
297+
let skip_traversal = quote! { ::rustc_type_ir::BoringTraversable };
298298

299299
let ast = structure.ast();
300300

compiler/rustc_macros/src/traversable/tests.rs

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,28 @@ impl Fold for Normalizer {
3737
fn fold_path(&mut self, i: syn::Path) -> syn::Path {
3838
syn::fold::fold_path(
3939
self,
40-
if let Some(n) = if i.leading_colon.is_some() && i.segments.len() >= 3 {
40+
if let Some(n) = if i.leading_colon.is_some() && i.segments.len() >= 2 {
4141
let segment = &i.segments[0];
42-
if *segment == parse_quote! { rustc_middle } && i.segments[1] == parse_quote! { ty }
43-
{
44-
let segment = &i.segments[2];
45-
if *segment == parse_quote! { fold } || *segment == parse_quote! { visit } {
46-
Some(3)
47-
} else {
42+
if *segment == parse_quote! { rustc_type_ir } {
43+
let segment = &i.segments[1];
44+
if i.segments.len() > 2 && *segment == parse_quote! { fold }
45+
|| *segment == parse_quote! { visit }
46+
{
4847
Some(2)
48+
} else if *segment == parse_quote! { BoringTraversable }
49+
|| *segment == parse_quote! { Interner }
50+
|| *segment == parse_quote! { noop_traversal_if_boring }
51+
{
52+
Some(1)
53+
} else {
54+
None
4955
}
50-
} else if *segment == parse_quote! { core } {
56+
} else if i.segments.len() > 2
57+
&& *segment == parse_quote! { rustc_middle }
58+
&& i.segments[1] == parse_quote! { ty }
59+
{
60+
Some(2)
61+
} else if i.segments.len() > 2 && *segment == parse_quote! { core } {
5162
let segment = &i.segments[1];
5263
if *segment == parse_quote! { ops } {
5364
Some(2)

compiler/rustc_trait_selection/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ rustc_session = { path = "../rustc_session" }
2222
rustc_span = { path = "../rustc_span" }
2323
rustc_target = { path = "../rustc_target" }
2424
rustc_transmute = { path = "../rustc_transmute", features = ["rustc"] }
25+
rustc_type_ir = { path = "../rustc_type_ir" }
2526
smallvec = { version = "1.8.1", features = ["union", "may_dangle"] }
2627
tracing = "0.1"
2728
# tidy-alphabetical-end

compiler/rustc_transmute/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ rustc_macros = { path = "../rustc_macros", optional = true}
1212
rustc_middle = { path = "../rustc_middle", optional = true}
1313
rustc_span = { path = "../rustc_span", optional = true}
1414
rustc_target = { path = "../rustc_target", optional = true}
15+
rustc_type_ir = { path = "../rustc_type_ir", optional = true}
1516
tracing = "0.1"
1617
# tidy-alphabetical-end
1718

@@ -23,6 +24,7 @@ rustc = [
2324
"rustc_middle",
2425
"rustc_span",
2526
"rustc_target",
27+
"rustc_type_ir",
2628
]
2729

2830
[dev-dependencies]

0 commit comments

Comments
 (0)