1
- // ===--- ArgsToFrontendOptionsConverter -------------------------*- C++ -* -===//
1
+ // ===--- ArgsToFrontendOptionsConverter ---------------------------------- -===//
2
2
//
3
3
// This source file is part of the Swift.org open source project
4
4
//
@@ -83,7 +83,8 @@ bool ArgsToFrontendOptionsConverter::convert() {
83
83
Opts.PCMacro |= Args.hasArg (OPT_pc_macro);
84
84
85
85
computeHelpOptions ();
86
- if (ArgsToFrontendInputsConverter (Diags, Args, Opts.Inputs ).convert ())
86
+ if (ArgsToFrontendInputsConverter (Diags, Args, Opts.InputsAndOutputs )
87
+ .convert ())
87
88
return true ;
88
89
89
90
Opts.ParseStdlib |= Args.hasArg (OPT_parse_stdlib);
@@ -96,7 +97,7 @@ bool ArgsToFrontendOptionsConverter::convert() {
96
97
Opts.RequestedAction = determineRequestedAction ();
97
98
98
99
if (Opts.RequestedAction == FrontendOptions::ActionType::Immediate &&
99
- Opts.Inputs .hasPrimaryInputs ()) {
100
+ Opts.InputsAndOutputs .hasPrimaryInputs ()) {
100
101
Diags.diagnose (SourceLoc (), diag::error_immediate_mode_primary_file);
101
102
return true ;
102
103
}
@@ -333,18 +334,18 @@ ArgsToFrontendOptionsConverter::determineRequestedAction() const {
333
334
bool ArgsToFrontendOptionsConverter::setUpForSILOrLLVM () {
334
335
using namespace options ;
335
336
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 ();
338
339
339
- if (Opts.Inputs .verifyInputs (
340
+ if (Opts.InputsAndOutputs .verifyInputs (
340
341
Diags, treatAsSIL,
341
342
Opts.RequestedAction == FrontendOptions::ActionType::REPL,
342
343
Opts.RequestedAction == FrontendOptions::ActionType::NoneAction)) {
343
344
return true ;
344
345
}
345
346
if (Opts.RequestedAction == FrontendOptions::ActionType::Immediate) {
346
347
Opts.ImmediateArgv .push_back (
347
- Opts.Inputs .getFilenameOfFirstInput ()); // argv[0]
348
+ Opts.InputsAndOutputs .getFilenameOfFirstInput ()); // argv[0]
348
349
if (const Arg *A = Args.getLastArg (OPT__DASH_DASH)) {
349
350
for (unsigned i = 0 , e = A->getNumValues (); i != e; ++i) {
350
351
Opts.ImmediateArgv .push_back (A->getValue (i));
@@ -405,7 +406,7 @@ bool ArgsToFrontendOptionsConverter::computeFallbackModuleName() {
405
406
return false ;
406
407
}
407
408
// In order to pass some tests, must leave ModuleName empty.
408
- if (!Opts.Inputs .hasInputs ()) {
409
+ if (!Opts.InputsAndOutputs .hasInputs ()) {
409
410
Opts.ModuleName = StringRef ();
410
411
// FIXME: This is a bug that should not happen, but does in tests.
411
412
// The compiler should bail out earlier, where "no frontend action was
@@ -418,9 +419,10 @@ bool ArgsToFrontendOptionsConverter::computeFallbackModuleName() {
418
419
bool isOutputAUniqueOrdinaryFile =
419
420
outputFilenames.size () == 1 && outputFilenames[0 ] != " -" &&
420
421
!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 ();
424
426
Opts.ModuleName = llvm::sys::path::stem (nameToStem);
425
427
return false ;
426
428
}
@@ -458,7 +460,7 @@ bool ArgsToFrontendOptionsConverter::computeOutputFilenames() {
458
460
}
459
461
460
462
bool ArgsToFrontendOptionsConverter::deriveOutputFilenameFromInputFile () {
461
- if (Opts.Inputs .isReadingFromStdin () ||
463
+ if (Opts.InputsAndOutputs .isReadingFromStdin () ||
462
464
FrontendOptions::doesActionProduceTextualOutput (Opts.RequestedAction )) {
463
465
Opts.setOutputFilenameToStdout ();
464
466
return false ;
@@ -503,13 +505,13 @@ void ArgsToFrontendOptionsConverter::deriveOutputFilenameFromParts(
503
505
504
506
std::string ArgsToFrontendOptionsConverter::determineBaseNameOfOutput () const {
505
507
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 ();
508
510
} else if (auto UserSpecifiedModuleName =
509
511
Args.getLastArg (options::OPT_module_name)) {
510
512
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 ();
513
515
} else
514
516
nameToStem = " " ;
515
517
@@ -646,8 +648,8 @@ void ArgsToFrontendOptionsConverter::computeImportObjCHeaderOptions() {
646
648
using namespace options ;
647
649
if (const Arg *A = Args.getLastArgNoClaim (OPT_import_objc_header)) {
648
650
Opts.ImplicitObjCHeaderPath = A->getValue ();
649
- Opts.SerializeBridgingHeader |=
650
- !Opts. Inputs . hasPrimaryInputs () && !Opts.ModuleOutputPath .empty ();
651
+ Opts.SerializeBridgingHeader |= !Opts. InputsAndOutputs . hasPrimaryInputs () &&
652
+ !Opts.ModuleOutputPath .empty ();
651
653
}
652
654
}
653
655
void ArgsToFrontendOptionsConverter::computeImplicitImportModuleNames () {
0 commit comments