Sema: Accept if #_hasSymbol() conditions in closure contexts.

Resolves rdar://100129165
This commit is contained in:
Allan Shortlidge
2022-09-27 11:20:26 -07:00
parent af276b77f5
commit 034e53ad20
7 changed files with 135 additions and 43 deletions

View File

@@ -4369,10 +4369,15 @@ bool ConstraintSystem::generateConstraints(StmtCondition condition,
continue;
case StmtConditionElement::CK_HasSymbol: {
ASTContext &ctx = getASTContext();
ctx.Diags.diagnose(condElement.getStartLoc(),
diag::has_symbol_unsupported_in_closures);
return true;
Expr *symbolExpr = condElement.getHasSymbolInfo()->getSymbolExpr();
auto target = SolutionApplicationTarget(symbolExpr, dc, CTP_Unused,
Type(), /*isDiscarded=*/false);
if (generateConstraints(target, FreeTypeVariableBinding::Disallow))
return true;
setSolutionApplicationTarget(&condElement, target);
continue;
}
case StmtConditionElement::CK_Boolean: {