Skip to content

Commit 1f67b41

Browse files
author
Harlan Haskins
authored
Merge pull request #26135 from harlanhaskins/revert-im-your-biggest-fan
Revert "[Driver] Load the standard library before starting parallel frontend invocations"
2 parents daacc38 + 21bd24a commit 1f67b41

23 files changed

+78
-280
lines changed

include/swift/Driver/Action.h

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,9 @@ class Action {
5252
GenerateDSYMJob,
5353
VerifyDebugInfoJob,
5454
GeneratePCHJob,
55-
LoadModuleJob,
5655

5756
JobFirst = CompileJob,
58-
JobLast = LoadModuleJob
57+
JobLast = GeneratePCHJob
5958
};
6059

6160
static const char *getClassName(Kind AC);
@@ -339,24 +338,6 @@ class StaticLinkJobAction : public JobAction {
339338
}
340339
};
341340

342-
/// An action that will attempt to load a specific module before any other
343-
/// actions.
344-
class LoadModuleJobAction : public JobAction {
345-
virtual void anchor();
346-
std::string moduleName;
347-
348-
public:
349-
LoadModuleJobAction(StringRef moduleName)
350-
: JobAction(Action::Kind::LoadModuleJob, {}, file_types::TY_Nothing),
351-
moduleName(moduleName) {}
352-
353-
StringRef getModuleName() const { return moduleName; }
354-
355-
static bool classof(const Action *A) {
356-
return A->getKind() == Action::Kind::LoadModuleJob;
357-
}
358-
};
359-
360341
} // end namespace driver
361342
} // end namespace swift
362343

include/swift/Driver/ToolChain.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,6 @@ class ToolChain {
164164
virtual InvocationInfo constructInvocation(const StaticLinkJobAction &job,
165165
const JobContext &context) const;
166166

167-
virtual InvocationInfo constructInvocation(const LoadModuleJobAction &job,
168-
const JobContext &context) const;
169-
170167
/// Searches for the given executable in appropriate paths relative to the
171168
/// Swift binary.
172169
///

lib/Driver/Action.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ const char *Action::getClassName(Kind AC) {
3333
case Kind::GenerateDSYMJob: return "generate-dSYM";
3434
case Kind::VerifyDebugInfoJob: return "verify-debug-info";
3535
case Kind::GeneratePCHJob: return "generate-pch";
36-
case Kind::LoadModuleJob: return "load-module";
3736
}
3837

3938
llvm_unreachable("invalid class");
@@ -66,5 +65,3 @@ void GenerateDSYMJobAction::anchor() {}
6665
void VerifyDebugInfoJobAction::anchor() {}
6766

6867
void GeneratePCHJobAction::anchor() {}
69-
70-
void LoadModuleJobAction::anchor() {}

lib/Driver/Driver.cpp

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1731,25 +1731,6 @@ Driver::computeCompilerMode(const DerivedArgList &Args,
17311731
return OutputInfo::Mode::SingleCompile;
17321732
}
17331733

1734-
/// Determines whether the given set of inputs has multiple .swift, .sil, or
1735-
/// .sib inputs, which will require loading the standard library.
1736-
static bool hasMultipleSourceFileInputs(ArrayRef<InputPair> inputs) {
1737-
bool hasFoundOneSourceFileAlready = false;
1738-
for (const InputPair &input : inputs) {
1739-
switch (input.first) {
1740-
case file_types::TY_Swift:
1741-
case file_types::TY_SIL:
1742-
case file_types::TY_SIB:
1743-
if (hasFoundOneSourceFileAlready)
1744-
return true;
1745-
hasFoundOneSourceFileAlready = true;
1746-
break;
1747-
default: break;
1748-
}
1749-
}
1750-
return false;
1751-
}
1752-
17531734
void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
17541735
const ToolChain &TC, const OutputInfo &OI,
17551736
const InputInfoMap *OutOfDateMap,
@@ -1768,18 +1749,6 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
17681749
switch (OI.CompilerMode) {
17691750
case OutputInfo::Mode::StandardCompile: {
17701751

1771-
// If we're not compiling the standard library, and we're going to schedule
1772-
// multiple parallel compile jobs, add an action before any others that
1773-
// will quickly load the standard library module.
1774-
// This will ensure that, if we need to build the standard library from
1775-
// a module interface, it happens once, rather than once per parallel
1776-
// invocation.
1777-
LoadModuleJobAction *preLoadStdlib = nullptr;
1778-
if (!Args.hasArg(options::OPT_parse_stdlib) &&
1779-
hasMultipleSourceFileInputs(Inputs)) {
1780-
preLoadStdlib = C.createAction<LoadModuleJobAction>(STDLIB_NAME);
1781-
}
1782-
17831752
// If the user is importing a textual (.h) bridging header and we're in
17841753
// standard-compile (non-WMO) mode, we take the opportunity to precompile
17851754
// the header into a temporary PCH, and replace the import argument with the
@@ -1803,15 +1772,6 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
18031772
}
18041773
}
18051774

1806-
// Adds the implicit dependencies for this job action, either generating
1807-
// a PCH, or pre-loading the standard library, or both.
1808-
auto addImplicitDeps = [&](Action *action) {
1809-
if (PCH)
1810-
cast<JobAction>(action)->addInput(PCH);
1811-
if (preLoadStdlib)
1812-
cast<JobAction>(action)->addInput(preLoadStdlib);
1813-
};
1814-
18151775
for (const InputPair &Input : Inputs) {
18161776
file_types::ID InputType = Input.first;
18171777
const Arg *InputArg = Input.second;
@@ -1833,15 +1793,17 @@ void Driver::buildActions(SmallVectorImpl<const Action *> &TopLevelActions,
18331793
if (Args.hasArg(options::OPT_embed_bitcode)) {
18341794
Current = C.createAction<CompileJobAction>(
18351795
Current, file_types::TY_LLVM_BC, previousBuildState);
1836-
addImplicitDeps(Current);
1796+
if (PCH)
1797+
cast<JobAction>(Current)->addInput(PCH);
18371798
AllModuleInputs.push_back(Current);
18381799
Current = C.createAction<BackendJobAction>(Current,
18391800
OI.CompilerOutputType, 0);
18401801
} else {
18411802
Current = C.createAction<CompileJobAction>(Current,
18421803
OI.CompilerOutputType,
18431804
previousBuildState);
1844-
addImplicitDeps(Current);
1805+
if (PCH)
1806+
cast<JobAction>(Current)->addInput(PCH);
18451807
AllModuleInputs.push_back(Current);
18461808
}
18471809
AllLinkerInputs.push_back(Current);

lib/Driver/Job.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -383,14 +383,9 @@ void Job::printSummary(raw_ostream &os) const {
383383
if (const auto *IA = dyn_cast<InputAction>(A))
384384
Inputs.push_back(IA->getInputArg().getValue());
385385

386-
for (const Job *J : getInputs()) {
387-
// Some jobs might produce no output, so don't include them in the
388-
// list of inputs.
389-
if (J->getOutput().getPrimaryOutputType() == file_types::TY_Nothing)
390-
continue;
386+
for (const Job *J : getInputs())
391387
for (StringRef f : J->getOutput().getPrimaryOutputFilenames())
392388
Inputs.push_back(f);
393-
}
394389

395390
size_t limit = 3;
396391
size_t actual_in = Inputs.size();

lib/Driver/ParseableOutput.cpp

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -146,27 +146,13 @@ class DetailedCommandBasedMessage : public CommandBasedMessage {
146146
});
147147
}
148148

149-
/// Subclasses can override this to determine if they should print empty
150-
/// arrays for `inputs` and `output`, or if they can omit them.
151-
virtual bool requireInputsAndOutputs() {
152-
return false;
153-
}
154-
155149
void provideMapping(swift::json::Output &out) override {
156150
Message::provideMapping(out);
157151
out.mapRequired("command", CommandLine); // Deprecated, do not document
158152
out.mapRequired("command_executable", Executable);
159153
out.mapRequired("command_arguments", Arguments);
160-
161-
// Some commands can choose to print empty arrays if their inputs and
162-
// outputs are empty.
163-
if (requireInputsAndOutputs()) {
164-
out.mapRequired("inputs", Inputs);
165-
out.mapRequired("outputs", Outputs);
166-
} else {
167-
out.mapOptional("inputs", Inputs);
168-
out.mapOptional("outputs", Outputs);
169-
}
154+
out.mapOptional("inputs", Inputs);
155+
out.mapOptional("outputs", Outputs);
170156
}
171157
};
172158

@@ -191,12 +177,6 @@ class BeganMessage : public DetailedCommandBasedMessage {
191177
: DetailedCommandBasedMessage("began", Cmd), Pid(Pid),
192178
ProcInfo(ProcInfo) {}
193179

194-
bool requireInputsAndOutputs() override {
195-
/// `began` messages should always print inputs and outputs, even if they
196-
/// are empty.
197-
return true;
198-
}
199-
200180
void provideMapping(swift::json::Output &out) override {
201181
DetailedCommandBasedMessage::provideMapping(out);
202182
out.mapRequired("pid", Pid);

lib/Driver/ToolChain.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ std::unique_ptr<Job> ToolChain::constructJob(
106106
CASE(GeneratePCHJob)
107107
CASE(AutolinkExtractJob)
108108
CASE(REPLJob)
109-
CASE(LoadModuleJob)
110109
#undef CASE
111110
case Action::Kind::Input:
112111
llvm_unreachable("not a JobAction");

lib/Driver/ToolChains.cpp

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,40 +1113,6 @@ ToolChain::constructInvocation(const StaticLinkJobAction &job,
11131113
llvm_unreachable("archiving not implemented for this toolchain");
11141114
}
11151115

1116-
ToolChain::InvocationInfo
1117-
ToolChain::constructInvocation(const LoadModuleJobAction &job,
1118-
const JobContext &context) const {
1119-
1120-
// Invoke the frontend, passing `-import-module ModuleName` for whatever
1121-
// module the job is supposed to load.
1122-
1123-
InvocationInfo II{SWIFT_EXECUTABLE_NAME};
1124-
ArgStringList &Arguments = II.Arguments;
1125-
II.allowsResponseFiles = true;
1126-
1127-
for (auto &s : getDriver().getSwiftProgramArgs())
1128-
Arguments.push_back(s.c_str());
1129-
1130-
Arguments.push_back("-frontend");
1131-
Arguments.push_back("-typecheck");
1132-
1133-
// Force importing the module that this job specifies.
1134-
1135-
Arguments.push_back("-import-module");
1136-
Arguments.push_back(context.Args.MakeArgString(job.getModuleName()));
1137-
1138-
// Pass along the relevant arguments to the frontend invocation.
1139-
1140-
addCommonFrontendArgs(*this, context.OI, context.Output, context.Args,
1141-
Arguments);
1142-
1143-
// Create an empty temporary file to typecheck.
1144-
auto tempFile = context.getTemporaryFilePath("tmp", "swift");
1145-
Arguments.push_back(context.Args.MakeArgString(tempFile));
1146-
1147-
return II;
1148-
}
1149-
11501116
void ToolChain::addPathEnvironmentVariableIfNeeded(
11511117
Job::EnvironmentVector &env, const char *name, const char *separator,
11521118
options::ID optionID, const ArgList &args,

test/Driver/Dependencies/Inputs/fake-build-for-bitcode.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@
2323

2424
assert sys.argv[1] == '-frontend'
2525

26-
# If we're handling a frontend action that doesn't produce output or have a
27-
# primary-file, (e.g. a -typecheck action), then don't do anything.
28-
if '-primary-file' not in sys.argv or '-o' not in sys.argv:
29-
sys.exit(0)
30-
3126
primaryFile = sys.argv[sys.argv.index('-primary-file') + 1]
3227
outputFile = sys.argv[sys.argv.index('-o') + 1]
3328

test/Driver/Dependencies/Inputs/modify-non-primary-files.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@
2323

2424
assert sys.argv[1] == '-frontend'
2525

26-
# If we're handling a frontend action that doesn't produce output
27-
# (e.g. a -typecheck action), then don't do anything.
28-
if '-o' not in sys.argv:
29-
sys.exit(0)
30-
3126
if '-primary-file' in sys.argv:
3227
primaryFileIndex = sys.argv.index('-primary-file') + 1
3328
primaryFile = sys.argv[primaryFileIndex]

test/Driver/Dependencies/Inputs/update-dependencies-bad.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@
2626

2727
assert sys.argv[1] == '-frontend'
2828

29-
# If we don't have a -primary-file, for example if this is a -typecheck job,
30-
# then don't do anything with this script.
31-
if '-primary-file' not in sys.argv:
32-
sys.exit(0)
33-
3429
primaryFile = sys.argv[sys.argv.index('-primary-file') + 1]
3530

3631
if (os.path.basename(primaryFile) == 'bad.swift' or

test/Driver/Dependencies/Inputs/update-dependencies.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@
3535

3636
assert sys.argv[1] == '-frontend'
3737

38-
# If we're handling a frontend action that doesn't produce output
39-
# (e.g. a -typecheck action), then don't do anything.
40-
if '-o' not in sys.argv:
41-
sys.exit(0)
42-
4338
# NB: The bitcode options automatically specify a -primary-file, even in cases
4439
# where we do not wish to use a dependencies file in the test.
4540
if '-primary-file' in sys.argv \

test/Driver/Dependencies/bindings-build-record-options.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@
55
// RUN: cd %t && %swiftc_driver -c -module-name main -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=MUST-EXEC-INITIAL
66

77
// MUST-EXEC-INITIAL-NOT: warning
8-
// MUST-EXEC-INITIAL: inputs: ["./main.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
9-
// MUST-EXEC-INITIAL: inputs: ["./other.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
10-
// MUST-EXEC-INITIAL: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
8+
// MUST-EXEC-INITIAL: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
9+
// MUST-EXEC-INITIAL: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
10+
// MUST-EXEC-INITIAL: inputs: ["./yet-another.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
1111

1212
// MUST-EXEC-ALL-NOT: warning
13-
// MUST-EXEC-ALL: inputs: ["./main.swift", ""], output: {{[{].*[}]$}}
14-
// MUST-EXEC-ALL: inputs: ["./other.swift", ""], output: {{[{].*[}]$}}
15-
// MUST-EXEC-ALL: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]$}}
13+
// MUST-EXEC-ALL: inputs: ["./main.swift"], output: {{[{].*[}]$}}
14+
// MUST-EXEC-ALL: inputs: ["./other.swift"], output: {{[{].*[}]$}}
15+
// MUST-EXEC-ALL: inputs: ["./yet-another.swift"], output: {{[{].*[}]$}}
1616

1717
// RUN: cd %t && %swiftc_driver -c -module-name main -driver-use-frontend-path "%{python};%S/Inputs/update-dependencies.py" ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json
1818
// RUN: cd %t && %swiftc_driver -c -module-name main -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=NO-EXEC
1919

20-
// NO-EXEC: inputs: ["./main.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies
21-
// NO-EXEC: inputs: ["./other.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies
22-
// NO-EXEC: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies
20+
// NO-EXEC: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: check-dependencies
21+
// NO-EXEC: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: check-dependencies
22+
// NO-EXEC: inputs: ["./yet-another.swift"], output: {{[{].*[}]}}, condition: check-dependencies
2323

2424

2525
// RUN: cd %t && %swiftc_driver -c -module-name main -driver-print-bindings -serialize-diagnostics ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=NO-EXEC

test/Driver/Dependencies/bindings-build-record.swift

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,48 @@
66
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=MUST-EXEC
77

88
// MUST-EXEC-NOT: warning
9-
// MUST-EXEC: inputs: ["./main.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
10-
// MUST-EXEC: inputs: ["./other.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
11-
// MUST-EXEC: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
9+
// MUST-EXEC: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
10+
// MUST-EXEC: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
11+
// MUST-EXEC: inputs: ["./yet-another.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
1212

1313
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": [443865900, 0], "./yet-another.swift": [443865900, 0]}, build_time: [443865901, 0]}' > %t/main~buildrecord.swiftdeps
1414
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=NO-EXEC
1515

16-
// NO-EXEC: inputs: ["./main.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies
17-
// NO-EXEC: inputs: ["./other.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies
18-
// NO-EXEC: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies
16+
// NO-EXEC: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: check-dependencies
17+
// NO-EXEC: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: check-dependencies
18+
// NO-EXEC: inputs: ["./yet-another.swift"], output: {{[{].*[}]}}, condition: check-dependencies
1919

2020

2121
// RUN: echo '{version: "'$(%swiftc_driver_plain -version | head -n1)'", inputs: {"./main.swift": [443865900, 0], "./other.swift": !private [443865900, 0], "./yet-another.swift": !dirty [443865900, 0]}, build_time: [443865901, 0]}' > %t/main~buildrecord.swiftdeps
2222
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=BUILD-RECORD
2323

24-
// BUILD-RECORD: inputs: ["./main.swift", ""], output: {{[{].*[}]}}, condition: check-dependencies{{$}}
25-
// BUILD-RECORD: inputs: ["./other.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading{{$}}
26-
// BUILD-RECORD: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]$}}
24+
// BUILD-RECORD: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: check-dependencies{{$}}
25+
// BUILD-RECORD: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: run-without-cascading{{$}}
26+
// BUILD-RECORD: inputs: ["./yet-another.swift"], output: {{[{].*[}]$}}
2727

2828
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift ./added.swift -incremental -output-file-map %t/output.json 2>&1 > %t/added.txt
2929
// RUN: %FileCheck %s -check-prefix=BUILD-RECORD < %t/added.txt
3030
// RUN: %FileCheck %s -check-prefix=FILE-ADDED < %t/added.txt
3131

32-
// FILE-ADDED: inputs: ["./added.swift", ""], output: {{[{].*[}]}}, condition: newly-added{{$}}
32+
// FILE-ADDED: inputs: ["./added.swift"], output: {{[{].*[}]}}, condition: newly-added{{$}}
3333

3434
// RUN: %{python} %S/Inputs/touch.py 443865960 %t/main.swift
3535
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=BUILD-RECORD-PLUS-CHANGE
36-
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./main.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading
37-
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./other.swift", ""], output: {{[{].*[}]}}, condition: run-without-cascading{{$}}
38-
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]$}}
36+
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./main.swift"], output: {{[{].*[}]}}, condition: run-without-cascading
37+
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./other.swift"], output: {{[{].*[}]}}, condition: run-without-cascading{{$}}
38+
// BUILD-RECORD-PLUS-CHANGE: inputs: ["./yet-another.swift"], output: {{[{].*[}]$}}
3939

4040
// RUN: %{python} %S/Inputs/touch.py 443865900 %t/*
4141
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=FILE-REMOVED
42-
// FILE-REMOVED: inputs: ["./main.swift", ""], output: {{[{].*[}]$}}
43-
// FILE-REMOVED: inputs: ["./other.swift", ""], output: {{[{].*[}]$}}
42+
// FILE-REMOVED: inputs: ["./main.swift"], output: {{[{].*[}]$}}
43+
// FILE-REMOVED: inputs: ["./other.swift"], output: {{[{].*[}]$}}
4444
// FILE-REMOVED-NOT: yet-another.swift
4545

4646

4747
// RUN: echo '{version: "bogus", inputs: {"./main.swift": [443865900, 0], "./other.swift": !private [443865900, 0], "./yet-another.swift": !dirty [443865900, 0]}}' > %t/main~buildrecord.swiftdeps
4848
// RUN: cd %t && %swiftc_driver -driver-print-bindings ./main.swift ./other.swift ./yet-another.swift -incremental -output-file-map %t/output.json 2>&1 | %FileCheck %s -check-prefix=INVALID-RECORD
4949

5050
// INVALID-RECORD-NOT: warning
51-
// INVALID-RECORD: inputs: ["./main.swift", ""], output: {{[{].*[}]$}}
52-
// INVALID-RECORD: inputs: ["./other.swift", ""], output: {{[{].*[}]$}}
53-
// INVALID-RECORD: inputs: ["./yet-another.swift", ""], output: {{[{].*[}]$}}
51+
// INVALID-RECORD: inputs: ["./main.swift"], output: {{[{].*[}]$}}
52+
// INVALID-RECORD: inputs: ["./other.swift"], output: {{[{].*[}]$}}
53+
// INVALID-RECORD: inputs: ["./yet-another.swift"], output: {{[{].*[}]$}}

0 commit comments

Comments
 (0)