Skip to content

Commit 3a7b558

Browse files
committed
[CS] NFC: Introduce SolutionApplicationTarget::isForInitialization
1 parent 864a4d7 commit 3a7b558

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

include/swift/Sema/ConstraintSystem.h

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,13 +2347,18 @@ class SolutionApplicationTarget {
23472347
expression.convertType = type;
23482348
}
23492349

2350+
/// Whether this target is for an initialization expression and pattern.
2351+
bool isForInitialization() const {
2352+
return kind == Kind::expression &&
2353+
expression.contextualPurpose == CTP_Initialization;
2354+
}
2355+
23502356
/// For a pattern initialization target, retrieve the pattern.
23512357
Pattern *getInitializationPattern() const {
23522358
if (kind == Kind::uninitializedVar)
23532359
return uninitializedVar.declaration.get<Pattern *>();
23542360

2355-
assert(kind == Kind::expression);
2356-
assert(expression.contextualPurpose == CTP_Initialization);
2361+
assert(isForInitialization());
23572362
return expression.pattern;
23582363
}
23592364

@@ -2378,16 +2383,14 @@ class SolutionApplicationTarget {
23782383

23792384
/// Whether this is an initialization for an Optional.Some pattern.
23802385
bool isOptionalSomePatternInit() const {
2381-
return kind == Kind::expression &&
2382-
expression.contextualPurpose == CTP_Initialization &&
2383-
dyn_cast_or_null<OptionalSomePattern>(expression.pattern) &&
2384-
!expression.pattern->isImplicit();
2386+
return isForInitialization() &&
2387+
dyn_cast_or_null<OptionalSomePattern>(expression.pattern) &&
2388+
!expression.pattern->isImplicit();
23852389
}
23862390

23872391
/// Check whether this is an initialization for `async let` pattern.
23882392
bool isAsyncLetInitializer() const {
2389-
if (!(kind == Kind::expression &&
2390-
expression.contextualPurpose == CTP_Initialization))
2393+
if (!isForInitialization())
23912394
return false;
23922395

23932396
if (auto *PBD = getInitializationPatternBindingDecl())
@@ -2411,8 +2414,7 @@ class SolutionApplicationTarget {
24112414
/// first \c wrappedValue argument of an apply expression so the initializer
24122415
/// expression can be turned into a property wrapper generator function.
24132416
bool shouldInjectWrappedValuePlaceholder(ApplyExpr *apply) const {
2414-
if (kind != Kind::expression ||
2415-
expression.contextualPurpose != CTP_Initialization)
2417+
if (!isForInitialization())
24162418
return false;
24172419

24182420
auto *wrappedVar = expression.propertyWrapper.wrappedVar;
@@ -2439,20 +2441,17 @@ class SolutionApplicationTarget {
24392441
/// Retrieve the wrapped variable when initializing a pattern with a
24402442
/// property wrapper.
24412443
VarDecl *getInitializationWrappedVar() const {
2442-
assert(kind == Kind::expression);
2443-
assert(expression.contextualPurpose == CTP_Initialization);
2444+
assert(isForInitialization());
24442445
return expression.propertyWrapper.wrappedVar;
24452446
}
24462447

24472448
PatternBindingDecl *getInitializationPatternBindingDecl() const {
2448-
assert(kind == Kind::expression);
2449-
assert(expression.contextualPurpose == CTP_Initialization);
2449+
assert(isForInitialization());
24502450
return expression.initialization.patternBinding;
24512451
}
24522452

24532453
unsigned getInitializationPatternBindingIndex() const {
2454-
assert(kind == Kind::expression);
2455-
assert(expression.contextualPurpose == CTP_Initialization);
2454+
assert(isForInitialization());
24562455
return expression.initialization.patternBindingIndex;
24572456
}
24582457

lib/Sema/CSGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4577,7 +4577,7 @@ bool ConstraintSystem::generateConstraints(
45774577
}
45784578

45794579
// For an initialization target, generate constraints for the pattern.
4580-
if (target.getExprContextualTypePurpose() == CTP_Initialization &&
4580+
if (target.isForInitialization() &&
45814581
generateInitPatternConstraints(*this, target, expr)) {
45824582
return true;
45834583
}

0 commit comments

Comments
 (0)