Skip to content

Commit ac60dde

Browse files
authored
Merge pull request #59974 from DougGregor/existential-erasure-coercion-configurable-5.7
Make the error for missing existential erasure coercions configurable.
2 parents ed78d00 + 31f86cc commit ac60dde

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

include/swift/Sema/CSFix.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2966,8 +2966,10 @@ class AddExplicitExistentialCoercion final : public ConstraintFix {
29662966
Type ErasedResultType;
29672967

29682968
AddExplicitExistentialCoercion(ConstraintSystem &cs, Type erasedResultTy,
2969-
ConstraintLocator *locator)
2970-
: ConstraintFix(cs, FixKind::AddExplicitExistentialCoercion, locator),
2969+
ConstraintLocator *locator,
2970+
FixBehavior fixBehavior)
2971+
: ConstraintFix(cs, FixKind::AddExplicitExistentialCoercion, locator,
2972+
fixBehavior),
29712973
ErasedResultType(erasedResultTy) {}
29722974

29732975
public:

lib/Sema/CSDiagnostics.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2725,8 +2725,9 @@ class MissingExplicitExistentialCoercion final : public FailureDiagnostic {
27252725
public:
27262726
MissingExplicitExistentialCoercion(const Solution &solution,
27272727
Type erasedResultTy,
2728-
ConstraintLocator *locator)
2729-
: FailureDiagnostic(solution, locator),
2728+
ConstraintLocator *locator,
2729+
FixBehavior fixBehavior)
2730+
: FailureDiagnostic(solution, locator, fixBehavior),
27302731
ErasedResultType(resolveType(erasedResultTy)) {}
27312732

27322733
SourceRange getSourceRange() const override {

lib/Sema/CSFix.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2162,7 +2162,7 @@ IgnoreDefaultExprTypeMismatch::create(ConstraintSystem &cs, Type argType,
21622162
bool AddExplicitExistentialCoercion::diagnose(const Solution &solution,
21632163
bool asNote) const {
21642164
MissingExplicitExistentialCoercion failure(solution, ErasedResultType,
2165-
getLocator());
2165+
getLocator(), diagfixBehavior());
21662166
return failure.diagnose(asNote);
21672167
}
21682168

@@ -2394,8 +2394,9 @@ bool AddExplicitExistentialCoercion::isRequired(
23942394
AddExplicitExistentialCoercion *
23952395
AddExplicitExistentialCoercion::create(ConstraintSystem &cs, Type resultTy,
23962396
ConstraintLocator *locator) {
2397+
FixBehavior fixBehavior = FixBehavior::Error;
23972398
return new (cs.getAllocator())
2398-
AddExplicitExistentialCoercion(cs, resultTy, locator);
2399+
AddExplicitExistentialCoercion(cs, resultTy, locator, fixBehavior);
23992400
}
24002401

24012402
bool RenameConflictingPatternVariables::diagnose(const Solution &solution,

0 commit comments

Comments
 (0)