[CSFix] Adjust IgnoreInvalidFunctionBuilderBody to return true only if errors are emitted

This commit is contained in:
Pavel Yaskevich
2020-08-17 10:54:02 -07:00
parent b2982fa0e5
commit da6bb3657f

View File

@@ -1558,9 +1558,11 @@ bool IgnoreInvalidFunctionBuilderBody::diagnose(const Solution &solution,
class PreCheckWalker : public ASTWalker {
DeclContext *DC;
DiagnosticTransaction Transaction;
public:
PreCheckWalker(DeclContext *dc) : DC(dc) {}
PreCheckWalker(DeclContext *dc)
: DC(dc), Transaction(dc->getASTContext().Diags) {}
std::pair<bool, Expr *> walkToExprPre(Expr *E) override {
auto hasError = ConstraintSystem::preCheckExpression(
@@ -1576,12 +1578,16 @@ bool IgnoreInvalidFunctionBuilderBody::diagnose(const Solution &solution,
std::pair<bool, Pattern *> walkToPatternPre(Pattern *P) override {
return std::make_pair(false, P);
}
bool diagnosed() const {
return Transaction.hasDiagnostics();
}
};
PreCheckWalker walker(solution.getDC());
S->walk(walker);
return true;
return walker.diagnosed();
}
IgnoreInvalidFunctionBuilderBody *