| 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 library analyzer.src.task.dart; | 5 library analyzer.src.task.dart; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:math' as math; | 8 import 'dart:math' as math; |
| 9 | 9 |
| 10 import 'package:analyzer/src/context/cache.dart'; | 10 import 'package:analyzer/src/context/cache.dart'; |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 * | 408 * |
| 409 * The list will be empty if there were no errors, but will not be `null`. | 409 * The list will be empty if there were no errors, but will not be `null`. |
| 410 * | 410 * |
| 411 * The result is only available for [LibrarySpecificUnit]s. | 411 * The result is only available for [LibrarySpecificUnit]s. |
| 412 */ | 412 */ |
| 413 final ListResultDescriptor<AnalysisError> VERIFY_ERRORS = | 413 final ListResultDescriptor<AnalysisError> VERIFY_ERRORS = |
| 414 new ListResultDescriptor<AnalysisError>( | 414 new ListResultDescriptor<AnalysisError>( |
| 415 'VERIFY_ERRORS', AnalysisError.NO_ERRORS); | 415 'VERIFY_ERRORS', AnalysisError.NO_ERRORS); |
| 416 | 416 |
| 417 /** | 417 /** |
| 418 * Remove [CompileTimeErrorCode.DUPLICATE_DEFINITION] errors from the given |
| 419 * [errors] list. |
| 420 */ |
| 421 void removeDuplicateDefinitionErrors(List<AnalysisError> errors) { |
| 422 if (errors.isNotEmpty) { |
| 423 errors.removeWhere((error) { |
| 424 ErrorCode errorCode = error.errorCode; |
| 425 return errorCode == CompileTimeErrorCode.DUPLICATE_DEFINITION; |
| 426 }); |
| 427 } |
| 428 } |
| 429 |
| 430 /** |
| 418 * A task that builds implicit constructors for a [ClassElement], or keeps | 431 * A task that builds implicit constructors for a [ClassElement], or keeps |
| 419 * the existing explicit constructors if the class has them. | 432 * the existing explicit constructors if the class has them. |
| 420 */ | 433 */ |
| 421 class BuildClassConstructorsTask extends SourceBasedAnalysisTask { | 434 class BuildClassConstructorsTask extends SourceBasedAnalysisTask { |
| 422 /** | 435 /** |
| 423 * The name of the [CONSTRUCTORS] input for the superclass. | 436 * The name of the [CONSTRUCTORS] input for the superclass. |
| 424 */ | 437 */ |
| 425 static const String SUPER_CONSTRUCTORS = 'SUPER_CONSTRUCTORS'; | 438 static const String SUPER_CONSTRUCTORS = 'SUPER_CONSTRUCTORS'; |
| 426 | 439 |
| 427 /** | 440 /** |
| (...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1154 // Resolve FunctionTypeAlias declarations. | 1167 // Resolve FunctionTypeAlias declarations. |
| 1155 // | 1168 // |
| 1156 TypeResolverVisitor visitor = new TypeResolverVisitor.con2( | 1169 TypeResolverVisitor visitor = new TypeResolverVisitor.con2( |
| 1157 libraryElement, source, typeProvider, errorListener); | 1170 libraryElement, source, typeProvider, errorListener); |
| 1158 for (CompilationUnitMember member in unit.declarations) { | 1171 for (CompilationUnitMember member in unit.declarations) { |
| 1159 if (member is FunctionTypeAlias) { | 1172 if (member is FunctionTypeAlias) { |
| 1160 member.accept(visitor); | 1173 member.accept(visitor); |
| 1161 } | 1174 } |
| 1162 } | 1175 } |
| 1163 // | 1176 // |
| 1177 // Prepare errors. |
| 1178 // |
| 1179 List<AnalysisError> errors = errorListener.errors; |
| 1180 removeDuplicateDefinitionErrors(errors); |
| 1181 // |
| 1164 // Record outputs. | 1182 // Record outputs. |
| 1165 // | 1183 // |
| 1166 outputs[BUILD_FUNCTION_TYPE_ALIASES_ERRORS] = errorListener.errors; | 1184 outputs[BUILD_FUNCTION_TYPE_ALIASES_ERRORS] = errors; |
| 1167 outputs[RESOLVED_UNIT3] = unit; | 1185 outputs[RESOLVED_UNIT3] = unit; |
| 1168 } | 1186 } |
| 1169 | 1187 |
| 1170 /** | 1188 /** |
| 1171 * Return a map from the names of the inputs of this kind of task to the task | 1189 * Return a map from the names of the inputs of this kind of task to the task |
| 1172 * input descriptors describing those inputs for a task with the | 1190 * input descriptors describing those inputs for a task with the |
| 1173 * given [target]. | 1191 * given [target]. |
| 1174 */ | 1192 */ |
| 1175 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { | 1193 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
| 1176 return <String, TaskInput>{ | 1194 return <String, TaskInput>{ |
| (...skipping 1813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2990 CompilationUnit unit = getRequiredInput(UNIT_INPUT); | 3008 CompilationUnit unit = getRequiredInput(UNIT_INPUT); |
| 2991 CompilationUnitElement unitElement = unit.element; | 3009 CompilationUnitElement unitElement = unit.element; |
| 2992 TypeProvider typeProvider = getRequiredInput(TYPE_PROVIDER_INPUT); | 3010 TypeProvider typeProvider = getRequiredInput(TYPE_PROVIDER_INPUT); |
| 2993 // | 3011 // |
| 2994 // Resolve TypeName nodes. | 3012 // Resolve TypeName nodes. |
| 2995 // | 3013 // |
| 2996 TypeResolverVisitor visitor = new TypeResolverVisitor.con2( | 3014 TypeResolverVisitor visitor = new TypeResolverVisitor.con2( |
| 2997 library, unitElement.source, typeProvider, errorListener); | 3015 library, unitElement.source, typeProvider, errorListener); |
| 2998 unit.accept(visitor); | 3016 unit.accept(visitor); |
| 2999 // | 3017 // |
| 3018 // Prepare errors. |
| 3019 // |
| 3020 List<AnalysisError> errors = errorListener.errors; |
| 3021 removeDuplicateDefinitionErrors(errors); |
| 3022 // |
| 3000 // Record outputs. | 3023 // Record outputs. |
| 3001 // | 3024 // |
| 3002 outputs[RESOLVE_TYPE_NAMES_ERRORS] = errorListener.errors; | 3025 outputs[RESOLVE_TYPE_NAMES_ERRORS] = errors; |
| 3003 outputs[RESOLVED_UNIT4] = unit; | 3026 outputs[RESOLVED_UNIT4] = unit; |
| 3004 } | 3027 } |
| 3005 | 3028 |
| 3006 /** | 3029 /** |
| 3007 * Return a map from the names of the inputs of this kind of task to the task | 3030 * Return a map from the names of the inputs of this kind of task to the task |
| 3008 * input descriptors describing those inputs for a task with the | 3031 * input descriptors describing those inputs for a task with the |
| 3009 * given [target]. | 3032 * given [target]. |
| 3010 */ | 3033 */ |
| 3011 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { | 3034 static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
| 3012 return <String, TaskInput>{ | 3035 return <String, TaskInput>{ |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3386 @override | 3409 @override |
| 3387 bool moveNext() { | 3410 bool moveNext() { |
| 3388 if (_newSources.isEmpty) { | 3411 if (_newSources.isEmpty) { |
| 3389 return false; | 3412 return false; |
| 3390 } | 3413 } |
| 3391 currentTarget = _newSources.first; | 3414 currentTarget = _newSources.first; |
| 3392 _newSources.remove(currentTarget); | 3415 _newSources.remove(currentTarget); |
| 3393 return true; | 3416 return true; |
| 3394 } | 3417 } |
| 3395 } | 3418 } |
| OLD | NEW |