@@ -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
0 commit comments