[ConstraintSystem] Add requirement kind to conditional conformance requirement locator

This commit is contained in:
Pavel Yaskevich
2019-02-07 13:51:20 -08:00
parent 6754b86507
commit f2abfc547a
3 changed files with 31 additions and 24 deletions

View File

@@ -106,6 +106,25 @@ void ConstraintLocator::dump(SourceManager *sm, raw_ostream &out) {
}
}
auto dumpReqKind = [&out](RequirementKind kind) {
out << " (";
switch (kind) {
case RequirementKind::Conformance:
out << "conformance";
break;
case RequirementKind::Superclass:
out << "superclass";
break;
case RequirementKind::SameType:
out << "same-type";
break;
case RequirementKind::Layout:
out << "layout";
break;
}
out << ")";
};
for (auto elt : getPath()) {
out << " -> ";
switch (elt.getKind()) {
@@ -222,26 +241,12 @@ void ConstraintLocator::dump(SourceManager *sm, raw_ostream &out) {
case ConditionalRequirement:
out << "conditional requirement #" << llvm::utostr(elt.getValue());
dumpReqKind(static_cast<RequirementKind>(elt.getValue2()));
break;
case TypeParameterRequirement: {
out << "type parameter requirement #" << llvm::utostr(elt.getValue())
<< " (";
switch (static_cast<RequirementKind>(elt.getValue2())) {
case RequirementKind::Conformance:
out << "conformance";
break;
case RequirementKind::Superclass:
out << "superclass";
break;
case RequirementKind::SameType:
out << "same-type";
break;
case RequirementKind::Layout:
out << "layout";
break;
}
out << ")";
out << "type parameter requirement #" << llvm::utostr(elt.getValue());
dumpReqKind(static_cast<RequirementKind>(elt.getValue2()));
break;
}