Skip to content

Commit 2e7b88b

Browse files
committed
Nicer display of projections in Chalk logs
1 parent 7886513 commit 2e7b88b

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ra_hir_ty/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ authors = ["rust-analyzer developers"]
88
doctest = false
99

1010
[dependencies]
11+
itertools = "0.9.0"
1112
arrayvec = "0.5.1"
1213
smallvec = "1.2.0"
1314
ena = "0.13.1"

crates/ra_hir_ty/src/traits/chalk/tls.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
use std::fmt;
33

44
use chalk_ir::{AliasTy, Goal, Goals, Lifetime, Parameter, ProgramClauseImplication, TypeName};
5+
use itertools::Itertools;
56

67
use super::{from_chalk, Interner};
78
use crate::{db::HirDatabase, CallableDef, TypeCtor};
@@ -133,14 +134,15 @@ impl DebugContext<'_> {
133134
};
134135
let trait_data = self.0.trait_data(trait_);
135136
let params = alias.substitution.parameters(&Interner);
136-
write!(
137-
fmt,
138-
"<{:?} as {}<{:?}>>::{}",
139-
&params[0],
140-
trait_data.name,
141-
&params[1..],
142-
type_alias_data.name
143-
)
137+
write!(fmt, "<{:?} as {}", &params[0], trait_data.name,)?;
138+
if params.len() > 1 {
139+
write!(
140+
fmt,
141+
"<{}>",
142+
&params[1..].iter().format_with(", ", |x, f| f(&format_args!("{:?}", x))),
143+
)?;
144+
}
145+
write!(fmt, ">::{}", type_alias_data.name)
144146
}
145147

146148
pub fn debug_ty(

0 commit comments

Comments
 (0)