Skip to content

Commit e583aab

Browse files
committed
[CSGen] Resolve binding pattern before using it
This change makes constraint generation logic consistent with how `PatternBindingEntryRequest::evaluate` handles pattern binding entries.
1 parent d44d264 commit e583aab

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

lib/Sema/CSGen.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3918,8 +3918,15 @@ bool ConstraintSystem::generateConstraints(
39183918

39193919
/// Generate constraints for each pattern binding entry
39203920
for (unsigned index : range(patternBinding->getNumPatternEntries())) {
3921-
// Type check the pattern.
3922-
auto pattern = patternBinding->getPattern(index);
3921+
auto *pattern = TypeChecker::resolvePattern(
3922+
patternBinding->getPattern(index), dc, /*isStmtCondition=*/true);
3923+
3924+
if (!pattern)
3925+
return true;
3926+
3927+
// Type check the pattern. Note use of `forRawPattern` here instead
3928+
// of `forPatternBindingDecl` because resolved `pattern` is not
3929+
// associated with `patternBinding`.
39233930
auto contextualPattern = ContextualPattern::forRawPattern(pattern, dc);
39243931
Type patternType = TypeChecker::typeCheckPattern(contextualPattern);
39253932

0 commit comments

Comments
 (0)