Skip to content

Commit 83cc918

Browse files
authored
Merge pull request #39031 from xedin/fix-uninit-var-pattern-binding
[ConstraintSystem] Store pattern binding associated with uninitialize…
2 parents 073c6f1 + 609ca72 commit 83cc918

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

include/swift/Sema/ConstraintSystem.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,6 +1632,7 @@ class SolutionApplicationTarget {
16321632
} caseLabelItem;
16331633

16341634
struct {
1635+
PatternBindingDecl *binding;
16351636
/// Index into pattern binding declaration (if any).
16361637
unsigned index;
16371638
PointerUnion<VarDecl *, Pattern *> declaration;
@@ -1688,10 +1689,11 @@ class SolutionApplicationTarget {
16881689
SolutionApplicationTarget(VarDecl *uninitializedWrappedVar)
16891690
: kind(Kind::uninitializedVar) {
16901691
if (auto *PDB = uninitializedWrappedVar->getParentPatternBinding()) {
1691-
patternBinding = PDB;
1692+
uninitializedVar.binding = PDB;
16921693
uninitializedVar.index =
16931694
PDB->getPatternEntryIndexForVarDecl(uninitializedWrappedVar);
16941695
} else {
1696+
uninitializedVar.binding = nullptr;
16951697
uninitializedVar.index = 0;
16961698
}
16971699

@@ -1702,9 +1704,7 @@ class SolutionApplicationTarget {
17021704
SolutionApplicationTarget(PatternBindingDecl *binding, unsigned index,
17031705
Pattern *var, Type patternTy)
17041706
: kind(Kind::uninitializedVar) {
1705-
assert(patternBinding);
1706-
1707-
patternBinding = binding;
1707+
uninitializedVar.binding = binding;
17081708
uninitializedVar.index = index;
17091709
uninitializedVar.declaration = var;
17101710
uninitializedVar.type = patternTy;
@@ -1781,7 +1781,7 @@ class SolutionApplicationTarget {
17811781
uninitializedVar.declaration.dyn_cast<VarDecl *>())
17821782
return wrappedVar->getDeclContext();
17831783

1784-
return patternBinding->getInitContext(uninitializedVar.index);
1784+
return uninitializedVar.binding->getInitContext(uninitializedVar.index);
17851785
}
17861786
}
17871787
llvm_unreachable("invalid decl context type");
@@ -2072,7 +2072,7 @@ class SolutionApplicationTarget {
20722072
return nullptr;
20732073

20742074
case Kind::uninitializedVar:
2075-
return patternBinding;
2075+
return uninitializedVar.binding;
20762076
}
20772077
llvm_unreachable("invalid case label type");
20782078
}

0 commit comments

Comments
 (0)