@@ -298,6 +298,10 @@ enum class FixKind : uint8_t {
298298 // / Ignore `ErrorExpr` or `ErrorType` during pre-check.
299299 IgnoreInvalidASTNode,
300300
301+ // / Ignore a named pattern whose type we couldn't infer. This issue should
302+ // / already have been diagnosed elsewhere.
303+ IgnoreInvalidNamedPattern,
304+
301305 // / Resolve type of `nil` by providing a contextual type.
302306 SpecifyContextualTypeForNil,
303307
@@ -2742,6 +2746,31 @@ class IgnoreInvalidASTNode final : public ConstraintFix {
27422746 }
27432747};
27442748
2749+ class IgnoreInvalidNamedPattern final : public ConstraintFix {
2750+ IgnoreInvalidNamedPattern (ConstraintSystem &cs, NamedPattern *pattern,
2751+ ConstraintLocator *locator)
2752+ : ConstraintFix(cs, FixKind::IgnoreInvalidNamedPattern, locator) {}
2753+
2754+ public:
2755+ std::string getName () const override {
2756+ return " specify type for pattern match" ;
2757+ }
2758+
2759+ bool diagnose (const Solution &solution, bool asNote = false ) const override ;
2760+
2761+ bool diagnoseForAmbiguity (CommonFixesArray commonFixes) const override {
2762+ return diagnose (*commonFixes.front ().first );
2763+ }
2764+
2765+ static IgnoreInvalidNamedPattern *create (ConstraintSystem &cs,
2766+ NamedPattern *pattern,
2767+ ConstraintLocator *locator);
2768+
2769+ static bool classof (ConstraintFix *fix) {
2770+ return fix->getKind () == FixKind::IgnoreInvalidNamedPattern;
2771+ }
2772+ };
2773+
27452774class SpecifyContextualTypeForNil final : public ConstraintFix {
27462775 SpecifyContextualTypeForNil (ConstraintSystem &cs,
27472776 ConstraintLocator *locator)
0 commit comments