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...) 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...) 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 |