@@ -2347,13 +2347,18 @@ class SolutionApplicationTarget {
2347
2347
expression.convertType = type;
2348
2348
}
2349
2349
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
+
2350
2356
// / For a pattern initialization target, retrieve the pattern.
2351
2357
Pattern *getInitializationPattern () const {
2352
2358
if (kind == Kind::uninitializedVar)
2353
2359
return uninitializedVar.declaration .get <Pattern *>();
2354
2360
2355
- assert (kind == Kind::expression);
2356
- assert (expression.contextualPurpose == CTP_Initialization);
2361
+ assert (isForInitialization ());
2357
2362
return expression.pattern ;
2358
2363
}
2359
2364
@@ -2378,16 +2383,14 @@ class SolutionApplicationTarget {
2378
2383
2379
2384
// / Whether this is an initialization for an Optional.Some pattern.
2380
2385
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 ();
2385
2389
}
2386
2390
2387
2391
// / Check whether this is an initialization for `async let` pattern.
2388
2392
bool isAsyncLetInitializer () const {
2389
- if (!(kind == Kind::expression &&
2390
- expression.contextualPurpose == CTP_Initialization))
2393
+ if (!isForInitialization ())
2391
2394
return false ;
2392
2395
2393
2396
if (auto *PBD = getInitializationPatternBindingDecl ())
@@ -2411,8 +2414,7 @@ class SolutionApplicationTarget {
2411
2414
// / first \c wrappedValue argument of an apply expression so the initializer
2412
2415
// / expression can be turned into a property wrapper generator function.
2413
2416
bool shouldInjectWrappedValuePlaceholder (ApplyExpr *apply) const {
2414
- if (kind != Kind::expression ||
2415
- expression.contextualPurpose != CTP_Initialization)
2417
+ if (!isForInitialization ())
2416
2418
return false ;
2417
2419
2418
2420
auto *wrappedVar = expression.propertyWrapper .wrappedVar ;
@@ -2439,20 +2441,17 @@ class SolutionApplicationTarget {
2439
2441
// / Retrieve the wrapped variable when initializing a pattern with a
2440
2442
// / property wrapper.
2441
2443
VarDecl *getInitializationWrappedVar () const {
2442
- assert (kind == Kind::expression);
2443
- assert (expression.contextualPurpose == CTP_Initialization);
2444
+ assert (isForInitialization ());
2444
2445
return expression.propertyWrapper .wrappedVar ;
2445
2446
}
2446
2447
2447
2448
PatternBindingDecl *getInitializationPatternBindingDecl () const {
2448
- assert (kind == Kind::expression);
2449
- assert (expression.contextualPurpose == CTP_Initialization);
2449
+ assert (isForInitialization ());
2450
2450
return expression.initialization .patternBinding ;
2451
2451
}
2452
2452
2453
2453
unsigned getInitializationPatternBindingIndex () const {
2454
- assert (kind == Kind::expression);
2455
- assert (expression.contextualPurpose == CTP_Initialization);
2454
+ assert (isForInitialization ());
2456
2455
return expression.initialization .patternBindingIndex ;
2457
2456
}
2458
2457
0 commit comments