mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Sema: Use xmacros to clean up more duplication in CSTrail.{cpp,h}
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user