OLD | NEW |
---|---|
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 engine; | 5 library engine; |
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 | 10 |
(...skipping 8397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
8408 DartEntry dartEntry = sourceEntry; | 8408 DartEntry dartEntry = sourceEntry; |
8409 if (astIsNeeded(dartEntry)) { | 8409 if (astIsNeeded(dartEntry)) { |
8410 return RetentionPriority.MEDIUM; | 8410 return RetentionPriority.MEDIUM; |
8411 } | 8411 } |
8412 } | 8412 } |
8413 return RetentionPriority.LOW; | 8413 return RetentionPriority.LOW; |
8414 } | 8414 } |
8415 } | 8415 } |
8416 | 8416 |
8417 /** | 8417 /** |
8418 * An error listener that can be enabled or disabled while executing a function. | |
8419 */ | |
8420 class DisablableErrorListener implements AnalysisErrorListener { | |
scheglov
2015/09/08 15:36:22
Why don't we put it in error.dart ?
Brian Wilkerson
2015/09/08 17:10:33
Done
| |
8421 /** | |
8422 * The listener to which errors will be reported if this listener is enabled. | |
8423 */ | |
8424 final AnalysisErrorListener baseListener; | |
8425 | |
8426 /** | |
8427 * A flag indicating whether this listener is currently enabled. | |
8428 */ | |
8429 bool enabled = true; | |
8430 | |
8431 /** | |
8432 * Initialize a newly created listener to report errors to the given | |
8433 * [baseListener]. | |
8434 */ | |
8435 DisablableErrorListener(this.baseListener); | |
8436 | |
8437 /** | |
8438 * Disable the processing of errors while evaluating the given [function]. | |
8439 * Return the value returned by the function. | |
8440 */ | |
8441 dynamic disableWhile(dynamic function()) { | |
8442 bool wasEnabled = enabled; | |
8443 try { | |
8444 enabled = false; | |
8445 return function(); | |
8446 } finally { | |
8447 enabled = wasEnabled; | |
8448 } | |
8449 } | |
8450 | |
8451 /** | |
8452 * Disable the processing of errors while evaluating the given [function]. | |
8453 * Return the value returned by the function. | |
8454 */ | |
8455 dynamic enableWhile(dynamic function()) { | |
8456 bool wasEnabled = enabled; | |
8457 try { | |
8458 enabled = true; | |
8459 return function(); | |
8460 } finally { | |
8461 enabled = wasEnabled; | |
8462 } | |
8463 } | |
8464 | |
8465 @override | |
8466 void onError(AnalysisError error) { | |
8467 if (enabled) { | |
8468 baseListener.onError(error); | |
8469 } | |
8470 } | |
8471 } | |
8472 | |
8473 /** | |
8418 * Instances of the class `GenerateDartErrorsTask` generate errors and warnings for a single | 8474 * Instances of the class `GenerateDartErrorsTask` generate errors and warnings for a single |
8419 * Dart source. | 8475 * Dart source. |
8420 */ | 8476 */ |
8421 class GenerateDartErrorsTask extends AnalysisTask { | 8477 class GenerateDartErrorsTask extends AnalysisTask { |
8422 /** | 8478 /** |
8423 * The source for which errors and warnings are to be produced. | 8479 * The source for which errors and warnings are to be produced. |
8424 */ | 8480 */ |
8425 final Source source; | 8481 final Source source; |
8426 | 8482 |
8427 /** | 8483 /** |
(...skipping 3606 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
12034 PendingFuture pendingFuture = | 12090 PendingFuture pendingFuture = |
12035 new PendingFuture<T>(_context, source, computeValue); | 12091 new PendingFuture<T>(_context, source, computeValue); |
12036 if (!pendingFuture.evaluate(sourceEntry)) { | 12092 if (!pendingFuture.evaluate(sourceEntry)) { |
12037 _context._pendingFutureSources | 12093 _context._pendingFutureSources |
12038 .putIfAbsent(source, () => <PendingFuture>[]) | 12094 .putIfAbsent(source, () => <PendingFuture>[]) |
12039 .add(pendingFuture); | 12095 .add(pendingFuture); |
12040 } | 12096 } |
12041 return pendingFuture.future; | 12097 return pendingFuture.future; |
12042 } | 12098 } |
12043 } | 12099 } |
OLD | NEW |