diff --git a/include/swift/Frontend/Frontend.h b/include/swift/Frontend/Frontend.h index 11000540c69..328388da2c4 100644 --- a/include/swift/Frontend/Frontend.h +++ b/include/swift/Frontend/Frontend.h @@ -425,15 +425,15 @@ private: void setUpDiagnosticOptions(); bool setUpModuleLoaders(); Optional setUpCodeCompletionBuffer(); - bool setupInputs(Optional codeCompletionBufferID); + bool setUpInputs(Optional codeCompletionBufferID); bool isInputSwift() { return Invocation.getInputKind() == InputFileKind::IFK_Swift; } bool isInSILMode() { return Invocation.getInputKind() == InputFileKind::IFK_SIL; } - bool setupForInput(const InputFile &input); - void setupForBuffer(llvm::MemoryBuffer *buffer, bool isPrimary); + bool setUpForInput(const InputFile &input); + void setUpForBuffer(llvm::MemoryBuffer *buffer, bool isPrimary); bool setUpForFile(StringRef file, bool isPrimary); public: diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 0f0033455c6..03394810f38 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -179,7 +179,8 @@ private: continue; hadDuplicates = addFile(A->getValue()) || hadDuplicates; } - return false; // Don't bail out for duplicates, too many tests depend on it. + return false; // FIXME: Don't bail out for duplicates, too many tests depend + // on it. } bool doesCommandLineIncludeFilelist() { return FilelistPathArg; } @@ -203,14 +204,13 @@ private: for (auto file : llvm::make_range(llvm::line_iterator(*FilelistBuffer), llvm::line_iterator())) hadDuplicates = addFile(file) || hadDuplicates; - return false; // Don't bail out for duplicates, too many tests depend on it. + return false; // FIXME: Don't bail out for duplicates, too many tests depend + // on it. } bool addFile(StringRef file) { - if (Files.count(file) == 0) { - Files.insert(file); + if (Files.insert(file)) return false; - } Diags.diagnose(SourceLoc(), diag::error_duplicate_input_file, file); return true; } diff --git a/lib/Frontend/Frontend.cpp b/lib/Frontend/Frontend.cpp index 2caac5ba7ed..6f288bfa00a 100644 --- a/lib/Frontend/Frontend.cpp +++ b/lib/Frontend/Frontend.cpp @@ -102,7 +102,7 @@ bool CompilerInstance::setup(const CompilerInvocation &Invok) { if (isInSILMode()) Invocation.getLangOptions().EnableAccessControl = false; - return setupInputs(codeCompletionBufferID); + return setUpInputs(codeCompletionBufferID); } void CompilerInstance::setUpLLVMArguments() { @@ -129,6 +129,7 @@ void CompilerInstance::setUpDiagnosticOptions() { Diagnostics.setWarningsAsErrors(true); } } + bool CompilerInstance::setUpModuleLoaders() { if (hasSourceImport()) { bool immediate = FrontendOptions::isActionImmediate( @@ -175,10 +176,10 @@ Optional CompilerInstance::setUpCodeCompletionBuffer() { return codeCompletionBufferID; } -bool CompilerInstance::setupInputs(Optional codeCompletionBufferID) { +bool CompilerInstance::setUpInputs(Optional codeCompletionBufferID) { for (const InputFile &input : Invocation.getFrontendOptions().Inputs.getAllFiles()) - if (setupForInput(input)) + if (setUpForInput(input)) return true; // Set the primary file to the code-completion point if one exists. @@ -196,14 +197,14 @@ bool CompilerInstance::setupInputs(Optional codeCompletionBufferID) { return false; } -bool CompilerInstance::setupForInput(const InputFile &input) { +bool CompilerInstance::setUpForInput(const InputFile &input) { if (llvm::MemoryBuffer *inputBuffer = input.buffer()) { - setupForBuffer(inputBuffer, input.isPrimary()); + setUpForBuffer(inputBuffer, input.isPrimary()); return false; } return setUpForFile(input.file(), input.isPrimary()); } -void CompilerInstance::setupForBuffer(llvm::MemoryBuffer *buffer, +void CompilerInstance::setUpForBuffer(llvm::MemoryBuffer *buffer, bool isPrimary) { auto copy = llvm::MemoryBuffer::getMemBufferCopy( buffer->getBuffer(), buffer->getBufferIdentifier()); diff --git a/test/Driver/options.swift b/test/Driver/options.swift index 6e2c1e0db75..e9807c404d6 100644 --- a/test/Driver/options.swift +++ b/test/Driver/options.swift @@ -7,6 +7,7 @@ // SIL_FILES: this mode requires a single input file // RUN: not %target-swift-frontend -parse-sil -emit-sil %s %s 2>&1 | %FileCheck -check-prefix=DUPLICATE_FILES %s +// RUN: not %target-swift-frontend -parse-sil -emit-sil %s %S/../Inputs/empty.swift 2>&1 | %FileCheck -check-prefix=SIL_FILES %s // DUPLICATE_FILES: duplicate input file 'SOURCE_DIR/test/Driver/options.swift'