Skip to content

Commit 944c3b5

Browse files
authored
Merge pull request #59915 from ahoppen/pr/solutionapplicationtarget-dump
[Sema] Add dump function to dump SolutionApplicationTargetsKey
2 parents d128d81 + da07d2d commit 944c3b5

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

include/swift/Sema/ConstraintSystem.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,9 @@ class SolutionApplicationTargetsKey {
12021202
}
12031203
llvm_unreachable("invalid statement kind");
12041204
}
1205+
1206+
SWIFT_DEBUG_DUMP;
1207+
void dump(raw_ostream &OS) const LLVM_ATTRIBUTE_USED;
12051208
};
12061209

12071210
/// Describes the arguments to which a parameter binds.

lib/Sema/ConstraintSystem.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6060,6 +6060,50 @@ ValueDecl *ConstraintSystem::findResolvedMemberRef(ConstraintLocator *locator) {
60606060
return choice.getDecl();
60616061
}
60626062

6063+
void SolutionApplicationTargetsKey::dump() const { dump(llvm::errs()); }
6064+
6065+
void SolutionApplicationTargetsKey::dump(raw_ostream &OS) const {
6066+
switch (kind) {
6067+
case Kind::empty:
6068+
OS << "<empty>\n";
6069+
return;
6070+
6071+
case Kind::tombstone:
6072+
OS << "<tombstone>\n";
6073+
return;
6074+
6075+
case Kind::stmtCondElement:
6076+
// TODO: Implement a proper dump function for StmtConditionElement
6077+
OS << "statement condition element\n";
6078+
return;
6079+
6080+
case Kind::expr:
6081+
case Kind::closure:
6082+
storage.expr->dump(OS);
6083+
return;
6084+
6085+
case Kind::stmt:
6086+
storage.stmt->dump(OS);
6087+
return;
6088+
6089+
case Kind::pattern:
6090+
storage.pattern->dump(OS);
6091+
return;
6092+
6093+
case Kind::patternBindingEntry:
6094+
OS << "pattern binding entry " << storage.patternBindingEntry.index
6095+
<< " in\n";
6096+
storage.patternBindingEntry.patternBinding->dump(OS);
6097+
return;
6098+
6099+
case Kind::varDecl:
6100+
storage.varDecl->dump(OS);
6101+
return;
6102+
6103+
}
6104+
llvm_unreachable("invalid statement kind");
6105+
}
6106+
60636107
SolutionApplicationTarget::SolutionApplicationTarget(
60646108
Expr *expr, DeclContext *dc, ContextualTypePurpose contextualPurpose,
60656109
TypeLoc convertType, bool isDiscarded) {

0 commit comments

Comments
 (0)