Skip to content

Commit 9ed1efe

Browse files
nshahanCommit Queue
authored andcommitted
[ddc] Use typed ArgResults helper methods
Change-Id: I906c3cc5d9b80b5d6818cf0af779cc2de56d4db7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/449364 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Nicholas Shahan <[email protected]>
1 parent c845c07 commit 9ed1efe

File tree

5 files changed

+85
-88
lines changed

5 files changed

+85
-88
lines changed

pkg/dev_compiler/lib/src/command/command.dart

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ Future<CompilerResult> _compile(
107107
return CompilerResult(64);
108108
}
109109
if (argResults.wasParsed('sound-null-safety')) {
110-
var soundNullSafety = argResults['sound-null-safety'] as bool;
110+
var soundNullSafety = argResults.flag('sound-null-safety');
111111
print(
112112
'Dart 3 only supports sound null safety, '
113113
'see https://dart.dev/null-safety.\n'
@@ -119,7 +119,7 @@ Future<CompilerResult> _compile(
119119
}
120120
}
121121

122-
var outPaths = argResults['out'] as List<String>;
122+
var outPaths = argResults.multiOption('out');
123123
var moduleFormats = parseModuleFormatOption(argResults);
124124
if (outPaths.isEmpty) {
125125
print(
@@ -135,7 +135,7 @@ Future<CompilerResult> _compile(
135135
return CompilerResult(64);
136136
}
137137

138-
if (argResults['help'] as bool || args.isEmpty) {
138+
if (argResults.flag('help') || args.isEmpty) {
139139
print(_usageMessage(argParser));
140140
return CompilerResult(0);
141141
}
@@ -172,7 +172,8 @@ Future<CompilerResult> _compile(
172172
// lib folder). The following [FileSystem] will resolve those references to
173173
// the correct location and keeps the real file location hidden from the
174174
// front end.
175-
var multiRootPaths = (argResults['multi-root'] as Iterable<String>)
175+
var multiRootPaths = argResults
176+
.multiOption('multi-root')
176177
.map(Uri.base.resolve)
177178
.toList();
178179
var multiRootOutputPath = options.multiRootOutputPath;
@@ -198,9 +199,9 @@ Future<CompilerResult> _compile(
198199
summaryPaths.map(sourcePathToUri).cast<Uri>(),
199200
options.summaryModules.values,
200201
);
201-
var sdkSummaryPath = argResults['dart-sdk-summary'] as String?;
202-
var librarySpecPath = argResults['libraries-file'] as String?;
203-
var compileSdk = argResults['compile-sdk'] == true;
202+
var sdkSummaryPath = argResults.option('dart-sdk-summary');
203+
var librarySpecPath = argResults.option('libraries-file');
204+
var compileSdk = argResults.flag('compile-sdk');
204205
if (sdkSummaryPath == null) {
205206
if (!compileSdk) {
206207
sdkSummaryPath = defaultSdkSummaryPath;
@@ -251,8 +252,7 @@ Future<CompilerResult> _compile(
251252
// .dart_tool/package_config.json file to resolve package URIs that are in the
252253
// input summaries, but it seems to.
253254
// This needs further investigation.
254-
var packageFile =
255-
argResults['packages'] as String? ?? _findPackagesFilePath();
255+
var packageFile = argResults.option('packages') ?? _findPackagesFilePath();
256256

257257
var succeeded = true;
258258
void diagnosticMessageHandler(fe.CfeDiagnosticMessage message) {
@@ -268,9 +268,9 @@ Future<CompilerResult> _compile(
268268
onWarning: print,
269269
);
270270

271-
var trackWidgetCreation = argResults['track-widget-creation'] as bool;
271+
var trackWidgetCreation = argResults.flag('track-widget-creation');
272272
var oldCompilerState = compilerState;
273-
var recordUsedInputs = argResults['used-inputs-file'] != null;
273+
var recordUsedInputs = argResults.option('used-inputs-file') != null;
274274
var additionalDills = summaryModules.keys.toList();
275275
fe.DdcResult? result;
276276

@@ -402,7 +402,7 @@ Future<CompilerResult> _compile(
402402

403403
// Output files can be written in parallel, so collect the futures.
404404
var outFiles = <Future>[];
405-
if (argResults['summarize'] as bool) {
405+
if (argResults.flag('summarize')) {
406406
if (outPaths.length > 1) {
407407
print(
408408
'If multiple output files (found ${outPaths.length}) are specified, '
@@ -426,7 +426,7 @@ Future<CompilerResult> _compile(
426426
outFiles.add(sink.flush().then((_) => sink.close()));
427427
}
428428
String? fullDillUri;
429-
if (argResults['experimental-output-compiled-kernel'] as bool) {
429+
if (argResults.flag('experimental-output-compiled-kernel')) {
430430
if (outPaths.length > 1) {
431431
print(
432432
'If multiple output files (found ${outPaths.length}) are specified, '
@@ -448,7 +448,7 @@ Future<CompilerResult> _compile(
448448
kernel.BinaryPrinter(sink).writeComponentFile(compiledLibraries);
449449
outFiles.add(sink.flush().then((_) => sink.close()));
450450
}
451-
if (argResults['summarize-text'] as bool) {
451+
if (argResults.flag('summarize-text')) {
452452
if (outPaths.length > 1) {
453453
print(
454454
'If multiple output files (found ${outPaths.length}) are specified, '
@@ -589,7 +589,7 @@ Future<CompilerResult> _compile(
589589
usedOutlines.addAll(summaryModules.keys);
590590
}
591591

592-
var outputUsedFile = File(argResults['used-inputs-file'] as String);
592+
var outputUsedFile = File(argResults.option('used-inputs-file')!);
593593
outputUsedFile.createSync(recursive: true);
594594
outputUsedFile.writeAsStringSync(usedOutlines.join('\n'));
595595
}
@@ -629,7 +629,7 @@ Future<CompilerResult> compileSdkFromDill(List<String> args) async {
629629
return CompilerResult(64);
630630
}
631631

632-
var outPaths = argResults['out'] as List<String>;
632+
var outPaths = argResults.multiOption('out');
633633
var moduleFormats = parseModuleFormatOption(argResults);
634634
if (outPaths.isEmpty) {
635635
print(

pkg/dev_compiler/lib/src/command/options.dart

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -127,33 +127,31 @@ class Options {
127127

128128
Options.fromArguments(ArgResults args)
129129
: this(
130-
sourceMap: args['source-map'] as bool,
131-
inlineSourceMap: args['inline-source-map'] as bool,
132-
summarizeApi: args['summarize'] as bool,
133-
enableAsserts: args['enable-asserts'] as bool,
134-
replCompile: args['repl-compile'] as bool,
135-
emitDebugMetadata: args['experimental-emit-debug-metadata'] as bool,
136-
emitDebugSymbols: args['emit-debug-symbols'] as bool,
137-
emitFullCompiledKernel:
138-
args['experimental-output-compiled-kernel'] as bool,
139-
reloadLastAcceptedKernel:
140-
args['reload-last-accepted-kernel'] as String?,
141-
reloadDeltaKernel: args['reload-delta-kernel'] as String?,
142-
summaryModules: _parseCustomSummaryModules(
143-
args['summary'] as List<String>,
130+
sourceMap: args.flag('source-map'),
131+
inlineSourceMap: args.flag('inline-source-map'),
132+
summarizeApi: args.flag('summarize'),
133+
enableAsserts: args.flag('enable-asserts'),
134+
replCompile: args.flag('repl-compile'),
135+
emitDebugMetadata: args.flag('experimental-emit-debug-metadata'),
136+
emitDebugSymbols: args.flag('emit-debug-symbols'),
137+
emitFullCompiledKernel: args.flag(
138+
'experimental-output-compiled-kernel',
144139
),
140+
reloadLastAcceptedKernel: args.option('reload-last-accepted-kernel'),
141+
reloadDeltaKernel: args.option('reload-delta-kernel'),
142+
summaryModules: _parseCustomSummaryModules(args.multiOption('summary')),
145143
nonHotReloadablePackages: Set.from(
146-
args['non-hot-reloadable-package'] as List<String>,
144+
args.multiOption('non-hot-reloadable-package'),
147145
),
148146
moduleFormats: parseModuleFormatOption(args),
149147
moduleName: _getModuleName(args),
150-
multiRootScheme: args['multi-root-scheme'] as String,
151-
multiRootOutputPath: args['multi-root-output-path'] as String?,
148+
multiRootScheme: args.option('multi-root-scheme')!,
149+
multiRootOutputPath: args.option('multi-root-output-path'),
152150
experiments: parseExperimentalArguments(
153-
args['enable-experiment'] as List<String>,
151+
args.multiOption('enable-experiment'),
154152
),
155-
canaryFeatures: args['canary'] as bool,
156-
dynamicModule: args['dynamic-module'] as bool,
153+
canaryFeatures: args.flag('canary'),
154+
dynamicModule: args.flag('dynamic-module'),
157155
);
158156

159157
Options.fromSdkRequiredArguments(ArgResults args)
@@ -162,15 +160,15 @@ class Options {
162160
moduleFormats: parseModuleFormatOption(args),
163161
// When compiling the SDK use dart_sdk as the default. This is the
164162
// assumed name in various places around the build systems.
165-
moduleName: args['module-name'] != null
163+
moduleName: args.option('module-name') != null
166164
? _getModuleName(args)
167165
: 'dart_sdk',
168-
multiRootScheme: args['multi-root-scheme'] as String,
169-
multiRootOutputPath: args['multi-root-output-path'] as String?,
166+
multiRootScheme: args.option('multi-root-scheme')!,
167+
multiRootOutputPath: args.option('multi-root-output-path'),
170168
experiments: parseExperimentalArguments(
171-
args['enable-experiment'] as List<String>,
169+
args.multiOption('enable-experiment'),
172170
),
173-
canaryFeatures: args['canary'] as bool,
171+
canaryFeatures: args.flag('canary'),
174172
);
175173

176174
static void addArguments(ArgParser parser, {bool hide = true}) {
@@ -330,9 +328,9 @@ class Options {
330328
}
331329

332330
static String _getModuleName(ArgResults args) {
333-
var moduleName = args['module-name'] as String?;
331+
var moduleName = args.option('module-name');
334332
if (moduleName == null) {
335-
var outPaths = args['out'] as List<String>;
333+
var outPaths = args.multiOption('out');
336334
if (outPaths.isEmpty) {
337335
throw UnsupportedError(
338336
'No module name provided and unable to synthesize one without any '

pkg/dev_compiler/lib/src/compiler/module_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ModuleFormat parseModuleFormat(String s) {
5959

6060
/// Parse the module format option added by [addModuleFormatOptions].
6161
List<ModuleFormat> parseModuleFormatOption(ArgResults args) {
62-
return (args['modules'] as List<String>).map(parseModuleFormat).toList();
62+
return args.multiOption('modules').map(parseModuleFormat).toList();
6363
}
6464

6565
/// Adds an option to the [argParser] for choosing the module format, optionally

pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -168,46 +168,43 @@ class ExpressionCompilerWorker {
168168
var parsedArgs = argParser.parse(args);
169169

170170
FileSystem fileSystem = StandardFileSystem.instance;
171-
var multiRoots = (parsedArgs['multi-root'] as Iterable<String>)
171+
var multiRoots = parsedArgs
172+
.multiOption('multi-root')
172173
.map(Uri.base.resolve)
173174
.toList();
174-
var multiRootScheme = parsedArgs['multi-root-scheme'] as String;
175+
var multiRootScheme = parsedArgs.option('multi-root-scheme')!;
175176
if (multiRoots.isNotEmpty) {
176177
fileSystem = MultiRootFileSystem(multiRootScheme, multiRoots, fileSystem);
177178
}
178-
var assetServerAddress = parsedArgs['asset-server-address'] as String?;
179+
var assetServerAddress = parsedArgs.option('asset-server-address');
179180
if (assetServerAddress != null) {
180-
var assetServerPort = parsedArgs['asset-server-port'] as String?;
181+
var assetServerPort = parsedArgs.option('asset-server-port');
181182
fileSystem = AssetFileSystem(
182183
fileSystem,
183184
assetServerAddress,
184185
assetServerPort ?? '8080',
185186
);
186187
}
187188
var explicitExperimentalFlags = parseExperimentalFlags(
188-
parseExperimentalArguments(
189-
parsedArgs['enable-experiment'] as List<String>,
190-
),
189+
parseExperimentalArguments(parsedArgs.multiOption('enable-experiment')),
191190
onError: (e) => throw e,
192191
);
193192

194-
var moduleFormat = parseModuleFormat(parsedArgs['module-format'] as String);
193+
var moduleFormat = parseModuleFormat(parsedArgs.option('module-format')!);
195194

196195
return create(
197-
librariesSpecificationUri: _argToUri(
198-
parsedArgs['libraries-file'] as String?,
199-
),
200-
packagesFile: _argToUri(parsedArgs['packages-file'] as String?),
201-
sdkSummary: _argToUri(parsedArgs['dart-sdk-summary'] as String?),
196+
librariesSpecificationUri: _argToUri(parsedArgs.option('libraries-file')),
197+
packagesFile: _argToUri(parsedArgs.option('packages-file')),
198+
sdkSummary: _argToUri(parsedArgs.option('dart-sdk-summary')),
202199
fileSystem: fileSystem,
203200
environmentDefines: environmentDefines,
204201
explicitExperimentalFlags: explicitExperimentalFlags,
205-
sdkRoot: _argToUri(parsedArgs['sdk-root'] as String?),
206-
trackWidgetCreation: parsedArgs['track-widget-creation'] as bool,
202+
sdkRoot: _argToUri(parsedArgs.option('sdk-root')),
203+
trackWidgetCreation: parsedArgs.flag('track-widget-creation'),
207204
moduleFormat: moduleFormat,
208-
canaryFeatures: parsedArgs['canary'] as bool,
209-
enableAsserts: parsedArgs['enable-asserts'] as bool,
210-
verbose: parsedArgs['verbose'] as bool,
205+
canaryFeatures: parsedArgs.flag('canary'),
206+
enableAsserts: parsedArgs.flag('enable-asserts'),
207+
verbose: parsedArgs.flag('verbose'),
211208
requestStream: requestStream,
212209
sendResponse: sendResponse,
213210
onDone: () {

pkg/dev_compiler/tool/ddb

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -102,37 +102,38 @@ void main(List<String> args) async {
102102
..addOption('vm-service-port',
103103
help: 'Specify the observatory port. Implied --observe.');
104104

105-
var options = parser.parse(args);
106-
if (options['help'] as bool) {
105+
var parsedArgs = parser.parse(args);
106+
if (parsedArgs.flag('help')) {
107107
printUsage();
108108
print('Available options:');
109109
print(parser.usage);
110110
exit(0);
111111
}
112-
if (options.rest.isEmpty) {
112+
if (parsedArgs.rest.isEmpty) {
113113
print('Dart script file required.\n');
114114
printUsage();
115115
exit(1);
116116
}
117-
var arch = options['arch'] as String?;
118-
var debug = options['debug'] as bool ||
119-
options['observe'] as bool ||
120-
options.wasParsed('vm-service-port');
121-
var summarizeText = options['summarize-text'] as bool;
122-
var binary = options['binary'] as String?;
123-
var experiments = options['enable-experiment'] as List<String>;
124-
var summaries = options['summary'] as List<String>;
125-
var port = int.parse(options['port'] as String);
126-
var mode = options['mode'] as String;
117+
var arch = parsedArgs.option('arch');
118+
var debug =
119+
parsedArgs.flag('debug') ||
120+
parsedArgs.flag('observe') ||
121+
parsedArgs.wasParsed('vm-service-port');
122+
var summarizeText = parsedArgs.flag('summarize-text');
123+
var binary = parsedArgs.option('binary');
124+
var experiments = parsedArgs.multiOption('enable-experiment');
125+
var summaries = parsedArgs.multiOption('summary');
126+
var port = int.parse(parsedArgs.option('port')!);
127+
var mode = parsedArgs.option('mode')!;
127128
var compile = mode == 'compile' || mode == 'all';
128129
var run = mode == 'run' || mode == 'all';
129-
var verbose = options['verbose'] as bool;
130-
var emitDebugSymbols = options['emit-debug-symbols'] as bool;
131-
var nativeNonNullAsserts = options['native-null-assertions'] as bool;
132-
var jsInteropNonNullAsserts = options['interop-null-assertions'] as bool;
133-
var ddcModules = options['ddc-modules'] as bool;
134-
var canaryFeatures = options['canary'] as bool;
135-
var sourceFiles = options.rest.map(p.canonicalize);
130+
var verbose = parsedArgs.flag('verbose');
131+
var emitDebugSymbols = parsedArgs.flag('emit-debug-symbols');
132+
var nativeNonNullAsserts = parsedArgs.flag('native-null-assertions');
133+
var jsInteropNonNullAsserts = parsedArgs.flag('interop-null-assertions');
134+
var ddcModules = parsedArgs.flag('ddc-modules');
135+
var canaryFeatures = parsedArgs.flag('canary');
136+
var sourceFiles = parsedArgs.rest.map(p.canonicalize);
136137
var entryPoint = sourceFiles.last;
137138
var libRoot = p.dirname(entryPoint);
138139
var basename = p.basenameWithoutExtension(entryPoint);
@@ -186,11 +187,11 @@ void main(List<String> args) async {
186187

187188
Future<void> runDdc(List<String> ddcArgs) async {
188189
var observe =
189-
options.wasParsed('vm-service-port') || options['observe'] as bool;
190-
var vmServicePort = options.wasParsed('vm-service-port')
191-
? '=${options['vm-service-port']}'
190+
parsedArgs.wasParsed('vm-service-port') || parsedArgs.flag('observe');
191+
var vmServicePort = parsedArgs.wasParsed('vm-service-port')
192+
? '=${parsedArgs.option('vm-service-port')!}'
192193
: '';
193-
var vmOptions = options['compile-vm-options'] as String?;
194+
var vmOptions = parsedArgs.option('compile-vm-options');
194195
var args = <String>[
195196
...?vmOptions?.split(' '),
196197
if (debug) ...[
@@ -214,7 +215,7 @@ void main(List<String> args) async {
214215
var chrome = false;
215216
var node = false;
216217
var d8 = false;
217-
var runtime = options['runtime'] as String?;
218+
var runtime = parsedArgs.option('runtime');
218219
switch (runtime) {
219220
case 'node':
220221
// TODO(nshahan): Cleanup after the ddc module format is used everywhere.
@@ -254,13 +255,14 @@ void main(List<String> args) async {
254255
}
255256
var outputs = <String>[];
256257
if (compile) {
258+
var packages = parsedArgs.option('packages');
257259
var ddcArgs = [
258260
if (summarizeText) '--summarize-text',
259261
'--modules=$mod',
260262
'--dart-sdk-summary=$sdkOutlineDill',
261263
for (var summary in summaries) '--summary=$summary',
262264
for (var experiment in experiments) '--enable-experiment=$experiment',
263-
if (options['packages'] != null) '--packages=${options['packages']}',
265+
if (packages != null) '--packages=$packages',
264266
if (emitDebugSymbols) '--emit-debug-symbols',
265267
if (canaryFeatures) '--canary',
266268
// Provide predictable library URIs for all libraries when using the

0 commit comments

Comments
 (0)