@@ -42,13 +42,11 @@ void main(List<String> args) async {
4242 help: 'Option to (compile|run|all). Default is all (compile and run).' ,
4343 allowed: ['compile' , 'run' , 'all' ],
4444 defaultsTo: 'all' )
45- ..addOption ('nnbd' ,
46- help: 'Runtime null safety mode (strong|weak|disabled). When enabled '
47- 'will automatically enable the "non-nullable" experiment. Defaults '
48- 'to strong if the experiment is also passed manually, otherwise '
49- 'to disabled.' ,
50- allowed: ['strong' , 'weak' , 'disabled' ],
51- defaultsTo: 'disabled' )
45+ ..addFlag ('sound-null-safety' ,
46+ help: 'Compile for sound null safety at runtime. Passed through to the '
47+ 'DDC binary. Defaults to false.' ,
48+ defaultsTo: false ,
49+ negatable: true )
5250 ..addFlag ('observe' ,
5351 help:
5452 'Run the compiler in the Dart VM with --observe. Implies --debug.' ,
@@ -77,10 +75,7 @@ void main(List<String> args) async {
7775 negatable: false ,
7876 defaultsTo: false )
7977 ..addOption ('vm-service-port' ,
80- help: 'Specify the observatory port. Implied --observe.' )
81- ..addSeparator ('Deprecated and will be removed:' )
82- ..addFlag ('kernel' ,
83- abbr: 'k' , help: 'Ignored. The kernel based DDC is always used.' );
78+ help: 'Specify the observatory port. Implied --observe.' );
8479
8580 var options = parser.parse (args);
8681 if (options['help' ] as bool ) {
@@ -107,14 +102,13 @@ void main(List<String> args) async {
107102 var run = mode == 'run' || mode == 'all' ;
108103 var verbose = options['verbose' ] as bool ;
109104
110- // Enable null-safety either by passing the experiment flag
111- // or by requesting an nnbd mode:
112- var nnbd =
113- experiments.contains ('non-nullable' ) || options['nnbd' ] != 'disabled' ;
114- // Unless weak-mode is specified, default to strict checks
115- var isNnbdStrong = nnbd && options['nnbd' ] != 'weak' ;
116- // Ensure non-nullable is passed as a flag
117- if (nnbd && ! experiments.contains ('non-nullable' )) {
105+ var soundNullSafety = options['sound-null-safety' ] as bool ;
106+ // Enable null safety either by passing the `non-nullable` experiment flag or
107+ // `sound-null-safety`.
108+ var nnbd = experiments.contains ('non-nullable' ) || soundNullSafety;
109+
110+ // Ensure non-nullable is passed as a flag.
111+ if (soundNullSafety && ! experiments.contains ('non-nullable' )) {
118112 experiments.add ('non-nullable' );
119113 }
120114
@@ -210,14 +204,14 @@ void main(List<String> args) async {
210204 String ddcSdk;
211205 String sdkJsPath;
212206 String requirePath;
213- var suffix = isNnbdStrong ? p.join ('sound' , mod) : p.join ('kernel' , mod);
207+ var suffix = soundNullSafety ? p.join ('sound' , mod) : p.join ('kernel' , mod);
214208 if (debug) {
215209 var sdkRoot = p.dirname (p.dirname (ddcPath));
216210 var buildDir =
217211 p.join (sdkRoot, Platform .isMacOS ? 'xcodebuild' : 'out' , 'ReleaseX64' );
218212 dartSdk = p.join (buildDir, 'dart-sdk' );
219- ddcSdk = p.join (
220- buildDir, isNnbdStrong ? 'ddc_outline_sound.dill' : 'ddc_outline.dill' );
213+ ddcSdk = p.join (buildDir,
214+ soundNullSafety ? 'ddc_outline_sound.dill' : 'ddc_outline.dill' );
221215 sdkJsPath = p.join (buildDir, 'gen' , 'utils' , 'dartdevc' , suffix);
222216 requirePath = p.join (sdkRoot, 'third_party' , 'requirejs' );
223217 } else {
@@ -233,13 +227,12 @@ void main(List<String> args) async {
233227
234228 if (compile) {
235229 var ddcArgs = [
236- '--kernel' ,
237230 if (summarizeText) '--summarize-text' ,
238231 '--modules=$mod ' ,
239232 '--dart-sdk-summary=$ddcSdk ' ,
240233 for (var summary in summaries) '--summary=$summary ' ,
241234 for (var experiment in experiments) '--enable-experiment=$experiment ' ,
242- if (isNnbdStrong ) '--sound-null-safety' ,
235+ if (soundNullSafety ) '--sound-null-safety' ,
243236 if (options['packages' ] != null ) '--packages=${options ['packages' ]}' ,
244237 '-o' ,
245238 out,
@@ -277,8 +270,8 @@ void main(List<String> args) async {
277270 function(sdk, app) {
278271 'use strict';
279272 if ($nnbd ) {
280- sdk.dart.nullSafety($isNnbdStrong );
281- sdk.dart.weakNullSafetyWarnings(!$isNnbdStrong );
273+ sdk.dart.nullSafety($soundNullSafety );
274+ sdk.dart.weakNullSafetyWarnings(!$soundNullSafety );
282275 }
283276 sdk._debugger.registerDevtoolsFormatter();
284277 app.$libname .main();
@@ -310,8 +303,8 @@ let sdk = require(\"dart_sdk\");
310303let main = require(\" ./$basename \" ).$libname .main;
311304try {
312305 if ($nnbd ) {
313- sdk.dart.nullSafety($isNnbdStrong );
314- sdk.dart.weakNullSafetyWarnings(!$isNnbdStrong );
306+ sdk.dart.nullSafety($soundNullSafety );
307+ sdk.dart.weakNullSafetyWarnings(!$soundNullSafety );
315308 }
316309 sdk._isolate_helper.startRootIsolate(main, []);
317310} catch(e) {
@@ -344,8 +337,8 @@ import { $libname } from '$basename.js';
344337let main = $libname .main;
345338try {
346339 if ($nnbd ) {
347- dart.nullSafety($isNnbdStrong );
348- dart.weakNullSafetyWarnings(!$isNnbdStrong );
340+ dart.nullSafety($soundNullSafety );
341+ dart.weakNullSafetyWarnings(!$soundNullSafety );
349342 }
350343 _isolate_helper.startRootIsolate(() => {}, []);
351344 main();
0 commit comments