Skip to content

Commit bcd6ee9

Browse files
committed
Moved ErrorFinder and ErrorGatherer to .cpp file
1 parent dffa8ec commit bcd6ee9

File tree

2 files changed

+49
-45
lines changed

2 files changed

+49
-45
lines changed

lib/Sema/InstrumenterSupport.cpp

+49
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,55 @@
2020
using namespace swift;
2121
using namespace swift::instrumenter_support;
2222

23+
namespace {
24+
25+
class ErrorGatherer : public DiagnosticConsumer {
26+
private:
27+
bool error = false;
28+
DiagnosticEngine &diags;
29+
30+
public:
31+
ErrorGatherer(DiagnosticEngine &diags) : diags(diags) {
32+
diags.addConsumer(*this);
33+
}
34+
~ErrorGatherer() override { diags.takeConsumers(); }
35+
void handleDiagnostic(SourceManager &SM, SourceLoc Loc,
36+
DiagnosticKind Kind, StringRef Text,
37+
const DiagnosticInfo &Info) override {
38+
if (Kind == swift::DiagnosticKind::Error) {
39+
error = true;
40+
}
41+
llvm::errs() << Text << "\n";
42+
}
43+
bool hadError() { return error; }
44+
};
45+
46+
47+
class ErrorFinder : public ASTWalker {
48+
bool error = false;
49+
50+
public:
51+
ErrorFinder() {}
52+
std::pair<bool, Expr *> walkToExprPre(Expr *E) override {
53+
if (isa<ErrorExpr>(E) || !E->getType() || E->getType()->hasError()) {
54+
error = true;
55+
return {false, E};
56+
}
57+
return {true, E};
58+
}
59+
bool walkToDeclPre(Decl *D) override {
60+
if (ValueDecl *VD = dyn_cast<ValueDecl>(D)) {
61+
if (!VD->hasInterfaceType() || VD->getInterfaceType()->hasError()) {
62+
error = true;
63+
return false;
64+
}
65+
}
66+
return true;
67+
}
68+
bool hadError() { return error; }
69+
};
70+
}
71+
2372
void InstrumenterBase::anchor() {}
2473

2574
bool InstrumenterBase::doTypeCheckImpl(ASTContext &Ctx, DeclContext *DC,

lib/Sema/InstrumenterSupport.h

-45
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,6 @@ class InstrumenterBase {
4444
virtual BraceStmt *transformBraceStmt(BraceStmt *BS,
4545
bool TopLevel = false) = 0;
4646

47-
class ErrorGatherer : public DiagnosticConsumer {
48-
private:
49-
bool error = false;
50-
DiagnosticEngine &diags;
51-
52-
public:
53-
ErrorGatherer(DiagnosticEngine &diags) : diags(diags) {
54-
diags.addConsumer(*this);
55-
}
56-
~ErrorGatherer() override { diags.takeConsumers(); }
57-
void handleDiagnostic(SourceManager &SM, SourceLoc Loc,
58-
DiagnosticKind Kind, StringRef Text,
59-
const DiagnosticInfo &Info) override {
60-
if (Kind == swift::DiagnosticKind::Error) {
61-
error = true;
62-
}
63-
llvm::errs() << Text << "\n";
64-
}
65-
bool hadError() { return error; }
66-
};
67-
6847
class ClosureFinder : public ASTWalker {
6948
private:
7049
InstrumenterBase &I;
@@ -95,30 +74,6 @@ class InstrumenterBase {
9574

9675
ClosureFinder CF;
9776

98-
class ErrorFinder : public ASTWalker {
99-
bool error = false;
100-
101-
public:
102-
ErrorFinder() {}
103-
std::pair<bool, Expr *> walkToExprPre(Expr *E) override {
104-
if (isa<ErrorExpr>(E) || !E->getType() || E->getType()->hasError()) {
105-
error = true;
106-
return {false, E};
107-
}
108-
return {true, E};
109-
}
110-
bool walkToDeclPre(Decl *D) override {
111-
if (ValueDecl *VD = dyn_cast<ValueDecl>(D)) {
112-
if (!VD->hasInterfaceType() || VD->getInterfaceType()->hasError()) {
113-
error = true;
114-
return false;
115-
}
116-
}
117-
return true;
118-
}
119-
bool hadError() { return error; }
120-
};
121-
12277
template <class T>
12378
bool doTypeCheck(ASTContext &Ctx, DeclContext *DC, Added<T *> &parsedExpr) {
12479
Expr *E = *parsedExpr;

0 commit comments

Comments
 (0)