@@ -85,6 +85,9 @@ struct LibParseExecutor {
85
85
std::unique_ptr<ASTContext> ctx (
86
86
ASTContext::get (langOpts, typeckOpts, silOpts, searchPathOpts,
87
87
clangOpts, symbolOpts, casOpts, SM, diagEngine));
88
+ auto &eval = ctx->evaluator ;
89
+ registerParseRequestFunctions (eval);
90
+ registerTypeCheckerRequestFunctions (eval);
88
91
89
92
SourceFile::ParsingOptions parseOpts;
90
93
parseOpts |= SourceFile::ParsingFlags::DisablePoundIfEvaluation;
@@ -95,13 +98,9 @@ struct LibParseExecutor {
95
98
SourceFile *SF =
96
99
new (*ctx) SourceFile (*M, SourceFileKind::Library, bufferID, parseOpts);
97
100
98
- Parser parser (bufferID, *SF, /* SILParserState=*/ nullptr );
99
- SmallVector<ASTNode> items;
100
- parser.parseTopLevelItems (items);
101
+ auto items = evaluateOrDefault (eval, ParseSourceFileRequest{SF}, {}).TopLevelItems ;
101
102
102
103
if (opts.contains (ExecuteOptionFlag::Dump)) {
103
- registerParseRequestFunctions (ctx->evaluator );
104
- registerTypeCheckerRequestFunctions (ctx->evaluator );
105
104
for (auto &item : items) {
106
105
item.dump (llvm::outs ());
107
106
}
@@ -161,8 +160,9 @@ struct ASTGenExecutor {
161
160
std::unique_ptr<ASTContext> ctx (
162
161
ASTContext::get (langOpts, typeckOpts, silOpts, searchPathOpts,
163
162
clangOpts, symbolOpts, casOpts, SM, diagEngine));
164
- registerParseRequestFunctions (ctx->evaluator );
165
- registerTypeCheckerRequestFunctions (ctx->evaluator );
163
+ auto &eval = ctx->evaluator ;
164
+ registerParseRequestFunctions (eval);
165
+ registerTypeCheckerRequestFunctions (eval);
166
166
167
167
SourceFile::ParsingOptions parseOpts;
168
168
parseOpts |= SourceFile::ParsingFlags::DisablePoundIfEvaluation;
@@ -173,9 +173,7 @@ struct ASTGenExecutor {
173
173
SourceFile *SF =
174
174
new (*ctx) SourceFile (*M, SourceFileKind::Library, bufferID, parseOpts);
175
175
176
- Parser P (bufferID, *SF, nullptr );
177
- SmallVector<ASTNode> items;
178
- P.parseTopLevelItems (items);
176
+ auto items = evaluateOrDefault (eval, ParseSourceFileRequest{SF}, {}).TopLevelItems ;
179
177
180
178
if (opts.contains (ExecuteOptionFlag::Dump)) {
181
179
for (auto &item : items) {
0 commit comments