@@ -751,30 +751,35 @@ struct InferredTypeWitnessesSolution {
751
751
#ifndef NDEBUG
752
752
LLVM_ATTRIBUTE_USED
753
753
#endif
754
- void dump () const ;
754
+ void dump (llvm::raw_ostream &out ) const ;
755
755
};
756
756
757
- void InferredTypeWitnessesSolution::dump () const {
757
+ void InferredTypeWitnessesSolution::dump (llvm::raw_ostream &out) const {
758
+ out << " Value witnesses in protocol extensions: "
759
+ << NumValueWitnessesInProtocolExtensions << " \n " ;
758
760
const auto numValueWitnesses = ValueWitnesses.size ();
759
- llvm::errs () << " Type Witnesses:\n " ;
761
+ out << " Type Witnesses:\n " ;
760
762
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 );
763
765
if (typeWitness.second .second == numValueWitnesses) {
764
- llvm::errs () << " , abstract" ;
766
+ out << " , abstract" ;
765
767
} else {
766
- llvm::errs () << " , inferred from $" << typeWitness.second .second ;
768
+ out << " , inferred from $" << typeWitness.second .second ;
767
769
}
768
- llvm::errs () << ' \n ' ;
770
+ out << ' \n ' ;
769
771
}
770
- llvm::errs () << " Value Witnesses:\n " ;
772
+ out << " Value Witnesses:\n " ;
771
773
for (unsigned i : indices (ValueWitnesses)) {
772
774
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 ' ;
778
783
}
779
784
}
780
785
@@ -2929,18 +2934,12 @@ void AssociatedTypeInference::findSolutions(
2929
2934
2930
2935
for (auto solution : solutions) {
2931
2936
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 ()));
2936
2938
}
2937
2939
2938
2940
for (auto solution : nonViableSolutions) {
2939
2941
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 ()));
2944
2943
}
2945
2944
}
2946
2945
0 commit comments