Pull out computeTypeCheckingOptions.

This commit is contained in:
David Ungar
2017-08-27 18:42:41 -07:00
parent 36a490597f
commit 0a95f3f725
2 changed files with 21 additions and 15 deletions

View File

@@ -484,21 +484,8 @@ void CompilerInstance::performSema() {
if (hadLoadError)
return;
// Compute the options we want to use for type checking.
OptionSet<TypeCheckingFlags> TypeCheckOptions;
if (PrimaryBufferID == NO_SUCH_BUFFER) {
TypeCheckOptions |= TypeCheckingFlags::DelayWholeModuleChecking;
}
if (options.DebugTimeFunctionBodies) {
TypeCheckOptions |= TypeCheckingFlags::DebugTimeFunctionBodies;
}
if (options.actionIsImmediate()) {
TypeCheckOptions |= TypeCheckingFlags::ForImmediateMode;
}
if (options.DebugTimeExpressionTypeChecking) {
TypeCheckOptions |= TypeCheckingFlags::DebugTimeExpressions;
}
OptionSet<TypeCheckingFlags> TypeCheckOptions = computeTypeCheckingOptions(options);
// Parse the main file last.
if (MainBufferID != NO_SUCH_BUFFER) {
parseTheMainFile(PersistentState, DelayedCB.get(), TypeCheckOptions, options);
@@ -522,6 +509,23 @@ void CompilerInstance::performSema() {
finishTypeCheckingMainModule();
}
OptionSet<TypeCheckingFlags> CompilerInstance::computeTypeCheckingOptions(const FrontendOptions &options) {
OptionSet<TypeCheckingFlags> TypeCheckOptions;
if (PrimaryBufferID == NO_SUCH_BUFFER) {
TypeCheckOptions |= TypeCheckingFlags::DelayWholeModuleChecking;
}
if (options.DebugTimeFunctionBodies) {
TypeCheckOptions |= TypeCheckingFlags::DebugTimeFunctionBodies;
}
if (options.actionIsImmediate()) {
TypeCheckOptions |= TypeCheckingFlags::ForImmediateMode;
}
if (options.DebugTimeExpressionTypeChecking) {
TypeCheckOptions |= TypeCheckingFlags::DebugTimeExpressions;
}
return TypeCheckOptions;
}
void CompilerInstance::parseTheMainFile(PersistentParserState &PersistentState,
DelayedParsingCallbacks *DelayedParseCB,
const OptionSet<TypeCheckingFlags> TypeCheckOptions,