Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(119)

Side by Side Diff: pkg/compiler/lib/src/dart2js.dart

Issue 1314833003: Shared commandline flags. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.cmdline; 5 library dart2js.cmdline;
6 6
7 import 'dart:async' 7 import 'dart:async'
8 show Future, EventSink; 8 show Future, EventSink;
9 import 'dart:convert' show UTF8, LineSplitter; 9 import 'dart:convert' show UTF8, LineSplitter;
10 import 'dart:io' 10 import 'dart:io'
11 show exit, File, FileMode, Platform, RandomAccessFile, FileSystemException, 11 show exit, File, FileMode, Platform, RandomAccessFile, FileSystemException,
12 stdin, stderr; 12 stdin, stderr;
13 13
14 import '../compiler.dart' as api; 14 import '../compiler.dart' as api;
15 import 'commandline_options.dart';
15 import 'io/source_file.dart'; 16 import 'io/source_file.dart';
16 import 'source_file_provider.dart'; 17 import 'source_file_provider.dart';
17 import 'filenames.dart'; 18 import 'filenames.dart';
18 import 'util/uri_extras.dart'; 19 import 'util/uri_extras.dart';
19 import 'util/util.dart' show stackTraceFilePrefix; 20 import 'util/util.dart' show stackTraceFilePrefix;
20 import 'util/command_line.dart'; 21 import 'util/command_line.dart';
21 import 'package:sdk_library_metadata/libraries.dart'; 22 import 'package:sdk_library_metadata/libraries.dart';
22 import 'package:package_config/discovery.dart' show findPackages; 23 import 'package:package_config/discovery.dart' show findPackages;
23 24
24 const String LIBRARY_ROOT = '../../../../../sdk'; 25 const String LIBRARY_ROOT = '../../../../../sdk';
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 for (var shortOption in shortOptions) { 280 for (var shortOption in shortOptions) {
280 switch (shortOption) { 281 switch (shortOption) {
281 case 'v': 282 case 'v':
282 setVerbose(null); 283 setVerbose(null);
283 break; 284 break;
284 case 'h': 285 case 'h':
285 case '?': 286 case '?':
286 wantHelp = true; 287 wantHelp = true;
287 break; 288 break;
288 case 'c': 289 case 'c':
289 setCheckedMode('--enable-checked-mode'); 290 setCheckedMode(Flags.enableCheckedMode);
290 break; 291 break;
291 case 'm': 292 case 'm':
292 implyCompilation('--minify'); 293 implyCompilation(Flags.minify);
293 break; 294 break;
294 default: 295 default:
295 throw 'Internal error: "$shortOption" did not match'; 296 throw 'Internal error: "$shortOption" did not match';
296 } 297 }
297 } 298 }
298 } 299 }
299 300
300 List<String> arguments = <String>[]; 301 List<String> arguments = <String>[];
301 List<OptionHandler> handlers = <OptionHandler>[ 302 List<OptionHandler> handlers = <OptionHandler>[
302 new OptionHandler('-[chvm?]+', handleShortOptions), 303 new OptionHandler('-[chvm?]+', handleShortOptions),
303 new OptionHandler('--throw-on-error(?:=[0-9]+)?', handleThrowOnError), 304 new OptionHandler('--throw-on-error(?:=[0-9]+)?', handleThrowOnError),
304 new OptionHandler('--suppress-warnings', (_) { 305 new OptionHandler(Flags.suppressWarnings, (_) {
305 diagnosticHandler.showWarnings = false; 306 diagnosticHandler.showWarnings = false;
306 passThrough('--suppress-warnings'); 307 passThrough(Flags.suppressWarnings);
307 }), 308 }),
308 new OptionHandler('--fatal-warnings', passThrough), 309 new OptionHandler(Flags.fatalWarnings, passThrough),
309 new OptionHandler('--suppress-hints', 310 new OptionHandler(Flags.suppressHints,
310 (_) => diagnosticHandler.showHints = false), 311 (_) => diagnosticHandler.showHints = false),
311 new OptionHandler( 312 new OptionHandler(
312 '--output-type=dart|--output-type=dart-multi|--output-type=js', 313 '--output-type=dart|--output-type=dart-multi|--output-type=js',
313 setOutputType), 314 setOutputType),
314 new OptionHandler('--use-cps-ir', passThrough), 315 new OptionHandler(Flags.useCpsIr, passThrough),
315 new OptionHandler('--no-frequency-based-minification', passThrough), 316 new OptionHandler(Flags.noFrequencyBasedMinification, passThrough),
316 new OptionHandler('--verbose', setVerbose), 317 new OptionHandler(Flags.verbose, setVerbose),
317 new OptionHandler('--version', (_) => wantVersion = true), 318 new OptionHandler(Flags.version, (_) => wantVersion = true),
318 new OptionHandler('--library-root=.+', setLibraryRoot), 319 new OptionHandler('--library-root=.+', setLibraryRoot),
319 new OptionHandler('--out=.+|-o.*', setOutput, multipleArguments: true), 320 new OptionHandler('--out=.+|-o.*', setOutput, multipleArguments: true),
320 new OptionHandler('--allow-mock-compilation', passThrough), 321 new OptionHandler(Flags.allowMockCompilation, passThrough),
321 new OptionHandler('--fast-startup', passThrough), 322 new OptionHandler(Flags.fastStartup, passThrough),
322 new OptionHandler('--minify|-m', implyCompilation), 323 new OptionHandler('${Flags.minify}|-m', implyCompilation),
323 new OptionHandler('--preserve-uris', passThrough), 324 new OptionHandler(Flags.preserveUris, passThrough),
324 new OptionHandler('--force-strip=.*', setStrip), 325 new OptionHandler('--force-strip=.*', setStrip),
325 new OptionHandler('--disable-diagnostic-colors', 326 new OptionHandler(Flags.disableDiagnosticColors,
326 (_) => diagnosticHandler.enableColors = false), 327 (_) => diagnosticHandler.enableColors = false),
327 new OptionHandler('--enable-diagnostic-colors', 328 new OptionHandler(Flags.enableDiagnosticColors,
328 (_) => diagnosticHandler.enableColors = true), 329 (_) => diagnosticHandler.enableColors = true),
329 new OptionHandler('--enable[_-]checked[_-]mode|--checked', 330 new OptionHandler('--enable[_-]checked[_-]mode|--checked',
330 (_) => setCheckedMode('--enable-checked-mode')), 331 (_) => setCheckedMode(Flags.enableCheckedMode)),
331 new OptionHandler('--enable-concrete-type-inference', 332 new OptionHandler(Flags.enableConcreteTypeInference,
332 (_) => implyCompilation( 333 (_) => implyCompilation(
333 '--enable-concrete-type-inference')), 334 Flags.enableConcreteTypeInference)),
334 new OptionHandler('--trust-type-annotations', 335 new OptionHandler(Flags.trustTypeAnnotations,
335 (_) => setTrustTypeAnnotations( 336 (_) => setTrustTypeAnnotations(
336 '--trust-type-annotations')), 337 Flags.trustTypeAnnotations)),
337 new OptionHandler('--trust-primitives', 338 new OptionHandler(Flags.trustPrimitives,
338 (_) => setTrustPrimitives( 339 (_) => setTrustPrimitives(
339 '--trust-primitives')), 340 Flags.trustPrimitives)),
340 new OptionHandler(r'--help|/\?|/h', (_) => wantHelp = true), 341 new OptionHandler(r'--help|/\?|/h', (_) => wantHelp = true),
341 new OptionHandler('--packages=.+', setPackageConfig), 342 new OptionHandler('--packages=.+', setPackageConfig),
342 new OptionHandler('--package-root=.+|-p.+', setPackageRoot), 343 new OptionHandler('--package-root=.+|-p.+', setPackageRoot),
343 new OptionHandler('--analyze-all', setAnalyzeAll), 344 new OptionHandler(Flags.analyzeAll, setAnalyzeAll),
344 new OptionHandler('--analyze-only', setAnalyzeOnly), 345 new OptionHandler(Flags.analyzeOnly, setAnalyzeOnly),
345 new OptionHandler('--no-source-maps', passThrough), 346 new OptionHandler(Flags.noSourceMaps, passThrough),
346 new OptionHandler('--analyze-signatures-only', setAnalyzeOnly), 347 new OptionHandler(Flags.analyzeSignaturesOnly, setAnalyzeOnly),
347 new OptionHandler('--disable-native-live-type-analysis', passThrough), 348 new OptionHandler(Flags.disableNativeLiveTypeAnalysis, passThrough),
348 new OptionHandler('--categories=.*', setCategories), 349 new OptionHandler('--categories=.*', setCategories),
349 new OptionHandler('--disable-type-inference', implyCompilation), 350 new OptionHandler(Flags.disableTypeInference, implyCompilation),
350 new OptionHandler('--terse', passThrough), 351 new OptionHandler(Flags.terse, passThrough),
351 new OptionHandler('--deferred-map=.+', implyCompilation), 352 new OptionHandler('--deferred-map=.+', implyCompilation),
352 new OptionHandler('--dump-info', setDumpInfo), 353 new OptionHandler(Flags.dumpInfo, setDumpInfo),
353 new OptionHandler('--disallow-unsafe-eval', 354 new OptionHandler('--disallow-unsafe-eval',
354 (_) => hasDisallowUnsafeEval = true), 355 (_) => hasDisallowUnsafeEval = true),
355 new OptionHandler('--show-package-warnings', passThrough), 356 new OptionHandler(Flags.showPackageWarnings, passThrough),
356 new OptionHandler('--csp', passThrough), 357 new OptionHandler(Flags.useContentSecurityPolicy, passThrough),
357 new OptionHandler('--enable-experimental-mirrors', passThrough), 358 new OptionHandler(Flags.enableExperimentalMirrors, passThrough),
358 new OptionHandler('--enable-async', (_) { 359 new OptionHandler('--enable-async', (_) {
359 diagnosticHandler.info( 360 diagnosticHandler.info(
360 "Option '--enable-async' is no longer needed. " 361 "Option '--enable-async' is no longer needed. "
361 "Async-await is supported by default.", 362 "Async-await is supported by default.",
362 api.Diagnostic.HINT); 363 api.Diagnostic.HINT);
363 }), 364 }),
364 new OptionHandler('--enable-null-aware-operators', (_) { 365 new OptionHandler('--enable-null-aware-operators', (_) {
365 diagnosticHandler.info( 366 diagnosticHandler.info(
366 "Option '--enable-null-aware-operators' is no longer needed. " 367 "Option '--enable-null-aware-operators' is no longer needed. "
367 "Null aware operators are supported by default.", 368 "Null aware operators are supported by default.",
368 api.Diagnostic.HINT); 369 api.Diagnostic.HINT);
369 }), 370 }),
370 new OptionHandler('--enable-enum', (_) { 371 new OptionHandler('--enable-enum', (_) {
371 diagnosticHandler.info( 372 diagnosticHandler.info(
372 "Option '--enable-enum' is no longer needed. " 373 "Option '--enable-enum' is no longer needed. "
373 "Enums are supported by default.", 374 "Enums are supported by default.",
374 api.Diagnostic.HINT); 375 api.Diagnostic.HINT);
375 }), 376 }),
376 new OptionHandler('--allow-native-extensions', setAllowNativeExtensions), 377 new OptionHandler(Flags.allowNativeExtensions, setAllowNativeExtensions),
377 new OptionHandler('--generate-code-with-compile-time-errors', passThrough), 378 new OptionHandler(Flags.generateCodeWithCompileTimeErrors, passThrough),
378 new OptionHandler('--test-mode', passThrough), 379 new OptionHandler(Flags.testMode, passThrough),
379 380
380 // The following three options must come last. 381 // The following three options must come last.
381 new OptionHandler('-D.+=.*', addInEnvironment), 382 new OptionHandler('-D.+=.*', addInEnvironment),
382 new OptionHandler('-.*', (String argument) { 383 new OptionHandler('-.*', (String argument) {
383 helpAndFail("Unknown option '$argument'."); 384 helpAndFail("Unknown option '$argument'.");
384 }), 385 }),
385 new OptionHandler('.*', (String argument) { 386 new OptionHandler('.*', (String argument) {
386 arguments.add(nativeToUriPath(argument)); 387 arguments.add(nativeToUriPath(argument));
387 }) 388 })
388 ]; 389 ];
(...skipping 19 matching lines...) Expand all
408 } 409 }
409 if (arguments.isEmpty) { 410 if (arguments.isEmpty) {
410 helpAndFail('No Dart file specified.'); 411 helpAndFail('No Dart file specified.');
411 } 412 }
412 if (arguments.length > 1) { 413 if (arguments.length > 1) {
413 var extra = arguments.sublist(1); 414 var extra = arguments.sublist(1);
414 helpAndFail('Extra arguments: ${extra.join(" ")}'); 415 helpAndFail('Extra arguments: ${extra.join(" ")}');
415 } 416 }
416 417
417 if (checkedMode && trustTypeAnnotations) { 418 if (checkedMode && trustTypeAnnotations) {
418 helpAndFail("Option '--trust-type-annotations' may not be used in " 419 helpAndFail("Option '${Flags.trustTypeAnnotations}' may not be used in "
419 "checked mode."); 420 "checked mode.");
420 } 421 }
421 422
422 if (packageRoot != null && packageConfig != null) { 423 if (packageRoot != null && packageConfig != null) {
423 helpAndFail("Cannot specify both '--package-root' and '--packages."); 424 helpAndFail("Cannot specify both '--package-root' and '--packages.");
424 } 425 }
425 426
426 if ((analyzeOnly || analyzeAll) && !optionsImplyCompilation.isEmpty) { 427 if ((analyzeOnly || analyzeAll) && !optionsImplyCompilation.isEmpty) {
427 if (!analyzeOnly) { 428 if (!analyzeOnly) {
428 diagnosticHandler.info( 429 diagnosticHandler.info(
429 "Option '--analyze-all' implies '--analyze-only'.", 430 "Option '${Flags.analyzeAll}' implies '${Flags.analyzeOnly}'.",
430 api.Diagnostic.INFO); 431 api.Diagnostic.INFO);
431 } 432 }
432 diagnosticHandler.info( 433 diagnosticHandler.info(
433 "Options $optionsImplyCompilation indicate that output is expected, " 434 "Options $optionsImplyCompilation indicate that output is expected, "
434 "but compilation is turned off by the option '--analyze-only'.", 435 "but compilation is turned off by the option '${Flags.analyzeOnly}'.",
435 api.Diagnostic.INFO); 436 api.Diagnostic.INFO);
436 } 437 }
437 if (analyzeAll) analyzeOnly = true; 438 if (analyzeAll) analyzeOnly = true;
438 if (!analyzeOnly) { 439 if (!analyzeOnly) {
439 if (allowNativeExtensions) { 440 if (allowNativeExtensions) {
440 helpAndFail("Option '--allow-native-extensions' is only supported in " 441 helpAndFail("Option '${Flags.allowNativeExtensions}' is only supported "
441 "combination with the '--analyze-only' option."); 442 "in combination with the '${Flags.analyzeOnly}' option.");
442 } 443 }
443 } 444 }
444 if (dumpInfo && outputLanguage == OUTPUT_LANGUAGE_DART) { 445 if (dumpInfo && outputLanguage == OUTPUT_LANGUAGE_DART) {
445 helpAndFail("Option '--dump-info' is not supported in " 446 helpAndFail("Option '${Flags.dumpInfo}' is not supported in "
446 "combination with the '--output-type=dart' option."); 447 "combination with the '--output-type=dart' option.");
447 } 448 }
448 449
449 options.add('--out=$out'); 450 options.add('--out=$out');
450 options.add('--source-map=$sourceMapOut'); 451 options.add('--source-map=$sourceMapOut');
451 452
452 RandomAccessFileOutputProvider outputProvider = 453 RandomAccessFileOutputProvider outputProvider =
453 new RandomAccessFileOutputProvider( 454 new RandomAccessFileOutputProvider(
454 out, sourceMapOut, onInfo: diagnosticHandler.info, onFailure: fail); 455 out, sourceMapOut, onInfo: diagnosticHandler.info, onFailure: fail);
455 456
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 } else if (exitCode == 253) { 768 } else if (exitCode == 253) {
768 print(">>> TEST CRASH"); 769 print(">>> TEST CRASH");
769 } else { 770 } else {
770 print(">>> TEST FAIL"); 771 print(">>> TEST FAIL");
771 } 772 }
772 stderr.writeln(">>> EOF STDERR"); 773 stderr.writeln(">>> EOF STDERR");
773 subscription.resume(); 774 subscription.resume();
774 }); 775 });
775 }); 776 });
776 } 777 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/commandline_options.dart ('k') | tests/compiler/dart2js/analyze_dart2js_helpers_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698