Skip to content

Commit a9819b6

Browse files
David Ungardavidungar
David Ungar
authored andcommitted
Renaming FrontendInputs -> FrontendInputsAndOutputs
Fix comment in ArtsToFrontendOptionsConverter re getOutputFilenamesFromCommandLineOrFilelist
1 parent 02fcdf1 commit a9819b6

23 files changed

+168
-142
lines changed

include/swift/Frontend/ArgsToFrontendInputsConverter.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ namespace swift {
4242
class ArgsToFrontendInputsConverter {
4343
DiagnosticEngine &Diags;
4444
const llvm::opt::ArgList &Args;
45-
FrontendInputs &Inputs;
45+
FrontendInputsAndOutputs &InputsAndOutputs;
4646

4747
llvm::opt::Arg const *const FilelistPathArg;
4848
llvm::opt::Arg const *const PrimaryFilelistPathArg;
@@ -54,7 +54,7 @@ class ArgsToFrontendInputsConverter {
5454
public:
5555
ArgsToFrontendInputsConverter(DiagnosticEngine &diags,
5656
const llvm::opt::ArgList &args,
57-
FrontendInputs &inputs);
57+
FrontendInputsAndOutputs &inputsAndOutputs);
5858

5959
bool convert();
6060

include/swift/Frontend/ArgsToFrontendOptionsConverter.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ class ArgsToFrontendOptionsConverter {
7575

7676
void determineSupplementaryOutputFilenames();
7777

78-
/// Returns the output filenames on the command line or in the output
79-
/// filelist. If there
80-
/// were neither -o's nor an output filelist, returns an empty vector.
78+
/// \returns the output filenames on the command line or in the output
79+
/// filelist, or an empty vector if there were neither -o's nor an output
80+
/// filelist.
8181
ArrayRef<std::string> getOutputFilenamesFromCommandLineOrFilelist();
8282

8383
bool checkForUnusedOutputPaths() const;

include/swift/Frontend/Frontend.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class SerializedModuleLoader;
5454
/// - options for all stages of translation,
5555
/// - information about the build environment,
5656
/// - information about the job being performed, and
57-
/// - lists of inputs.
57+
/// - lists of inputs and outputs.
5858
///
5959
/// A CompilerInvocation can be built from a frontend command line
6060
/// using parseArgs. It can then be used to build a CompilerInstance,

include/swift/Frontend/FrontendInputs.h include/swift/Frontend/FrontendInputsAndOutputs.h

+7-9
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#define SWIFT_FRONTEND_FRONTENDINPUTS_H
1515

1616
#include "swift/AST/Module.h"
17-
#include "swift/Frontend/FrontendInputs.h"
1817
#include "swift/Frontend/InputFile.h"
1918
#include "llvm/ADT/Hashing.h"
2019
#include "llvm/ADT/MapVector.h"
@@ -28,25 +27,24 @@ class MemoryBuffer;
2827

2928
namespace swift {
3029

31-
/// Information about all the inputs to the frontend.
32-
class FrontendInputs {
30+
/// Information about all the inputs and outputs to the frontend.
31+
32+
class FrontendInputsAndOutputs {
3333
friend class ArgsToFrontendInputsConverter;
3434

3535
std::vector<InputFile> AllInputs;
3636
typedef llvm::StringMap<unsigned> InputFileMap;
3737
InputFileMap PrimaryInputs;
3838

3939
public:
40-
FrontendInputs() = default;
41-
42-
FrontendInputs(const FrontendInputs &other);
43-
44-
FrontendInputs &operator=(const FrontendInputs &other);
40+
FrontendInputsAndOutputs() = default;
41+
FrontendInputsAndOutputs(const FrontendInputsAndOutputs &other);
42+
FrontendInputsAndOutputs &operator=(const FrontendInputsAndOutputs &other);
4543

4644
// Readers:
4745

4846
ArrayRef<InputFile> getAllInputs() const { return AllInputs; }
49-
47+
5048
std::vector<std::string> getInputFilenames() const;
5149

5250
unsigned inputCount() const { return AllInputs.size(); }

include/swift/Frontend/FrontendOptions.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#define SWIFT_FRONTEND_FRONTENDOPTIONS_H
1515

1616
#include "swift/AST/Module.h"
17-
#include "swift/Frontend/FrontendInputs.h"
17+
#include "swift/Frontend/FrontendInputsAndOutputs.h"
1818
#include "swift/Frontend/InputFile.h"
1919
#include "llvm/ADT/Hashing.h"
2020

@@ -33,7 +33,7 @@ class FrontendOptions {
3333
friend class ArgsToFrontendOptionsConverter;
3434

3535
public:
36-
FrontendInputs Inputs;
36+
FrontendInputsAndOutputs InputsAndOutputs;
3737

3838
/// The kind of input on which the frontend should operate.
3939
InputFileKind InputKind = InputFileKind::IFK_Swift;
@@ -315,7 +315,8 @@ class FrontendOptions {
315315
StringRef determineFallbackModuleName() const;
316316

317317
bool isCompilingExactlyOneSwiftFile() const {
318-
return InputKind == InputFileKind::IFK_Swift && Inputs.hasSingleInput();
318+
return InputKind == InputFileKind::IFK_Swift &&
319+
InputsAndOutputs.hasSingleInput();
319320
}
320321

321322
private:

lib/Frontend/ArgsToFrontendInputsConverter.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===--- ArgsToFrontendInputsConverter.cpp ----------------------*- C++ -*-===//
1+
//===--- ArgsToFrontendInputsConverter.cpp --------------------------------===//
22
//
33
// This source file is part of the Swift.org open source project
44
//
@@ -29,8 +29,9 @@ using namespace swift;
2929
using namespace llvm::opt;
3030

3131
ArgsToFrontendInputsConverter::ArgsToFrontendInputsConverter(
32-
DiagnosticEngine &diags, const ArgList &args, FrontendInputs &inputs)
33-
: Diags(diags), Args(args), Inputs(inputs),
32+
DiagnosticEngine &diags, const ArgList &args,
33+
FrontendInputsAndOutputs &inputsAndOutputs)
34+
: Diags(diags), Args(args), InputsAndOutputs(inputsAndOutputs),
3435
FilelistPathArg(args.getLastArg(options::OPT_filelist)),
3536
PrimaryFilelistPathArg(args.getLastArg(options::OPT_primary_filelist)) {}
3637

@@ -131,7 +132,7 @@ ArgsToFrontendInputsConverter::createInputFilesConsumingPrimaries(
131132
std::set<StringRef> primaryFiles) {
132133
for (auto &file : Files) {
133134
bool isPrimary = primaryFiles.count(file) > 0;
134-
Inputs.addInput(InputFile(file, isPrimary));
135+
InputsAndOutputs.addInput(InputFile(file, isPrimary));
135136
if (isPrimary)
136137
primaryFiles.erase(file);
137138
}

lib/Frontend/ArgsToFrontendOptionsConverter.cpp

+20-18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//===--- ArgsToFrontendOptionsConverter -------------------------*- C++ -*-===//
1+
//===--- ArgsToFrontendOptionsConverter -----------------------------------===//
22
//
33
// This source file is part of the Swift.org open source project
44
//
@@ -83,7 +83,8 @@ bool ArgsToFrontendOptionsConverter::convert() {
8383
Opts.PCMacro |= Args.hasArg(OPT_pc_macro);
8484

8585
computeHelpOptions();
86-
if (ArgsToFrontendInputsConverter(Diags, Args, Opts.Inputs).convert())
86+
if (ArgsToFrontendInputsConverter(Diags, Args, Opts.InputsAndOutputs)
87+
.convert())
8788
return true;
8889

8990
Opts.ParseStdlib |= Args.hasArg(OPT_parse_stdlib);
@@ -96,7 +97,7 @@ bool ArgsToFrontendOptionsConverter::convert() {
9697
Opts.RequestedAction = determineRequestedAction();
9798

9899
if (Opts.RequestedAction == FrontendOptions::ActionType::Immediate &&
99-
Opts.Inputs.hasPrimaryInputs()) {
100+
Opts.InputsAndOutputs.hasPrimaryInputs()) {
100101
Diags.diagnose(SourceLoc(), diag::error_immediate_mode_primary_file);
101102
return true;
102103
}
@@ -333,18 +334,18 @@ ArgsToFrontendOptionsConverter::determineRequestedAction() const {
333334
bool ArgsToFrontendOptionsConverter::setUpForSILOrLLVM() {
334335
using namespace options;
335336
bool treatAsSIL =
336-
Args.hasArg(OPT_parse_sil) || Opts.Inputs.shouldTreatAsSIL();
337-
bool treatAsLLVM = Opts.Inputs.shouldTreatAsLLVM();
337+
Args.hasArg(OPT_parse_sil) || Opts.InputsAndOutputs.shouldTreatAsSIL();
338+
bool treatAsLLVM = Opts.InputsAndOutputs.shouldTreatAsLLVM();
338339

339-
if (Opts.Inputs.verifyInputs(
340+
if (Opts.InputsAndOutputs.verifyInputs(
340341
Diags, treatAsSIL,
341342
Opts.RequestedAction == FrontendOptions::ActionType::REPL,
342343
Opts.RequestedAction == FrontendOptions::ActionType::NoneAction)) {
343344
return true;
344345
}
345346
if (Opts.RequestedAction == FrontendOptions::ActionType::Immediate) {
346347
Opts.ImmediateArgv.push_back(
347-
Opts.Inputs.getFilenameOfFirstInput()); // argv[0]
348+
Opts.InputsAndOutputs.getFilenameOfFirstInput()); // argv[0]
348349
if (const Arg *A = Args.getLastArg(OPT__DASH_DASH)) {
349350
for (unsigned i = 0, e = A->getNumValues(); i != e; ++i) {
350351
Opts.ImmediateArgv.push_back(A->getValue(i));
@@ -405,7 +406,7 @@ bool ArgsToFrontendOptionsConverter::computeFallbackModuleName() {
405406
return false;
406407
}
407408
// In order to pass some tests, must leave ModuleName empty.
408-
if (!Opts.Inputs.hasInputs()) {
409+
if (!Opts.InputsAndOutputs.hasInputs()) {
409410
Opts.ModuleName = StringRef();
410411
// FIXME: This is a bug that should not happen, but does in tests.
411412
// The compiler should bail out earlier, where "no frontend action was
@@ -418,9 +419,10 @@ bool ArgsToFrontendOptionsConverter::computeFallbackModuleName() {
418419
bool isOutputAUniqueOrdinaryFile =
419420
outputFilenames.size() == 1 && outputFilenames[0] != "-" &&
420421
!llvm::sys::fs::is_directory(outputFilenames[0]);
421-
std::string nameToStem = isOutputAUniqueOrdinaryFile
422-
? outputFilenames[0]
423-
: Opts.Inputs.getFilenameOfFirstInput().str();
422+
std::string nameToStem =
423+
isOutputAUniqueOrdinaryFile
424+
? outputFilenames[0]
425+
: Opts.InputsAndOutputs.getFilenameOfFirstInput().str();
424426
Opts.ModuleName = llvm::sys::path::stem(nameToStem);
425427
return false;
426428
}
@@ -458,7 +460,7 @@ bool ArgsToFrontendOptionsConverter::computeOutputFilenames() {
458460
}
459461

460462
bool ArgsToFrontendOptionsConverter::deriveOutputFilenameFromInputFile() {
461-
if (Opts.Inputs.isReadingFromStdin() ||
463+
if (Opts.InputsAndOutputs.isReadingFromStdin() ||
462464
FrontendOptions::doesActionProduceTextualOutput(Opts.RequestedAction)) {
463465
Opts.setOutputFilenameToStdout();
464466
return false;
@@ -503,13 +505,13 @@ void ArgsToFrontendOptionsConverter::deriveOutputFilenameFromParts(
503505

504506
std::string ArgsToFrontendOptionsConverter::determineBaseNameOfOutput() const {
505507
std::string nameToStem;
506-
if (Opts.Inputs.hasPrimaryInputs()) {
507-
nameToStem = Opts.Inputs.getRequiredUniquePrimaryInput().file();
508+
if (Opts.InputsAndOutputs.hasPrimaryInputs()) {
509+
nameToStem = Opts.InputsAndOutputs.getRequiredUniquePrimaryInput().file();
508510
} else if (auto UserSpecifiedModuleName =
509511
Args.getLastArg(options::OPT_module_name)) {
510512
nameToStem = UserSpecifiedModuleName->getValue();
511-
} else if (Opts.Inputs.hasSingleInput()) {
512-
nameToStem = Opts.Inputs.getFilenameOfFirstInput();
513+
} else if (Opts.InputsAndOutputs.hasSingleInput()) {
514+
nameToStem = Opts.InputsAndOutputs.getFilenameOfFirstInput();
513515
} else
514516
nameToStem = "";
515517

@@ -646,8 +648,8 @@ void ArgsToFrontendOptionsConverter::computeImportObjCHeaderOptions() {
646648
using namespace options;
647649
if (const Arg *A = Args.getLastArgNoClaim(OPT_import_objc_header)) {
648650
Opts.ImplicitObjCHeaderPath = A->getValue();
649-
Opts.SerializeBridgingHeader |=
650-
!Opts.Inputs.hasPrimaryInputs() && !Opts.ModuleOutputPath.empty();
651+
Opts.SerializeBridgingHeader |= !Opts.InputsAndOutputs.hasPrimaryInputs() &&
652+
!Opts.ModuleOutputPath.empty();
651653
}
652654
}
653655
void ArgsToFrontendOptionsConverter::computeImplicitImportModuleNames() {

lib/Frontend/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ add_swift_library(swiftFrontend STATIC
44
CompilerInvocation.cpp
55
DiagnosticVerifier.cpp
66
Frontend.cpp
7-
FrontendInputs.cpp
7+
FrontendInputsAndOutputs.cpp
88
FrontendOptions.cpp
99
PrintingDiagnosticConsumer.cpp
1010
SerializedDiagnosticConsumer.cpp

lib/Frontend/CompilerInvocation.cpp

+5-4
Original file line numberDiff line numberDiff line change
@@ -818,10 +818,11 @@ static bool ParseIRGenArgs(IRGenOptions &Opts, ArgList &Args,
818818
if (!SILOpts.SILOutputFileNameForDebugging.empty()) {
819819
Opts.MainInputFilename = SILOpts.SILOutputFileNameForDebugging;
820820
} else if (const InputFile *input =
821-
FrontendOpts.Inputs.getUniquePrimaryInput()) {
821+
FrontendOpts.InputsAndOutputs.getUniquePrimaryInput()) {
822822
Opts.MainInputFilename = input->file();
823-
} else if (FrontendOpts.Inputs.hasSingleInput()) {
824-
Opts.MainInputFilename = FrontendOpts.Inputs.getFilenameOfFirstInput();
823+
} else if (FrontendOpts.InputsAndOutputs.hasSingleInput()) {
824+
Opts.MainInputFilename =
825+
FrontendOpts.InputsAndOutputs.getFilenameOfFirstInput();
825826
}
826827
Opts.OutputFilenames = FrontendOpts.OutputFilenames;
827828
Opts.ModuleName = FrontendOpts.ModuleName;
@@ -1064,7 +1065,7 @@ CompilerInvocation::setUpInputForSILTool(
10641065

10651066
// If it looks like we have an AST, set the source file kind to SIL and the
10661067
// name of the module to the file's name.
1067-
getFrontendOptions().Inputs.addInput(
1068+
getFrontendOptions().InputsAndOutputs.addInput(
10681069
InputFile(inputFilename, bePrimary, fileBufOrErr.get().get()));
10691070

10701071
auto result = serialization::validateSerializedAST(

lib/Frontend/Frontend.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void CompilerInstance::createSILModule() {
5858
// Assume WMO if a -primary-file option was not provided.
5959
TheSILModule = SILModule::createEmptyModule(
6060
getMainModule(), Invocation.getSILOptions(),
61-
Invocation.getFrontendOptions().Inputs.isWholeModule());
61+
Invocation.getFrontendOptions().InputsAndOutputs.isWholeModule());
6262
}
6363

6464
void CompilerInstance::recordPrimaryInputBuffer(unsigned BufID) {
@@ -182,7 +182,7 @@ bool CompilerInstance::setUpInputs() {
182182
const Optional<unsigned> codeCompletionBufferID = setUpCodeCompletionBuffer();
183183

184184
for (const InputFile &input :
185-
Invocation.getFrontendOptions().Inputs.getAllInputs())
185+
Invocation.getFrontendOptions().InputsAndOutputs.getAllInputs())
186186
if (setUpForInput(input))
187187
return true;
188188

0 commit comments

Comments
 (0)