Skip to content

Commit 94cb223

Browse files
Merge pull request swiftlang#32765 from AnthonyLatsis/readable-dump
[NFC] AssociatedTypeInference: Improve dumping of an inference solution
2 parents 60be1fd + 42b19b7 commit 94cb223

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

lib/Sema/Constraint.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,9 +383,6 @@ void Constraint::print(llvm::raw_ostream &Out, SourceManager *sm) const {
383383
auto decl = overload.getDecl();
384384
decl->dumpRef(Out);
385385
Out << " : " << decl->getInterfaceType();
386-
if (!sm || !decl->getLoc().isValid()) return;
387-
Out << " at ";
388-
decl->getLoc().print(Out, *sm);
389386
};
390387

391388
switch (overload.getKind()) {

lib/Sema/TypeCheckProtocolInference.cpp

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,26 @@ void InferredAssociatedTypesByWitness::dump(llvm::raw_ostream &out,
7575
}
7676

7777
void InferredTypeWitnessesSolution::dump() const {
78+
const auto numValueWitnesses = ValueWitnesses.size();
7879
llvm::errs() << "Type Witnesses:\n";
7980
for (auto &typeWitness : TypeWitnesses) {
8081
llvm::errs() << " " << typeWitness.first->getName() << " := ";
8182
typeWitness.second.first->print(llvm::errs());
82-
llvm::errs() << " value " << typeWitness.second.second << '\n';
83+
if (typeWitness.second.second == numValueWitnesses) {
84+
llvm::errs() << ", abstract";
85+
} else {
86+
llvm::errs() << ", inferred from $" << typeWitness.second.second;
87+
}
88+
llvm::errs() << '\n';
8389
}
8490
llvm::errs() << "Value Witnesses:\n";
8591
for (unsigned i : indices(ValueWitnesses)) {
86-
auto &valueWitness = ValueWitnesses[i];
87-
llvm::errs() << i << ": " << (Decl*)valueWitness.first
88-
<< ' ' << valueWitness.first->getBaseName() << '\n';
89-
valueWitness.first->getDeclContext()->printContext(llvm::errs());
90-
llvm::errs() << " for " << (Decl*)valueWitness.second
91-
<< ' ' << valueWitness.second->getBaseName() << '\n';
92-
valueWitness.second->getDeclContext()->printContext(llvm::errs());
92+
const auto &valueWitness = ValueWitnesses[i];
93+
llvm::errs() << '$' << i << ":\n ";
94+
valueWitness.first->dumpRef(llvm::errs());
95+
llvm::errs() << " ->\n ";
96+
valueWitness.second->dumpRef(llvm::errs());
97+
llvm::errs() << '\n';
9398
}
9499
}
95100

0 commit comments

Comments
 (0)