OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 leg_apiimpl; | 5 library leg_apiimpl; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 | 9 |
10 import 'package:package_config/packages.dart'; | 10 import 'package:package_config/packages.dart'; |
11 import 'package:package_config/packages_file.dart' as pkgs; | 11 import 'package:package_config/packages_file.dart' as pkgs; |
12 import 'package:package_config/src/packages_impl.dart' show | 12 import 'package:package_config/src/packages_impl.dart' show |
13 MapPackages, | 13 MapPackages, |
14 NonFilePackagesDirectoryPackages; | 14 NonFilePackagesDirectoryPackages; |
15 import 'package:package_config/src/util.dart' show | 15 import 'package:package_config/src/util.dart' show |
16 checkValidPackageUri; | 16 checkValidPackageUri; |
17 import 'package:sdk_library_metadata/libraries.dart' hide LIBRARIES; | 17 import 'package:sdk_library_metadata/libraries.dart' hide LIBRARIES; |
18 import 'package:sdk_library_metadata/libraries.dart' as library_info show | 18 import 'package:sdk_library_metadata/libraries.dart' as library_info show |
19 LIBRARIES; | 19 LIBRARIES; |
20 | 20 |
21 import '../compiler_new.dart' as api; | 21 import '../compiler_new.dart' as api; |
| 22 import 'commandline_options.dart'; |
22 import 'common/tasks.dart' show | 23 import 'common/tasks.dart' show |
23 GenericTask; | 24 GenericTask; |
24 import 'compiler.dart' as leg; | 25 import 'compiler.dart' as leg; |
25 import 'diagnostics/messages.dart'; | 26 import 'diagnostics/messages.dart'; |
26 import 'diagnostics/source_span.dart' show | 27 import 'diagnostics/source_span.dart' show |
27 SourceSpan; | 28 SourceSpan; |
28 import 'diagnostics/spannable.dart' show | 29 import 'diagnostics/spannable.dart' show |
29 NO_LOCATION_SPANNABLE, | 30 NO_LOCATION_SPANNABLE, |
30 Spannable; | 31 Spannable; |
31 import 'elements/elements.dart' as elements; | 32 import 'elements/elements.dart' as elements; |
(...skipping 27 matching lines...) Expand all Loading... |
59 this.libraryRoot, | 60 this.libraryRoot, |
60 this.packageRoot, | 61 this.packageRoot, |
61 List<String> options, | 62 List<String> options, |
62 this.environment, | 63 this.environment, |
63 [this.packageConfig, | 64 [this.packageConfig, |
64 this.packagesDiscoveryProvider]) | 65 this.packagesDiscoveryProvider]) |
65 : this.options = options, | 66 : this.options = options, |
66 this.allowedLibraryCategories = getAllowedLibraryCategories(options), | 67 this.allowedLibraryCategories = getAllowedLibraryCategories(options), |
67 super( | 68 super( |
68 outputProvider: outputProvider, | 69 outputProvider: outputProvider, |
69 enableTypeAssertions: hasOption(options, '--enable-checked-mode'), | 70 enableTypeAssertions: hasOption(options, Flags.enableCheckedMode), |
70 enableUserAssertions: hasOption(options, '--enable-checked-mode'), | 71 enableUserAssertions: hasOption(options, Flags.enableCheckedMode), |
71 trustTypeAnnotations: | 72 trustTypeAnnotations: |
72 hasOption(options, '--trust-type-annotations'), | 73 hasOption(options, Flags.trustTypeAnnotations), |
73 trustPrimitives: | 74 trustPrimitives: |
74 hasOption(options, '--trust-primitives'), | 75 hasOption(options, Flags.trustPrimitives), |
75 enableMinification: hasOption(options, '--minify'), | 76 enableMinification: hasOption(options, Flags.minify), |
76 useFrequencyNamer: | 77 useFrequencyNamer: |
77 !hasOption(options, "--no-frequency-based-minification"), | 78 !hasOption(options, Flags.noFrequencyBasedMinification), |
78 preserveUris: hasOption(options, '--preserve-uris'), | 79 preserveUris: hasOption(options, Flags.preserveUris), |
79 enableNativeLiveTypeAnalysis: | 80 enableNativeLiveTypeAnalysis: |
80 !hasOption(options, '--disable-native-live-type-analysis'), | 81 !hasOption(options, Flags.disableNativeLiveTypeAnalysis), |
81 emitJavaScript: !(hasOption(options, '--output-type=dart') || | 82 emitJavaScript: !(hasOption(options, '--output-type=dart') || |
82 hasOption(options, '--output-type=dart-multi')), | 83 hasOption(options, '--output-type=dart-multi')), |
83 dart2dartMultiFile: hasOption(options, '--output-type=dart-multi'), | 84 dart2dartMultiFile: hasOption(options, '--output-type=dart-multi'), |
84 generateSourceMap: !hasOption(options, '--no-source-maps'), | 85 generateSourceMap: !hasOption(options, Flags.noSourceMaps), |
85 analyzeAllFlag: hasOption(options, '--analyze-all'), | 86 analyzeAllFlag: hasOption(options, Flags.analyzeAll), |
86 analyzeOnly: hasOption(options, '--analyze-only'), | 87 analyzeOnly: hasOption(options, Flags.analyzeOnly), |
87 analyzeMain: hasOption(options, '--analyze-main'), | 88 analyzeMain: hasOption(options, Flags.analyzeMain), |
88 analyzeSignaturesOnly: | 89 analyzeSignaturesOnly: |
89 hasOption(options, '--analyze-signatures-only'), | 90 hasOption(options, Flags.analyzeSignaturesOnly), |
90 strips: extractCsvOption(options, '--force-strip='), | 91 strips: extractCsvOption(options, '--force-strip='), |
91 enableConcreteTypeInference: | 92 enableConcreteTypeInference: |
92 hasOption(options, '--enable-concrete-type-inference'), | 93 hasOption(options, Flags.enableConcreteTypeInference), |
93 disableTypeInferenceFlag: | 94 disableTypeInferenceFlag: |
94 hasOption(options, '--disable-type-inference'), | 95 hasOption(options, Flags.disableTypeInference), |
95 preserveComments: hasOption(options, '--preserve-comments'), | 96 preserveComments: hasOption(options, Flags.preserveComments), |
96 useCpsIr: hasOption(options, '--use-cps-ir'), | 97 useCpsIr: hasOption(options, Flags.useCpsIr), |
97 verbose: hasOption(options, '--verbose'), | 98 verbose: hasOption(options, Flags.verbose), |
98 sourceMapUri: extractUriOption(options, '--source-map='), | 99 sourceMapUri: extractUriOption(options, '--source-map='), |
99 outputUri: extractUriOption(options, '--out='), | 100 outputUri: extractUriOption(options, '--out='), |
100 terseDiagnostics: hasOption(options, '--terse'), | 101 terseDiagnostics: hasOption(options, Flags.terse), |
101 deferredMapUri: extractUriOption(options, '--deferred-map='), | 102 deferredMapUri: extractUriOption(options, '--deferred-map='), |
102 dumpInfo: hasOption(options, '--dump-info'), | 103 dumpInfo: hasOption(options, Flags.dumpInfo), |
103 buildId: extractStringOption( | 104 buildId: extractStringOption( |
104 options, '--build-id=', | 105 options, '--build-id=', |
105 "build number could not be determined"), | 106 "build number could not be determined"), |
106 showPackageWarnings: | 107 showPackageWarnings: |
107 hasOption(options, '--show-package-warnings'), | 108 hasOption(options, Flags.showPackageWarnings), |
108 useContentSecurityPolicy: hasOption(options, '--csp'), | 109 useContentSecurityPolicy: |
109 useStartupEmitter: hasOption(options, '--fast-startup'), | 110 hasOption(options, Flags.useContentSecurityPolicy), |
| 111 useStartupEmitter: hasOption(options, Flags.fastStartup), |
110 hasIncrementalSupport: | 112 hasIncrementalSupport: |
111 forceIncrementalSupport || | 113 forceIncrementalSupport || |
112 hasOption(options, '--incremental-support'), | 114 hasOption(options, Flags.incrementalSupport), |
113 suppressWarnings: hasOption(options, '--suppress-warnings'), | 115 suppressWarnings: hasOption(options, Flags.suppressWarnings), |
114 fatalWarnings: hasOption(options, '--fatal-warnings'), | 116 fatalWarnings: hasOption(options, Flags.fatalWarnings), |
115 enableExperimentalMirrors: | 117 enableExperimentalMirrors: |
116 hasOption(options, '--enable-experimental-mirrors'), | 118 hasOption(options, Flags.enableExperimentalMirrors), |
117 generateCodeWithCompileTimeErrors: | 119 generateCodeWithCompileTimeErrors: |
118 hasOption(options, '--generate-code-with-compile-time-errors'), | 120 hasOption(options, Flags.generateCodeWithCompileTimeErrors), |
119 testMode: hasOption(options, '--test-mode'), | 121 testMode: hasOption(options, Flags.testMode), |
120 allowNativeExtensions: | 122 allowNativeExtensions: |
121 hasOption(options, '--allow-native-extensions')) { | 123 hasOption(options, Flags.allowNativeExtensions)) { |
122 tasks.addAll([ | 124 tasks.addAll([ |
123 userHandlerTask = new GenericTask('Diagnostic handler', this), | 125 userHandlerTask = new GenericTask('Diagnostic handler', this), |
124 userProviderTask = new GenericTask('Input provider', this), | 126 userProviderTask = new GenericTask('Input provider', this), |
125 userPackagesDiscoveryTask = | 127 userPackagesDiscoveryTask = |
126 new GenericTask('Package discovery', this), | 128 new GenericTask('Package discovery', this), |
127 ]); | 129 ]); |
128 if (libraryRoot == null) { | 130 if (libraryRoot == null) { |
129 throw new ArgumentError("[libraryRoot] is null."); | 131 throw new ArgumentError("[libraryRoot] is null."); |
130 } | 132 } |
131 if (!libraryRoot.path.endsWith("/")) { | 133 if (!libraryRoot.path.endsWith("/")) { |
132 throw new ArgumentError("[libraryRoot] must end with a /."); | 134 throw new ArgumentError("[libraryRoot] must end with a /."); |
133 } | 135 } |
134 if (packageRoot != null && packageConfig != null) { | 136 if (packageRoot != null && packageConfig != null) { |
135 throw new ArgumentError("Only one of [packageRoot] or [packageConfig] " | 137 throw new ArgumentError("Only one of [packageRoot] or [packageConfig] " |
136 "may be given."); | 138 "may be given."); |
137 } | 139 } |
138 if (packageRoot != null && !packageRoot.path.endsWith("/")) { | 140 if (packageRoot != null && !packageRoot.path.endsWith("/")) { |
139 throw new ArgumentError("[packageRoot] must end with a /."); | 141 throw new ArgumentError("[packageRoot] must end with a /."); |
140 } | 142 } |
141 if (!analyzeOnly) { | 143 if (!analyzeOnly) { |
142 if (allowNativeExtensions) { | 144 if (allowNativeExtensions) { |
143 throw new ArgumentError( | 145 throw new ArgumentError( |
144 "--allow-native-extensions is only supported in combination with " | 146 "${Flags.allowNativeExtensions} is only supported in combination " |
145 "--analyze-only"); | 147 "with ${Flags.analyzeOnly}"); |
146 } | 148 } |
147 } | 149 } |
148 } | 150 } |
149 | 151 |
150 static String extractStringOption(List<String> options, | 152 static String extractStringOption(List<String> options, |
151 String prefix, | 153 String prefix, |
152 String defaultValue) { | 154 String defaultValue) { |
153 for (String option in options) { | 155 for (String option in options) { |
154 if (option.startsWith(prefix)) { | 156 if (option.startsWith(prefix)) { |
155 return option.substring(prefix.length); | 157 return option.substring(prefix.length); |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
465 if (span == null || span.uri == null) { | 467 if (span == null || span.uri == null) { |
466 callUserHandler(message, null, null, null, '$message', kind); | 468 callUserHandler(message, null, null, null, '$message', kind); |
467 } else { | 469 } else { |
468 callUserHandler( | 470 callUserHandler( |
469 message, span.uri, span.begin, span.end, '$message', kind); | 471 message, span.uri, span.begin, span.end, '$message', kind); |
470 } | 472 } |
471 } | 473 } |
472 | 474 |
473 bool get isMockCompilation { | 475 bool get isMockCompilation { |
474 return mockableLibraryUsed | 476 return mockableLibraryUsed |
475 && (options.indexOf('--allow-mock-compilation') != -1); | 477 && (options.indexOf(Flags.allowMockCompilation) != -1); |
476 } | 478 } |
477 | 479 |
478 void callUserHandler(Message message, Uri uri, int begin, int end, | 480 void callUserHandler(Message message, Uri uri, int begin, int end, |
479 String text, api.Diagnostic kind) { | 481 String text, api.Diagnostic kind) { |
480 try { | 482 try { |
481 userHandlerTask.measure(() { | 483 userHandlerTask.measure(() { |
482 handler.report(message, uri, begin, end, text, kind); | 484 handler.report(message, uri, begin, end, text, kind); |
483 }); | 485 }); |
484 } catch (ex, s) { | 486 } catch (ex, s) { |
485 diagnoseCrashInUserCode( | 487 diagnoseCrashInUserCode( |
(...skipping 26 matching lines...) Expand all Loading... |
512 print('$message: ${tryToString(exception)}'); | 514 print('$message: ${tryToString(exception)}'); |
513 print(tryToString(stackTrace)); | 515 print(tryToString(stackTrace)); |
514 } | 516 } |
515 | 517 |
516 fromEnvironment(String name) => environment[name]; | 518 fromEnvironment(String name) => environment[name]; |
517 | 519 |
518 LibraryInfo lookupLibraryInfo(String libraryName) { | 520 LibraryInfo lookupLibraryInfo(String libraryName) { |
519 return library_info.LIBRARIES[libraryName]; | 521 return library_info.LIBRARIES[libraryName]; |
520 } | 522 } |
521 } | 523 } |
OLD | NEW |