Replace the cycle breaker for pattern bindings

This commit is contained in:
Robert Widmann
2019-10-17 10:52:54 -07:00
parent 198601dbd4
commit 69bd40cafd
5 changed files with 35 additions and 9 deletions

View File

@@ -1735,6 +1735,13 @@ bool PatternBindingDecl::isDefaultInitializable(unsigned i) const {
return false;
}
bool PatternBindingDecl::isComputingPatternBindingEntry(
const VarDecl *vd) const {
unsigned i = getPatternEntryIndexForVarDecl(vd);
return getASTContext().evaluator.hasActiveRequest(
PatternBindingEntryRequest{const_cast<PatternBindingDecl *>(this), i});
}
SourceLoc TopLevelCodeDecl::getStartLoc() const {
return Body->getStartLoc();
}
@@ -2761,7 +2768,7 @@ bool ValueDecl::isRecursiveValidation() const {
if (auto *vd = dyn_cast<VarDecl>(this))
if (auto *pbd = vd->getParentPatternBinding())
if (pbd->isBeingValidated())
if (pbd->isComputingPatternBindingEntry(vd))
return true;
auto *dc = getDeclContext();