| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 /// Command line tool to run the checker on a Dart program. | 5 /// Command line tool to run the checker on a Dart program. |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection'; | 8 import 'dart:collection'; |
| 9 import 'dart:math' as math; | 9 import 'dart:math' as math; |
| 10 import 'dart:io'; | 10 import 'dart:io'; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 bool get failure => _failure; | 79 bool get failure => _failure; |
| 80 | 80 |
| 81 final _pendingLibraries = <List<CompilationUnit>>[]; | 81 final _pendingLibraries = <List<CompilationUnit>>[]; |
| 82 | 82 |
| 83 BatchCompiler(AnalysisContext context, CompilerOptions options, | 83 BatchCompiler(AnalysisContext context, CompilerOptions options, |
| 84 {AnalysisErrorListener reporter, | 84 {AnalysisErrorListener reporter, |
| 85 FileSystem fileSystem: const FileSystem()}) | 85 FileSystem fileSystem: const FileSystem()}) |
| 86 : super( | 86 : super( |
| 87 context, | 87 context, |
| 88 options, | 88 options, |
| 89 new ErrorCollector(reporter ?? AnalysisErrorListener.NULL_LISTENER), | 89 new ErrorCollector( |
| 90 context, reporter ?? AnalysisErrorListener.NULL_LISTENER), |
| 90 fileSystem) { | 91 fileSystem) { |
| 91 _inputBaseDir = options.inputBaseDir; | 92 _inputBaseDir = options.inputBaseDir; |
| 92 if (outputDir != null) { | 93 if (outputDir != null) { |
| 93 _jsGen = new JSGenerator(this); | 94 _jsGen = new JSGenerator(this); |
| 94 _runtimeOutputDir = path.join(outputDir, 'dev_compiler', 'runtime'); | 95 _runtimeOutputDir = path.join(outputDir, 'dev_compiler', 'runtime'); |
| 95 } | 96 } |
| 96 _dartCore = context.typeProvider.objectType.element.library; | 97 _dartCore = context.typeProvider.objectType.element.library; |
| 97 } | 98 } |
| 98 | 99 |
| 99 ErrorCollector get reporter => super.reporter; | 100 ErrorCollector get reporter => super.reporter; |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 434 bool computeErrors(Source source) { | 435 bool computeErrors(Source source) { |
| 435 AnalysisContext errorContext = context; | 436 AnalysisContext errorContext = context; |
| 436 // TODO(jmesserly): should this be a fix somewhere in analyzer? | 437 // TODO(jmesserly): should this be a fix somewhere in analyzer? |
| 437 // otherwise we fail to find the parts. | 438 // otherwise we fail to find the parts. |
| 438 if (source.isInSystemLibrary) { | 439 if (source.isInSystemLibrary) { |
| 439 errorContext = context.sourceFactory.dartSdk.context; | 440 errorContext = context.sourceFactory.dartSdk.context; |
| 440 } | 441 } |
| 441 List<AnalysisError> errors = errorContext.computeErrors(source); | 442 List<AnalysisError> errors = errorContext.computeErrors(source); |
| 442 bool failure = false; | 443 bool failure = false; |
| 443 for (var error in errors) { | 444 for (var error in errors) { |
| 444 ErrorCode code = error.errorCode; | 445 // TODO(jmesserly): this is a very expensive lookup, and it has to be |
| 445 // Always skip TODOs. | 446 // repeated every time we want to query error severity. |
| 446 if (code.type == ErrorType.TODO) continue; | 447 var severity = errorSeverity(errorContext, error); |
| 447 | 448 if (severity == ErrorSeverity.ERROR) { |
| 448 // TODO(jmesserly): for now, treat DDC errors as having a different | |
| 449 // error level from Analayzer ones. | |
| 450 if (isStrongModeError(code)) { | |
| 451 reporter.onError(error); | 449 reporter.onError(error); |
| 452 if (code.errorSeverity == ErrorSeverity.ERROR) { | |
| 453 failure = true; | |
| 454 } | |
| 455 } else if (code.errorSeverity.ordinal >= ErrorSeverity.WARNING.ordinal) { | |
| 456 // All analyzer warnings or errors are errors for DDC. | |
| 457 failure = true; | 450 failure = true; |
| 451 } else if (severity == ErrorSeverity.WARNING) { |
| 458 reporter.onError(error); | 452 reporter.onError(error); |
| 459 } else { | |
| 460 // Skip hints for now. | |
| 461 } | 453 } |
| 462 } | 454 } |
| 463 return failure; | 455 return failure; |
| 464 } | 456 } |
| 465 } | 457 } |
| 466 | 458 |
| 467 // TODO(jmesserly): find a better home for these. | 459 // TODO(jmesserly): find a better home for these. |
| 468 /// Curated order to minimize lazy classes needed by dart:core and its | 460 /// Curated order to minimize lazy classes needed by dart:core and its |
| 469 /// transitive SDK imports. | 461 /// transitive SDK imports. |
| 470 final corelibOrder = [ | 462 final corelibOrder = [ |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 511 var files = [ | 503 var files = [ |
| 512 'harmony_feature_check.js', | 504 'harmony_feature_check.js', |
| 513 'dart_library.js', | 505 'dart_library.js', |
| 514 'dart/_runtime.js', | 506 'dart/_runtime.js', |
| 515 ]; | 507 ]; |
| 516 files.addAll(corelibOrder.map(coreToFile)); | 508 files.addAll(corelibOrder.map(coreToFile)); |
| 517 return files; | 509 return files; |
| 518 }(); | 510 }(); |
| 519 | 511 |
| 520 final _log = new Logger('dev_compiler.src.compiler'); | 512 final _log = new Logger('dev_compiler.src.compiler'); |
| OLD | NEW |