Sema: Use xmacros to clean up more duplication in CSTrail.{cpp,h}

This commit is contained in:
Slava Pestov
2024-10-08 16:50:49 -04:00
parent 5fdc1a81b8
commit bdab82a192
3 changed files with 56 additions and 135 deletions

View File

@@ -80,6 +80,25 @@ SolverTrail::~SolverTrail() {
result.TheConstraint.Constraint = constraint; \
return result; \
}
#define GRAPH_NODE_CHANGE(Name) \
SolverTrail::Change \
SolverTrail::Change::Name(TypeVariableType *typeVar, \
Constraint *constraint) { \
Change result; \
result.Kind = ChangeKind::Name; \
result.TheConstraint.TypeVar = typeVar; \
result.TheConstraint.Constraint = constraint; \
return result; \
}
#define SCORE_CHANGE(Name) \
SolverTrail::Change \
SolverTrail::Change::Name(ScoreKind kind, unsigned value) { \
ASSERT(value <= 0xffffff && "value must fit in 24 bits"); \
Change result; \
result.Kind = ChangeKind::Name; \
result.Options = unsigned(kind) | (value << 8); \
return result; \
}
#include "swift/Sema/CSTrail.def"
SolverTrail::Change
@@ -90,26 +109,6 @@ SolverTrail::Change::AddedTypeVariable(TypeVariableType *typeVar) {
return result;
}
SolverTrail::Change
SolverTrail::Change::AddedConstraint(TypeVariableType *typeVar,
Constraint *constraint) {
Change result;
result.Kind = ChangeKind::AddedConstraint;
result.TheConstraint.TypeVar = typeVar;
result.TheConstraint.Constraint = constraint;
return result;
}
SolverTrail::Change
SolverTrail::Change::RemovedConstraint(TypeVariableType *typeVar,
Constraint *constraint) {
Change result;
result.Kind = ChangeKind::RemovedConstraint;
result.TheConstraint.TypeVar = typeVar;
result.TheConstraint.Constraint = constraint;
return result;
}
SolverTrail::Change
SolverTrail::Change::ExtendedEquivalenceClass(TypeVariableType *typeVar,
unsigned prevSize) {
@@ -130,26 +129,6 @@ SolverTrail::Change::RelatedTypeVariables(TypeVariableType *typeVar,
return result;
}
SolverTrail::Change
SolverTrail::Change::InferredBindings(TypeVariableType *typeVar,
Constraint *constraint) {
Change result;
result.Kind = ChangeKind::InferredBindings;
result.TheConstraint.TypeVar = typeVar;
result.TheConstraint.Constraint = constraint;
return result;
}
SolverTrail::Change
SolverTrail::Change::RetractedBindings(TypeVariableType *typeVar,
Constraint *constraint) {
Change result;
result.Kind = ChangeKind::RetractedBindings;
result.TheConstraint.TypeVar = typeVar;
result.TheConstraint.Constraint = constraint;
return result;
}
SolverTrail::Change
SolverTrail::Change::UpdatedTypeVariable(
TypeVariableType *typeVar,
@@ -317,26 +296,6 @@ SolverTrail::Change::RecordedKeyPath(KeyPathExpr *expr) {
return result;
}
SolverTrail::Change
SolverTrail::Change::IncreasedScore(ScoreKind kind, unsigned value) {
ASSERT(value <= 0xffffff && "value must fit in 24 bits");
Change result;
result.Kind = ChangeKind::IncreasedScore;
result.Options = unsigned(kind) | (value << 8);
return result;
}
SolverTrail::Change
SolverTrail::Change::DecreasedScore(ScoreKind kind, unsigned value) {
ASSERT(value <= 0xffffff && "value must fit in 24 bits");
Change result;
result.Kind = ChangeKind::DecreasedScore;
result.Options = unsigned(kind) | (value << 8);
return result;
}
SyntacticElementTargetKey
SolverTrail::Change::getSyntacticElementTargetKey() const {
ASSERT(Kind == ChangeKind::RecordedTarget);
@@ -562,6 +521,21 @@ void SolverTrail::Change::dump(llvm::raw_ostream &out,
indent + 2); \
out << ")\n"; \
break;
#define GRAPH_NODE_CHANGE(Name) \
case ChangeKind::Name: \
out << "(" << #Name << " "; \
TheConstraint.Constraint->print(out, &cs.getASTContext().SourceMgr, \
indent + 2); \
out << " on type variable "; \
TheConstraint.TypeVar->print(out, PO); \
out << ")\n"; \
break;
#define SCORE_CHANGE(Name) \
case ChangeKind::Name: \
out << "(" << #Name << " "; \
out << Score::getNameFor(ScoreKind(Options & 0xff)); \
out << " by " << (Options >> 8) << ")\n"; \
break;
#include "swift/Sema/CSTrail.def"
case ChangeKind::AddedTypeVariable:
@@ -570,24 +544,6 @@ void SolverTrail::Change::dump(llvm::raw_ostream &out,
out << ")\n";
break;
case ChangeKind::AddedConstraint:
out << "(AddedConstraint ";
TheConstraint.Constraint->print(out, &cs.getASTContext().SourceMgr,
indent + 2);
out << " to type variable ";
TheConstraint.TypeVar->print(out, PO);
out << ")\n";
break;
case ChangeKind::RemovedConstraint:
out << "(RemovedConstraint ";
TheConstraint.Constraint->print(out, &cs.getASTContext().SourceMgr,
indent + 2);
out << " from type variable ";
TheConstraint.TypeVar->print(out, PO);
out << ")\n";
break;
case ChangeKind::ExtendedEquivalenceClass: {
out << "(ExtendedEquivalenceClass ";
EquivClass.TypeVar->print(out, PO);
@@ -603,24 +559,6 @@ void SolverTrail::Change::dump(llvm::raw_ostream &out,
out << ")\n";
break;
case ChangeKind::InferredBindings:
out << "(InferredBindings from ";
TheConstraint.Constraint->print(out, &cs.getASTContext().SourceMgr,
indent + 2);
out << " for type variable ";
TheConstraint.TypeVar->print(out, PO);
out << ")\n";
break;
case ChangeKind::RetractedBindings:
out << "(RetractedBindings from ";
TheConstraint.Constraint->print(out, &cs.getASTContext().SourceMgr,
indent + 2);
out << " for type variable ";
TheConstraint.TypeVar->print(out, PO);
out << ")\n";
break;
case ChangeKind::UpdatedTypeVariable: {
out << "(UpdatedTypeVariable ";
Update.TypeVar->print(out, PO);
@@ -736,18 +674,6 @@ void SolverTrail::Change::dump(llvm::raw_ostream &out,
simple_display(out, KeyPath.Expr);
out << ")\n";
break;
case ChangeKind::IncreasedScore:
out << "(IncreasedScore ";
out << Score::getNameFor(ScoreKind(Options & 0xff));
out << " by " << (Options >> 8) << ")\n";
break;
case ChangeKind::DecreasedScore:
out << "(DecreasedScore ";
out << Score::getNameFor(ScoreKind(Options & 0xff));
out << " by " << (Options >> 8) << ")\n";
break;
}
}