@@ -66,9 +66,8 @@ TypeResolution::forStructural(DeclContext *dc, TypeResolutionOptions options,
6666 OpenUnboundGenericTypeFn unboundTyOpener,
6767 HandlePlaceholderTypeReprFn placeholderHandler,
6868 OpenPackElementFn packElementOpener) {
69- return TypeResolution (dc, TypeResolutionStage::Structural, options,
70- unboundTyOpener, placeholderHandler,
71- packElementOpener);
69+ return TypeResolution (dc, {}, TypeResolutionStage::Structural, options,
70+ unboundTyOpener, placeholderHandler, packElementOpener);
7271}
7372
7473TypeResolution
@@ -86,18 +85,18 @@ TypeResolution::forInterface(DeclContext *dc, GenericSignature genericSig,
8685 OpenUnboundGenericTypeFn unboundTyOpener,
8786 HandlePlaceholderTypeReprFn placeholderHandler,
8887 OpenPackElementFn packElementOpener) {
89- TypeResolution result (dc, TypeResolutionStage::Interface, options,
90- unboundTyOpener, placeholderHandler,
91- packElementOpener);
92- result.genericSig = genericSig;
93- return result;
88+ return TypeResolution (dc, genericSig, TypeResolutionStage::Interface, options,
89+ unboundTyOpener, placeholderHandler, packElementOpener);
9490}
9591
9692TypeResolution TypeResolution::withOptions (TypeResolutionOptions opts) const {
97- TypeResolution result (dc, stage, opts, unboundTyOpener, placeholderHandler,
98- packElementOpener);
99- result.genericSig = genericSig;
100- return result;
93+ return TypeResolution (dc, genericSig, stage, opts, unboundTyOpener,
94+ placeholderHandler, packElementOpener);
95+ }
96+
97+ TypeResolution TypeResolution::withoutPackElementOpener () const {
98+ return TypeResolution (dc, genericSig, stage, options, unboundTyOpener,
99+ placeholderHandler, {});
101100}
102101
103102ASTContext &TypeResolution::getASTContext () const {
@@ -4548,7 +4547,11 @@ NeverNullType TypeResolver::resolvePackExpansionType(PackExpansionTypeRepr *repr
45484547
45494548 auto elementOptions = options;
45504549 elementOptions |= TypeResolutionFlags::AllowPackReferences;
4551- auto patternType = resolveType (repr->getPatternType (), elementOptions);
4550+
4551+ auto elementResolution =
4552+ resolution.withoutPackElementOpener ().withOptions (elementOptions);
4553+ auto patternType =
4554+ elementResolution.resolveType (repr->getPatternType (), silContext);
45524555 if (patternType->hasError ())
45534556 return ErrorType::get (ctx);
45544557
@@ -4590,6 +4593,7 @@ NeverNullType TypeResolver::resolvePackElement(PackElementTypeRepr *repr,
45904593 TypeResolutionOptions options) {
45914594 auto &ctx = getASTContext ();
45924595 options |= TypeResolutionFlags::FromPackReference;
4596+
45934597 auto packReference = resolveType (repr->getPackType (), options);
45944598
45954599 // If we already failed, don't diagnose again.
0 commit comments