Skip to content

Commit 5ef198d

Browse files
committed
Sema: Better debug output in associated type inference
1 parent 983dc25 commit 5ef198d

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

lib/Sema/AssociatedTypeInference.cpp

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -751,30 +751,35 @@ struct InferredTypeWitnessesSolution {
751751
#ifndef NDEBUG
752752
LLVM_ATTRIBUTE_USED
753753
#endif
754-
void dump() const;
754+
void dump(llvm::raw_ostream &out) const;
755755
};
756756

757-
void InferredTypeWitnessesSolution::dump() const {
757+
void InferredTypeWitnessesSolution::dump(llvm::raw_ostream &out) const {
758+
out << "Value witnesses in protocol extensions: "
759+
<< NumValueWitnessesInProtocolExtensions << "\n";
758760
const auto numValueWitnesses = ValueWitnesses.size();
759-
llvm::errs() << "Type Witnesses:\n";
761+
out << "Type Witnesses:\n";
760762
for (auto &typeWitness : TypeWitnesses) {
761-
llvm::errs() << " " << typeWitness.first->getName() << " := ";
762-
typeWitness.second.first->print(llvm::errs());
763+
out << " " << typeWitness.first->getName() << " := ";
764+
typeWitness.second.first->print(out);
763765
if (typeWitness.second.second == numValueWitnesses) {
764-
llvm::errs() << ", abstract";
766+
out << ", abstract";
765767
} else {
766-
llvm::errs() << ", inferred from $" << typeWitness.second.second;
768+
out << ", inferred from $" << typeWitness.second.second;
767769
}
768-
llvm::errs() << '\n';
770+
out << '\n';
769771
}
770-
llvm::errs() << "Value Witnesses:\n";
772+
out << "Value Witnesses:\n";
771773
for (unsigned i : indices(ValueWitnesses)) {
772774
const auto &valueWitness = ValueWitnesses[i];
773-
llvm::errs() << '$' << i << ":\n ";
774-
valueWitness.first->dumpRef(llvm::errs());
775-
llvm::errs() << " ->\n ";
776-
valueWitness.second->dumpRef(llvm::errs());
777-
llvm::errs() << '\n';
775+
out << '$' << i << ":\n ";
776+
valueWitness.first->dumpRef(out);
777+
out << " ->\n ";
778+
if (valueWitness.second)
779+
valueWitness.second->dumpRef(out);
780+
else
781+
out << "<skipped>";
782+
out << '\n';
778783
}
779784
}
780785

@@ -2929,18 +2934,12 @@ void AssociatedTypeInference::findSolutions(
29292934

29302935
for (auto solution : solutions) {
29312936
LLVM_DEBUG(llvm::dbgs() << "=== Valid solution:\n";);
2932-
for (auto pair : solution.TypeWitnesses) {
2933-
LLVM_DEBUG(llvm::dbgs() << pair.first->getName() << " := "
2934-
<< pair.second.first << "\n";);
2935-
}
2937+
LLVM_DEBUG(solution.dump(llvm::dbgs()));
29362938
}
29372939

29382940
for (auto solution : nonViableSolutions) {
29392941
LLVM_DEBUG(llvm::dbgs() << "=== Invalid solution:\n";);
2940-
for (auto pair : solution.TypeWitnesses) {
2941-
LLVM_DEBUG(llvm::dbgs() << pair.first->getName() << " := "
2942-
<< pair.second.first << "\n";);
2943-
}
2942+
LLVM_DEBUG(solution.dump(llvm::dbgs()));
29442943
}
29452944
}
29462945

0 commit comments

Comments
 (0)