Index: pkg/analyzer/lib/src/task/dart.dart |
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart |
index 8fb0c7528511d0d74b6544bdd9d2bc892d6c9f15..b12498636dddb2338e4740a25a91526256f8b9a0 100644 |
--- a/pkg/analyzer/lib/src/task/dart.dart |
+++ b/pkg/analyzer/lib/src/task/dart.dart |
@@ -405,6 +405,17 @@ final ResultDescriptor<UsedLocalElements> USED_LOCAL_ELEMENTS = |
cachingPolicy: ELEMENT_CACHING_POLICY); |
/** |
+ * The errors produced while resolving variable references in a compilation unit. |
+ * |
+ * The list will be empty if there were no errors, but will not be `null`. |
+ * |
+ * The result is only available for [LibrarySpecificUnit]s. |
+ */ |
+final ListResultDescriptor<AnalysisError> VARIABLE_REFERENCE_ERRORS = |
+ new ListResultDescriptor<AnalysisError>( |
+ 'VARIABLE_REFERENCE_ERRORS', AnalysisError.NO_ERRORS); |
+ |
+/** |
* The errors produced while verifying a compilation unit. |
* |
* The list will be empty if there were no errors, but will not be `null`. |
@@ -416,20 +427,14 @@ final ListResultDescriptor<AnalysisError> VERIFY_ERRORS = |
'VERIFY_ERRORS', AnalysisError.NO_ERRORS); |
/** |
- * Remove [CompileTimeErrorCode.DUPLICATE_DEFINITION] errors from the given |
- * [errors] list. |
+ * Return a list of errors containing the errors from the given [errors] list |
+ * but with duplications removed. |
*/ |
-void removeDuplicateDefinitionErrors(List<AnalysisError> errors) { |
- if (errors.isNotEmpty) { |
- errors.removeWhere((error) { |
- ErrorCode errorCode = error.errorCode; |
- return errorCode == CompileTimeErrorCode.DUPLICATE_DEFINITION || |
- errorCode == CompileTimeErrorCode.GETTER_AND_METHOD_WITH_SAME_NAME || |
- errorCode == CompileTimeErrorCode.METHOD_AND_GETTER_WITH_SAME_NAME || |
- errorCode == |
- CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_MEMBER; |
- }); |
+List<AnalysisError> removeDuplicateErrors(List<AnalysisError> errors) { |
+ if (errors.isEmpty) { |
+ return errors; |
} |
+ return errors.toSet().toList(); |
} |
/** |
@@ -1179,14 +1184,10 @@ class BuildFunctionTypeAliasesTask extends SourceBasedAnalysisTask { |
} |
} |
// |
- // Prepare errors. |
- // |
- List<AnalysisError> errors = errorListener.errors; |
- removeDuplicateDefinitionErrors(errors); |
- // |
// Record outputs. |
// |
- outputs[BUILD_FUNCTION_TYPE_ALIASES_ERRORS] = errors; |
+ outputs[BUILD_FUNCTION_TYPE_ALIASES_ERRORS] = |
+ removeDuplicateErrors(errorListener.errors); |
outputs[RESOLVED_UNIT3] = unit; |
} |
@@ -2551,6 +2552,12 @@ class LibraryUnitErrorsTask extends SourceBasedAnalysisTask { |
'RESOLVE_TYPE_NAMES_ERRORS'; |
/** |
+ * The name of the [VARIABLE_REFERENCE_ERRORS] input. |
+ */ |
+ static const String VARIABLE_REFERENCE_ERRORS_INPUT = |
+ 'VARIABLE_REFERENCE_ERRORS'; |
+ |
+ /** |
* The name of the [VERIFY_ERRORS] input. |
*/ |
static const String VERIFY_ERRORS_INPUT = 'VERIFY_ERRORS'; |
@@ -2584,6 +2591,7 @@ class LibraryUnitErrorsTask extends SourceBasedAnalysisTask { |
errorLists.add(getRequiredInput(HINTS_INPUT)); |
errorLists.add(getRequiredInput(RESOLVE_REFERENCES_ERRORS_INPUT)); |
errorLists.add(getRequiredInput(RESOLVE_TYPE_NAMES_ERRORS_INPUT)); |
+ errorLists.add(getRequiredInput(VARIABLE_REFERENCE_ERRORS_INPUT)); |
errorLists.add(getRequiredInput(VERIFY_ERRORS_INPUT)); |
// |
// Record outputs. |
@@ -2607,6 +2615,7 @@ class LibraryUnitErrorsTask extends SourceBasedAnalysisTask { |
HINTS_INPUT: HINTS.of(unit), |
RESOLVE_REFERENCES_ERRORS_INPUT: RESOLVE_REFERENCES_ERRORS.of(unit), |
RESOLVE_TYPE_NAMES_ERRORS_INPUT: RESOLVE_TYPE_NAMES_ERRORS.of(unit), |
+ VARIABLE_REFERENCE_ERRORS_INPUT: VARIABLE_REFERENCE_ERRORS.of(unit), |
VERIFY_ERRORS_INPUT: VERIFY_ERRORS.of(unit) |
}; |
} |
@@ -2735,7 +2744,8 @@ class ParseDartTask extends SourceBasedAnalysisTask { |
List<Source> exportedSources = exportedSourceSet.toList(); |
List<Source> importedSources = importedSourceSet.toList(); |
List<Source> includedSources = includedSourceSet.toList(); |
- List<AnalysisError> parseErrors = errorListener.errors; |
+ List<AnalysisError> parseErrors = |
+ removeDuplicateErrors(errorListener.errors); |
List<Source> unitSources = <Source>[source]..addAll(includedSourceSet); |
outputs[EXPLICITLY_IMPORTED_LIBRARIES] = explicitlyImportedSources; |
outputs[EXPORTED_LIBRARIES] = exportedSources; |
@@ -2959,7 +2969,8 @@ class ResolveReferencesTask extends SourceBasedAnalysisTask { |
// |
// Record outputs. |
// |
- outputs[RESOLVE_REFERENCES_ERRORS] = errorListener.errors; |
+ outputs[RESOLVE_REFERENCES_ERRORS] = |
+ removeDuplicateErrors(errorListener.errors); |
outputs[RESOLVED_UNIT6] = unit; |
} |
@@ -3038,14 +3049,10 @@ class ResolveUnitTypeNamesTask extends SourceBasedAnalysisTask { |
library, unitElement.source, typeProvider, errorListener); |
unit.accept(visitor); |
// |
- // Prepare errors. |
- // |
- List<AnalysisError> errors = errorListener.errors; |
- removeDuplicateDefinitionErrors(errors); |
- // |
// Record outputs. |
// |
- outputs[RESOLVE_TYPE_NAMES_ERRORS] = errors; |
+ outputs[RESOLVE_TYPE_NAMES_ERRORS] = |
+ removeDuplicateErrors(errorListener.errors); |
outputs[RESOLVED_UNIT4] = unit; |
} |
@@ -3096,7 +3103,7 @@ class ResolveVariableReferencesTask extends SourceBasedAnalysisTask { |
*/ |
static final TaskDescriptor DESCRIPTOR = new TaskDescriptor( |
'ResolveVariableReferencesTask', createTask, buildInputs, |
- <ResultDescriptor>[RESOLVED_UNIT5]); |
+ <ResultDescriptor>[RESOLVED_UNIT5, VARIABLE_REFERENCE_ERRORS]); |
ResolveVariableReferencesTask( |
InternalAnalysisContext context, AnalysisTarget target) |
@@ -3126,6 +3133,8 @@ class ResolveVariableReferencesTask extends SourceBasedAnalysisTask { |
// Record outputs. |
// |
outputs[RESOLVED_UNIT5] = unit; |
+ outputs[VARIABLE_REFERENCE_ERRORS] = |
+ removeDuplicateErrors(errorListener.errors); |
} |
/** |
@@ -3195,12 +3204,9 @@ class ScanDartTask extends SourceBasedAnalysisTask { |
scanner.enableNullAwareOperators = |
context.analysisOptions.enableNullAwareOperators; |
- Token tokenStream = scanner.tokenize(); |
- LineInfo lineInfo = new LineInfo(scanner.lineStarts); |
- List<AnalysisError> errors = errorListener.errors; |
- outputs[TOKEN_STREAM] = tokenStream; |
- outputs[LINE_INFO] = lineInfo; |
- outputs[SCAN_ERRORS] = errors; |
+ outputs[TOKEN_STREAM] = scanner.tokenize(); |
+ outputs[LINE_INFO] = new LineInfo(scanner.lineStarts); |
+ outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors); |
} |
/** |
@@ -3283,7 +3289,7 @@ class VerifyUnitTask extends SourceBasedAnalysisTask { |
// |
// Record outputs. |
// |
- outputs[VERIFY_ERRORS] = errorListener.errors; |
+ outputs[VERIFY_ERRORS] = removeDuplicateErrors(errorListener.errors); |
} |
/** |