Skip to content

Commit e7b0d4f

Browse files
joshualittCommit Queue
authored and
Commit Queue
committed
[kernel_worker] Support unevaluated constants.
Bug: #50535 Change-Id: Iabdaa1460c74d70a0ae44b60c5ecc9287a9740cf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/271562 Commit-Queue: Joshua Litt <[email protected]> Reviewed-by: Johnni Winther <[email protected]>
1 parent d2d4ae0 commit e7b0d4f

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ InitializedCompilerState initializeCompiler(
107107
Target target,
108108
FileSystem fileSystem,
109109
Iterable<String> experiments,
110-
Map<String, String> environmentDefines, {
110+
Map<String, String>? environmentDefines, {
111111
bool verbose = false,
112112
NnbdMode nnbdMode = NnbdMode.Weak,
113113
}) {

pkg/frontend_server/lib/compute_kernel.dart

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ final summaryArgsParser = new ArgParser()
9595
..addMultiOption('define', abbr: 'D')
9696
..addFlag('verbose', defaultsTo: false)
9797
..addFlag('sound-null-safety', defaultsTo: false)
98+
..addFlag('null-environment', defaultsTo: false, negatable: false)
9899
..addOption('verbosity',
99100
defaultsTo: fe.Verbosity.defaultValue,
100101
help: 'Sets the verbosity level used for filtering messages during '
@@ -238,9 +239,24 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
238239
(parsedArgs['input-summary'] as List<String>).map(toUri).toList();
239240

240241
fe.InitializedCompilerState state;
241-
bool usingIncrementalCompiler = false;
242+
bool usingIncrementalCompiler = parsedArgs['use-incremental-compiler'];
242243
bool recordUsedInputs = parsedArgs["used-inputs"] != null;
244+
bool usingNullEnvironment = parsedArgs['null-environment'];
245+
Map<String, String>? nullableEnvironmentDefines;
243246
var environmentDefines = _parseEnvironmentDefines(parsedArgs['define']);
247+
if (usingNullEnvironment) {
248+
if (environmentDefines.isNotEmpty) {
249+
throw ArgumentError('`--null-environment` not supported with defines.');
250+
} else if (!target.constantsBackend.supportsUnevaluatedConstants) {
251+
throw ArgumentError(
252+
'`--null-environment` not supported on `$targetName`.');
253+
} else if (usingIncrementalCompiler) {
254+
throw ArgumentError(
255+
'`--null-environment` not supported with incremental compilation.');
256+
}
257+
} else {
258+
nullableEnvironmentDefines = environmentDefines;
259+
}
244260
var verbose = parsedArgs['verbose'] as bool;
245261
var verbosity = fe.Verbosity.parseArgument(parsedArgs['verbosity']);
246262
Uri? sdkSummaryUri = toUriNullable(parsedArgs['dart-sdk-summary']);
@@ -276,7 +292,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
276292
target,
277293
fileSystem,
278294
parsedArgs['enable-experiment'] as List<String>,
279-
environmentDefines,
295+
nullableEnvironmentDefines,
280296
verbose: verbose,
281297
nnbdMode: nnbdMode);
282298
var uriTranslator = await helper.processedOpts.getUriTranslator();
@@ -288,9 +304,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
288304
}
289305
}
290306

291-
if (parsedArgs['use-incremental-compiler']) {
292-
usingIncrementalCompiler = true;
293-
307+
if (usingIncrementalCompiler) {
294308
// If digests weren't given and if not in worker mode, create fake data and
295309
// ensure we don't have a previous state (as that wouldn't be safe with
296310
// fake input digests).
@@ -324,7 +338,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
324338
fileSystem,
325339
(parsedArgs['enable-experiment'] as List<String>),
326340
summaryOnly,
327-
environmentDefines,
341+
nullableEnvironmentDefines!,
328342
trackNeededDillLibraries: recordUsedInputs,
329343
verbose: verbose,
330344
nnbdMode: nnbdMode);
@@ -339,7 +353,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
339353
target,
340354
fileSystem,
341355
parsedArgs['enable-experiment'] as List<String>,
342-
environmentDefines,
356+
nullableEnvironmentDefines,
343357
verbose: verbose,
344358
nnbdMode: nnbdMode);
345359
}

0 commit comments

Comments
 (0)