Skip to content

Commit f0579eb

Browse files
Omit trailing semicolon from trivial Unique solution
1 parent 7301c6a commit f0579eb

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

chalk-solve/src/solve.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,12 +159,20 @@ pub struct SolutionDisplay<'a, I: Interner> {
159159
}
160160

161161
impl<'a, I: Interner> fmt::Display for SolutionDisplay<'a, I> {
162+
#[rustfmt::skip]
162163
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
163164
let SolutionDisplay { solution, interner } = self;
164165
match solution {
165-
Solution::Unique(constrained) => {
166-
write!(f, "Unique; {}", constrained.display(*interner))
167-
}
166+
// If a `Unique` solution has no associated data, omit the trailing semicolon.
167+
// This makes blessed test output nicer to read.
168+
Solution::Unique(Canonical { binders, value: ConstrainedSubst { subst, constraints } } )
169+
if interner.constraints_data(constraints.interned()).is_empty()
170+
&& interner.substitution_data(subst.interned()).is_empty()
171+
&& interner.canonical_var_kinds_data(binders.interned()).is_empty()
172+
=> write!(f, "Unique"),
173+
174+
Solution::Unique(constrained) => write!(f, "Unique; {}", constrained.display(*interner)),
175+
168176
Solution::Ambig(Guidance::Definite(subst)) => write!(
169177
f,
170178
"Ambiguous; definite substitution {}",

0 commit comments

Comments
 (0)