FrontendTool: parse all delayed member decls when we're dumping parse tree or verifying parse diagnostics.

This commit is contained in:
Xi Ge
2018-09-12 19:40:23 -07:00
parent 3f03202ba7
commit a7a06d7ce3
6 changed files with 28 additions and 3 deletions

View File

@@ -925,7 +925,8 @@ SourceFile *CompilerInstance::createSourceFileForMainModule(
return inputFile;
}
void CompilerInstance::performParseOnly(bool EvaluateConditionals) {
void CompilerInstance::performParseOnly(bool EvaluateConditionals,
bool ParseDelayedBodyOnEnd) {
const InputFileKind Kind = Invocation.getInputKind();
ModuleDecl *const MainModule = getMainModule();
Context->LoadedModules[MainModule->getName()] = MainModule;
@@ -947,6 +948,10 @@ void CompilerInstance::performParseOnly(bool EvaluateConditionals) {
}
PersistentParserState PersistentState(getASTContext());
SWIFT_DEFER {
if (ParseDelayedBodyOnEnd)
PersistentState.parseAllDelayedDeclLists();
};
PersistentState.PerformConditionEvaluation = EvaluateConditionals;
// Parse all the library files.
for (auto BufferID : InputSourceCodeBufferIDs) {