| 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 analyzer.src.generated.error_verifier; | 5 library analyzer.src.generated.error_verifier; |
| 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/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
| (...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 _inheritanceManager.substituteTypeArgumentsInMemberFromInheritance( | 1353 _inheritanceManager.substituteTypeArgumentsInMemberFromInheritance( |
| 1354 overriddenFT, executableElementName, enclosingType); | 1354 overriddenFT, executableElementName, enclosingType); |
| 1355 if (overridingFT == null || overriddenFT == null) { | 1355 if (overridingFT == null || overriddenFT == null) { |
| 1356 return false; | 1356 return false; |
| 1357 } | 1357 } |
| 1358 | 1358 |
| 1359 // Handle generic function type parameters. | 1359 // Handle generic function type parameters. |
| 1360 // TODO(jmesserly): this duplicates some code in isSubtypeOf and most of | 1360 // TODO(jmesserly): this duplicates some code in isSubtypeOf and most of |
| 1361 // _isGenericFunctionSubtypeOf. Ideally, we'd let TypeSystem produce | 1361 // _isGenericFunctionSubtypeOf. Ideally, we'd let TypeSystem produce |
| 1362 // an error message once it's ready to "return false". | 1362 // an error message once it's ready to "return false". |
| 1363 if (!overridingFT.boundTypeParameters.isEmpty) { | 1363 if (!overridingFT.typeFormals.isEmpty) { |
| 1364 if (overriddenFT.boundTypeParameters.isEmpty) { | 1364 if (overriddenFT.typeFormals.isEmpty) { |
| 1365 overriddenFT = _typeSystem.instantiateToBounds(overriddenFT); | 1365 overriddenFT = _typeSystem.instantiateToBounds(overriddenFT); |
| 1366 } else { | 1366 } else { |
| 1367 List<TypeParameterElement> params1 = overridingFT.boundTypeParameters; | 1367 List<TypeParameterElement> params1 = overridingFT.typeFormals; |
| 1368 List<TypeParameterElement> params2 = overriddenFT.boundTypeParameters; | 1368 List<TypeParameterElement> params2 = overriddenFT.typeFormals; |
| 1369 int count = params1.length; | 1369 int count = params1.length; |
| 1370 if (params2.length != count) { | 1370 if (params2.length != count) { |
| 1371 _errorReporter.reportErrorForNode( | 1371 _errorReporter.reportErrorForNode( |
| 1372 StaticWarningCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS, | 1372 StaticWarningCode.INVALID_METHOD_OVERRIDE_TYPE_PARAMETERS, |
| 1373 errorNameTarget, [ | 1373 errorNameTarget, [ |
| 1374 count, | 1374 count, |
| 1375 params2.length, | 1375 params2.length, |
| 1376 overriddenExecutable.enclosingElement.displayName | 1376 overriddenExecutable.enclosingElement.displayName |
| 1377 ]); | 1377 ]); |
| 1378 return true; | 1378 return true; |
| (...skipping 4825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6204 toCheck.add(type.element); | 6204 toCheck.add(type.element); |
| 6205 // type arguments | 6205 // type arguments |
| 6206 if (type is InterfaceType) { | 6206 if (type is InterfaceType) { |
| 6207 InterfaceType interfaceType = type; | 6207 InterfaceType interfaceType = type; |
| 6208 for (DartType typeArgument in interfaceType.typeArguments) { | 6208 for (DartType typeArgument in interfaceType.typeArguments) { |
| 6209 _addTypeToCheck(typeArgument); | 6209 _addTypeToCheck(typeArgument); |
| 6210 } | 6210 } |
| 6211 } | 6211 } |
| 6212 } | 6212 } |
| 6213 } | 6213 } |
| OLD | NEW |