@@ -250,6 +250,7 @@ class TypeResolutionOptions {
250250 case Context::TypeAliasDecl:
251251 case Context::GenericTypeAliasDecl:
252252 case Context::GenericRequirement:
253+ case Context::ExistentialConstraint:
253254 case Context::MetatypeBase:
254255 return false ;
255256 case Context::None:
@@ -275,6 +276,40 @@ class TypeResolutionOptions {
275276 }
276277 }
277278
279+ // / Whether parametrized protocol types are supported in this context.
280+ bool isParametrizedProtocolSupported () const {
281+ switch (context) {
282+ case Context::Inherited:
283+ case Context::ExtensionBinding:
284+ case Context::GenericRequirement:
285+ return true ;
286+ case Context::None:
287+ case Context::TypeAliasDecl:
288+ case Context::GenericTypeAliasDecl:
289+ case Context::MetatypeBase:
290+ case Context::ExistentialConstraint:
291+ case Context::InExpression:
292+ case Context::ExplicitCastExpr:
293+ case Context::ForEachStmt:
294+ case Context::PatternBindingDecl:
295+ case Context::EditorPlaceholderExpr:
296+ case Context::ClosureExpr:
297+ case Context::FunctionInput:
298+ case Context::VariadicFunctionInput:
299+ case Context::InoutFunctionInput:
300+ case Context::FunctionResult:
301+ case Context::SubscriptDecl:
302+ case Context::EnumElementDecl:
303+ case Context::EnumPatternPayload:
304+ case Context::SameTypeRequirement:
305+ case Context::ProtocolMetatypeBase:
306+ case Context::ImmediateOptionalTypeArgument:
307+ case Context::AbstractFunctionDecl:
308+ case Context::CustomAttr:
309+ return false ;
310+ }
311+ }
312+
278313 // / Determine whether all of the given options are set.
279314 bool contains (TypeResolutionFlags set) const {
280315 return !static_cast <bool >(unsigned (set) & ~unsigned (flags));
0 commit comments