@@ -95,6 +95,7 @@ final summaryArgsParser = new ArgParser()
95
95
..addMultiOption ('define' , abbr: 'D' )
96
96
..addFlag ('verbose' , defaultsTo: false )
97
97
..addFlag ('sound-null-safety' , defaultsTo: false )
98
+ ..addFlag ('null-environment' , defaultsTo: false , negatable: false )
98
99
..addOption ('verbosity' ,
99
100
defaultsTo: fe.Verbosity .defaultValue,
100
101
help: 'Sets the verbosity level used for filtering messages during '
@@ -238,9 +239,24 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
238
239
(parsedArgs['input-summary' ] as List <String >).map (toUri).toList ();
239
240
240
241
fe.InitializedCompilerState state;
241
- bool usingIncrementalCompiler = false ;
242
+ bool usingIncrementalCompiler = parsedArgs[ 'use-incremental-compiler' ] ;
242
243
bool recordUsedInputs = parsedArgs["used-inputs" ] != null ;
244
+ bool usingNullEnvironment = parsedArgs['null-environment' ];
245
+ Map <String , String >? nullableEnvironmentDefines;
243
246
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
+ }
244
260
var verbose = parsedArgs['verbose' ] as bool ;
245
261
var verbosity = fe.Verbosity .parseArgument (parsedArgs['verbosity' ]);
246
262
Uri ? sdkSummaryUri = toUriNullable (parsedArgs['dart-sdk-summary' ]);
@@ -276,7 +292,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
276
292
target,
277
293
fileSystem,
278
294
parsedArgs['enable-experiment' ] as List <String >,
279
- environmentDefines ,
295
+ nullableEnvironmentDefines ,
280
296
verbose: verbose,
281
297
nnbdMode: nnbdMode);
282
298
var uriTranslator = await helper.processedOpts.getUriTranslator ();
@@ -288,9 +304,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
288
304
}
289
305
}
290
306
291
- if (parsedArgs['use-incremental-compiler' ]) {
292
- usingIncrementalCompiler = true ;
293
-
307
+ if (usingIncrementalCompiler) {
294
308
// If digests weren't given and if not in worker mode, create fake data and
295
309
// ensure we don't have a previous state (as that wouldn't be safe with
296
310
// fake input digests).
@@ -324,7 +338,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
324
338
fileSystem,
325
339
(parsedArgs['enable-experiment' ] as List <String >),
326
340
summaryOnly,
327
- environmentDefines ,
341
+ nullableEnvironmentDefines ! ,
328
342
trackNeededDillLibraries: recordUsedInputs,
329
343
verbose: verbose,
330
344
nnbdMode: nnbdMode);
@@ -339,7 +353,7 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
339
353
target,
340
354
fileSystem,
341
355
parsedArgs['enable-experiment' ] as List <String >,
342
- environmentDefines ,
356
+ nullableEnvironmentDefines ,
343
357
verbose: verbose,
344
358
nnbdMode: nnbdMode);
345
359
}
0 commit comments