Skip to content

Commit 22e249d

Browse files
jakemac53commit-bot@chromium.org
authored andcommitted
update kernel worker to support -D environment defines
Change-Id: Ic73cfcc8dc0bd8b721733e0696b028aa572125e0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121927 Reviewed-by: Johnni Winther <[email protected]> Commit-Queue: Jake Macdonald <[email protected]>
1 parent ffcfab3 commit 22e249d

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

pkg/front_end/lib/src/api_unstable/bazel_worker.dart

+6-3
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
6868
FileSystem fileSystem,
6969
Iterable<String> experiments,
7070
bool outlineOnly,
71+
Map<String, String> environmentDefines,
7172
{bool trackNeededDillLibraries: false}) async {
7273
List<Component> outputLoadedInputSummaries =
7374
new List<Component>(summaryInputs.length);
@@ -88,7 +89,8 @@ Future<InitializedCompilerState> initializeIncrementalCompiler(
8889
experimentalFlags: experimentalFlags,
8990
outlineOnly: outlineOnly,
9091
omitPlatform: true,
91-
trackNeededDillLibraries: trackNeededDillLibraries);
92+
trackNeededDillLibraries: trackNeededDillLibraries,
93+
environmentDefines: environmentDefines);
9294
}
9395

9496
Future<InitializedCompilerState> initializeCompiler(
@@ -100,7 +102,8 @@ Future<InitializedCompilerState> initializeCompiler(
100102
List<Uri> linkedInputs,
101103
Target target,
102104
FileSystem fileSystem,
103-
Iterable<String> experiments) async {
105+
Iterable<String> experiments,
106+
Map<String, String> environmentDefines) async {
104107
// TODO(sigmund): use incremental compiler when it supports our use case.
105108
// Note: it is common for the summary worker to invoke the compiler with the
106109
// same input summary URIs, but with different contents, so we'd need to be
@@ -114,7 +117,7 @@ Future<InitializedCompilerState> initializeCompiler(
114117
..linkedDependencies = linkedInputs
115118
..target = target
116119
..fileSystem = fileSystem
117-
..environmentDefines = const {}
120+
..environmentDefines = environmentDefines
118121
..experimentalFlags = parseExperimentalFlags(
119122
parseExperimentalArguments(experiments),
120123
onError: (e) => throw e);

utils/bazel/kernel_worker.dart

+25-2
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,8 @@ final summaryArgsParser = new ArgParser()
142142
..addOption('used-inputs')
143143
..addFlag('track-widget-creation', defaultsTo: false)
144144
..addMultiOption('enable-experiment',
145-
help: 'Enable a language experiment when invoking the CFE.');
145+
help: 'Enable a language experiment when invoking the CFE.')
146+
..addMultiOption('define', abbr: 'D');
146147

147148
class ComputeKernelResult {
148149
final bool succeeded;
@@ -166,6 +167,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
166167
fe.InitializedCompilerState previousState}) async {
167168
dynamic out = outputBuffer ?? stderr;
168169
bool succeeded = true;
170+
169171
var parsedArgs = summaryArgsParser.parse(args);
170172

171173
if (parsedArgs['help']) {
@@ -244,6 +246,8 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
244246
fe.InitializedCompilerState state;
245247
bool usingIncrementalCompiler = false;
246248
bool recordUsedInputs = parsedArgs["used-inputs"] != null;
249+
var environmentDefines = _parseEnvironmentDefines(parsedArgs['define']);
250+
247251
if (parsedArgs['use-incremental-compiler']) {
248252
usingIncrementalCompiler = true;
249253

@@ -286,6 +290,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
286290
fileSystem,
287291
(parsedArgs['enable-experiment'] as List<String>),
288292
summaryOnly,
293+
environmentDefines,
289294
trackNeededDillLibraries: recordUsedInputs);
290295
} else {
291296
state = await fe.initializeCompiler(
@@ -298,7 +303,8 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
298303
linkedInputs,
299304
target,
300305
fileSystem,
301-
(parsedArgs['enable-experiment'] as List<String>));
306+
parsedArgs['enable-experiment'] as List<String>,
307+
environmentDefines);
302308
}
303309

304310
void onDiagnostic(fe.DiagnosticMessage message) {
@@ -448,3 +454,20 @@ Uri _toUri(String uriString) {
448454
// concatenated with Unix-style paths.
449455
return Uri.base.resolve(uriString.replaceAll("\\", "/"));
450456
}
457+
458+
Map<String, String> _parseEnvironmentDefines(List<String> args) {
459+
var environment = <String, String>{};
460+
461+
for (var arg in args) {
462+
var eq = arg.indexOf('=');
463+
if (eq <= 0) {
464+
var kind = eq == 0 ? 'name' : 'value';
465+
throw FormatException('no $kind given to -D option `$arg`');
466+
}
467+
var name = arg.substring(0, eq);
468+
var value = arg.substring(eq + 1);
469+
environment[name] = value;
470+
}
471+
472+
return environment;
473+
}

0 commit comments

Comments
 (0)