Skip to content

Commit

Permalink
Rollup merge of rust-lang#115873 - BoxyUwU:tykind_adt_debug, r=oli-obk
Browse files Browse the repository at this point in the history
Make `TyKind::Adt`'s `Debug` impl be more pretty

Currently `{:?}` on `Ty` for a `TyKind::Adt` would print as `Adt(Foo, [])`. This PR changes it to be `Foo` when there are no generics or `Foo<T>`/`Foo<T, U>` when there _are_ generics. Example from debug log:
`├─0ms DEBUG rustc_hir_analysis::astconv return=Bar<T/#0, U/#1>`

I should have done this in my initial PR for a prettier TyKind: Debug impl but I thought I would need to be accessing generics_of to figure out where in the "path" the generics would have to go??? but no, adts literally only have a single place the generics can go (on the end). Feel a bit silly about this :)

r? `@oli-obk`
  • Loading branch information
matthiaskrgr authored Sep 18, 2023
2 parents 0eec5e3 + b2bf4b6 commit 48c6051
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 107 deletions.
1 change: 1 addition & 0 deletions compiler/rustc_middle/src/ty/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ use std::ops::{Bound, Deref};
impl<'tcx> Interner for TyCtxt<'tcx> {
type AdtDef = ty::AdtDef<'tcx>;
type GenericArgsRef = ty::GenericArgsRef<'tcx>;
type GenericArg = ty::GenericArg<'tcx>;
type DefId = DefId;
type Binder<T> = Binder<'tcx, T>;
type Ty = Ty<'tcx>;
Expand Down
7 changes: 6 additions & 1 deletion compiler/rustc_type_ir/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,12 @@ pub trait HashStableContext {}

pub trait Interner: Sized {
type AdtDef: Clone + Debug + Hash + Ord;
type GenericArgsRef: Clone + DebugWithInfcx<Self> + Hash + Ord;
type GenericArgsRef: Clone
+ DebugWithInfcx<Self>
+ Hash
+ Ord
+ IntoIterator<Item = Self::GenericArg>;
type GenericArg: Clone + DebugWithInfcx<Self> + Hash + Ord;
type DefId: Clone + Debug + Hash + Ord;
type Binder<T>;
type Ty: Clone + DebugWithInfcx<Self> + Hash + Ord;
Expand Down
16 changes: 15 additions & 1 deletion compiler/rustc_type_ir/src/sty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -517,7 +517,21 @@ impl<I: Interner> DebugWithInfcx<I> for TyKind<I> {
Int(i) => write!(f, "{i:?}"),
Uint(u) => write!(f, "{u:?}"),
Float(float) => write!(f, "{float:?}"),
Adt(d, s) => f.debug_tuple_field2_finish("Adt", d, &this.wrap(s)),
Adt(d, s) => {
write!(f, "{d:?}")?;
let mut s = s.clone().into_iter();
let first = s.next();
match first {
Some(first) => write!(f, "<{:?}", first)?,
None => return Ok(()),
};

for arg in s {
write!(f, ", {:?}", arg)?;
}

write!(f, ">")
}
Foreign(d) => f.debug_tuple_field1_finish("Foreign", d),
Str => write!(f, "str"),
Array(t, c) => write!(f, "[{:?}; {:?}]", &this.wrap(t), &this.wrap(c)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
/* generator_layout = GeneratorLayout {
field_tys: {
_0: GeneratorSavedTy {
ty: Adt(
std::string::String,
[
],
),
ty: std::string::String,
source_info: SourceInfo {
span: $DIR/generator_drop_cleanup.rs:11:13: 11:15 (#0),
scope: scope[0],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
/* generator_layout = GeneratorLayout {
field_tys: {
_0: GeneratorSavedTy {
ty: Adt(
std::string::String,
[
],
),
ty: std::string::String,
source_info: SourceInfo {
span: $DIR/generator_drop_cleanup.rs:11:13: 11:15 (#0),
scope: scope[0],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
/* generator_layout = GeneratorLayout {
field_tys: {
_0: GeneratorSavedTy {
ty: Adt(
HasDrop,
[
],
),
ty: HasDrop,
source_info: SourceInfo {
span: $DIR/generator_tiny.rs:20:13: 20:15 (#0),
scope: scope[0],
Expand Down
96 changes: 16 additions & 80 deletions tests/ui/thir-print/thir-flat-const-variant.stdout
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
DefId(0:8 ~ thir_flat_const_variant[1f54]::{impl#0}::BAR1):
Thir {
body_type: Const(
Adt(
Foo,
[
],
),
Foo,
),
arms: [],
blocks: [],
Expand Down Expand Up @@ -50,11 +46,7 @@ Thir {
base: None,
},
),
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -68,11 +60,7 @@ Thir {
),
value: e2,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -84,11 +72,7 @@ Thir {
lint_level: Inherited,
value: e3,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -102,11 +86,7 @@ Thir {
DefId(0:9 ~ thir_flat_const_variant[1f54]::{impl#0}::BAR2):
Thir {
body_type: Const(
Adt(
Foo,
[
],
),
Foo,
),
arms: [],
blocks: [],
Expand Down Expand Up @@ -151,11 +131,7 @@ Thir {
base: None,
},
),
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -169,11 +145,7 @@ Thir {
),
value: e2,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -185,11 +157,7 @@ Thir {
lint_level: Inherited,
value: e3,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -203,11 +171,7 @@ Thir {
DefId(0:10 ~ thir_flat_const_variant[1f54]::{impl#0}::BAR3):
Thir {
body_type: Const(
Adt(
Foo,
[
],
),
Foo,
),
arms: [],
blocks: [],
Expand Down Expand Up @@ -252,11 +216,7 @@ Thir {
base: None,
},
),
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -270,11 +230,7 @@ Thir {
),
value: e2,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -286,11 +242,7 @@ Thir {
lint_level: Inherited,
value: e3,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -304,11 +256,7 @@ Thir {
DefId(0:11 ~ thir_flat_const_variant[1f54]::{impl#0}::BAR4):
Thir {
body_type: Const(
Adt(
Foo,
[
],
),
Foo,
),
arms: [],
blocks: [],
Expand Down Expand Up @@ -353,11 +301,7 @@ Thir {
base: None,
},
),
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -371,11 +315,7 @@ Thir {
),
value: e2,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand All @@ -387,11 +327,7 @@ Thir {
lint_level: Inherited,
value: e3,
},
ty: Adt(
Foo,
[
],
),
ty: Foo,
temp_lifetime: Some(
Node(3),
),
Expand Down
20 changes: 10 additions & 10 deletions tests/ui/thir-print/thir-tree-match.stdout
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
DefId(0:16 ~ thir_tree_match[fcf8]::has_match):
params: [
Param {
ty: Adt(Foo, [])
ty: Foo
ty_span: Some($DIR/thir-tree-match.rs:15:19: 15:22 (#0))
self_kind: None
hir_id: Some(HirId(DefId(0:16 ~ thir_tree_match[fcf8]::has_match).1))
param: Some(
Pat: {
ty: Adt(Foo, [])
ty: Foo
span: $DIR/thir-tree-match.rs:15:14: 15:17 (#0)
kind: PatKind {
Binding {
mutability: Not
name: "foo"
mode: ByValue
var: LocalVarId(HirId(DefId(0:16 ~ thir_tree_match[fcf8]::has_match).2))
ty: Adt(Foo, [])
ty: Foo
is_primary: true
subpattern: None
}
Expand Down Expand Up @@ -73,7 +73,7 @@ body:
Match {
scrutinee:
Expr {
ty: Adt(Foo, [])
ty: Foo
temp_lifetime: Some(Node(26))
span: $DIR/thir-tree-match.rs:16:11: 16:14 (#0)
kind:
Expand All @@ -82,7 +82,7 @@ body:
lint_level: Explicit(HirId(DefId(0:16 ~ thir_tree_match[fcf8]::has_match).4))
value:
Expr {
ty: Adt(Foo, [])
ty: Foo
temp_lifetime: Some(Node(26))
span: $DIR/thir-tree-match.rs:16:11: 16:14 (#0)
kind:
Expand All @@ -96,7 +96,7 @@ body:
Arm {
pattern:
Pat: {
ty: Adt(Foo, [])
ty: Foo
span: $DIR/thir-tree-match.rs:17:9: 17:32 (#0)
kind: PatKind {
Variant {
Expand All @@ -110,7 +110,7 @@ body:
variant_index: 0
subpatterns: [
Pat: {
ty: Adt(Bar, [])
ty: Bar
span: $DIR/thir-tree-match.rs:17:21: 17:31 (#0)
kind: PatKind {
Variant {
Expand Down Expand Up @@ -169,7 +169,7 @@ body:
Arm {
pattern:
Pat: {
ty: Adt(Foo, [])
ty: Foo
span: $DIR/thir-tree-match.rs:18:9: 18:23 (#0)
kind: PatKind {
Variant {
Expand All @@ -183,7 +183,7 @@ body:
variant_index: 0
subpatterns: [
Pat: {
ty: Adt(Bar, [])
ty: Bar
span: $DIR/thir-tree-match.rs:18:21: 18:22 (#0)
kind: PatKind {
Wild
Expand Down Expand Up @@ -232,7 +232,7 @@ body:
Arm {
pattern:
Pat: {
ty: Adt(Foo, [])
ty: Foo
span: $DIR/thir-tree-match.rs:19:9: 19:20 (#0)
kind: PatKind {
Variant {
Expand Down

0 comments on commit 48c6051

Please sign in to comment.