Skip to content

Commit 8f87cc3

Browse files
committed
Use rustc_type_ir directly in derived traversables
1 parent e3b5dd0 commit 8f87cc3

File tree

6 files changed

+34
-17
lines changed

6 files changed

+34
-17
lines changed

Cargo.lock

+3
Original file line numberDiff line numberDiff line change
@@ -4032,6 +4032,7 @@ dependencies = [
40324032
"rustc_serialize",
40334033
"rustc_span",
40344034
"rustc_target",
4035+
"rustc_type_ir",
40354036
"smallvec",
40364037
"tracing",
40374038
]
@@ -4601,6 +4602,7 @@ dependencies = [
46014602
"rustc_span",
46024603
"rustc_target",
46034604
"rustc_transmute",
4605+
"rustc_type_ir",
46044606
"smallvec",
46054607
"tracing",
46064608
]
@@ -4630,6 +4632,7 @@ dependencies = [
46304632
"rustc_middle",
46314633
"rustc_span",
46324634
"rustc_target",
4635+
"rustc_type_ir",
46334636
"tracing",
46344637
]
46354638

compiler/rustc_infer/Cargo.toml

+1
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

+7-7
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ pub trait Traversable {
197197

198198
impl Traversable for Foldable {
199199
fn traversable(interner: &Interner<'_>) -> TokenStream {
200-
quote! { ::rustc_middle::ty::fold::TypeFoldable<#interner> }
200+
quote! { ::rustc_type_ir::fold::TypeFoldable<#interner> }
201201
}
202202
fn supertraits(interner: &Interner<'_>) -> TokenStream {
203203
Visitable::traversable(interner)
@@ -206,7 +206,7 @@ impl Traversable for Foldable {
206206
if noop {
207207
bind
208208
} else {
209-
quote! { ::rustc_middle::ty::noop_if_trivially_traversable!(#bind.try_fold_with::<#interner>(folder))? }
209+
quote! { ::rustc_type_ir::noop_if_trivially_traversable!(#bind.try_fold_with::<#interner>(folder))? }
210210
}
211211
}
212212
fn arm(
@@ -222,7 +222,7 @@ impl Traversable for Foldable {
222222
body: impl ToTokens,
223223
) -> TokenStream {
224224
quote! {
225-
fn try_fold_with<#traverser: ::rustc_middle::ty::fold::FallibleTypeFolder<#interner>>(
225+
fn try_fold_with<#traverser: ::rustc_type_ir::fold::FallibleTypeFolder<#interner>>(
226226
self,
227227
folder: &mut #traverser
228228
) -> ::core::result::Result<Self, #traverser::Error> {
@@ -234,7 +234,7 @@ impl Traversable for Foldable {
234234

235235
impl Traversable for Visitable {
236236
fn traversable(interner: &Interner<'_>) -> TokenStream {
237-
quote! { ::rustc_middle::ty::visit::TypeVisitable<#interner> }
237+
quote! { ::rustc_type_ir::visit::TypeVisitable<#interner> }
238238
}
239239
fn supertraits(_: &Interner<'_>) -> TokenStream {
240240
quote! { ::core::clone::Clone + ::core::fmt::Debug }
@@ -243,7 +243,7 @@ impl Traversable for Visitable {
243243
if noop {
244244
quote! {}
245245
} else {
246-
quote! { ::rustc_middle::ty::noop_if_trivially_traversable!(#bind.visit_with::<#interner>(visitor))?; }
246+
quote! { ::rustc_type_ir::noop_if_trivially_traversable!(#bind.visit_with::<#interner>(visitor))?; }
247247
}
248248
}
249249
fn arm(
@@ -263,7 +263,7 @@ impl Traversable for Visitable {
263263
body: impl ToTokens,
264264
) -> TokenStream {
265265
quote! {
266-
fn visit_with<#traverser: ::rustc_middle::ty::visit::TypeVisitor<#interner>>(
266+
fn visit_with<#traverser: ::rustc_type_ir::visit::TypeVisitor<#interner>>(
267267
&self,
268268
visitor: &mut #traverser
269269
) -> ::core::ops::ControlFlow<#traverser::BreakTy> {
@@ -325,7 +325,7 @@ pub fn traversable_derive<T: Traversable>(
325325
let traversable = T::traversable(&interner);
326326

327327
let skip_traversal =
328-
|t: &dyn ToTokens| parse_quote! { #interner: ::rustc_middle::ty::TriviallyTraverses<#t> };
328+
|t: &dyn ToTokens| parse_quote! { #interner: ::rustc_type_ir::TriviallyTraverses<#t> };
329329

330330
structure.underscore_const(true);
331331
structure.add_bounds(synstructure::AddBounds::None);

compiler/rustc_macros/src/traversable/tests.rs

+20-10
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,28 @@ impl VisitMut for Normalizer {
4949

5050
let n = if i.leading_colon.is_some() && i.segments.len() >= 2 {
5151
let segment = &i.segments[0];
52-
if *segment == parse_quote! { rustc_middle } {
53-
if i.segments.len() >= 3 && i.segments[1] == parse_quote! { ty } {
54-
let segment = &i.segments[2];
55-
if *segment == parse_quote! { fold } || *segment == parse_quote! { visit } {
56-
3
57-
} else {
58-
2
59-
}
60-
} else {
52+
if *segment == parse_quote! { rustc_type_ir } {
53+
let segment = &i.segments[1];
54+
if i.segments.len() > 2 && *segment == parse_quote! { fold }
55+
|| *segment == parse_quote! { visit }
56+
{
57+
2
58+
} else if *segment == parse_quote! { Interner }
59+
|| segment.ident == "TriviallyTraverses"
60+
|| *segment == parse_quote! { noop_if_trivially_traversable }
61+
{
6162
1
63+
} else {
64+
return;
65+
}
66+
} else if *segment == parse_quote! { rustc_middle } {
67+
let segment = &i.segments[1];
68+
if i.segments.len() > 2 && *segment == parse_quote! { ty } {
69+
2
70+
} else {
71+
return;
6272
}
63-
} else if *segment == parse_quote! { core } {
73+
} else if i.segments.len() > 2 && *segment == parse_quote! { core } {
6474
let segment = &i.segments[1];
6575
if *segment == parse_quote! { ops } {
6676
2

compiler/rustc_trait_selection/Cargo.toml

+1
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

+2
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)