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.element; | 5 library engine.element; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 import 'dart:math' show min; | 8 import 'dart:math' show min; |
9 | 9 |
10 import 'package:analyzer/src/generated/utilities_general.dart'; | 10 import 'package:analyzer/src/generated/utilities_general.dart'; |
(...skipping 7036 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7047 result.typeArguments = | 7047 result.typeArguments = |
7048 typeArguments.map((TypeImpl t) => t.pruned(prune)).toList(); | 7048 typeArguments.map((TypeImpl t) => t.pruned(prune)).toList(); |
7049 return result; | 7049 return result; |
7050 } | 7050 } |
7051 } | 7051 } |
7052 | 7052 |
7053 @override | 7053 @override |
7054 InterfaceTypeImpl substitute2( | 7054 InterfaceTypeImpl substitute2( |
7055 List<DartType> argumentTypes, List<DartType> parameterTypes, | 7055 List<DartType> argumentTypes, List<DartType> parameterTypes, |
7056 [List<FunctionTypeAliasElement> prune]) { | 7056 [List<FunctionTypeAliasElement> prune]) { |
7057 // Pruned types should only ever result from performing type variable | |
7058 // substitution, and it doesn't make sense to substitute again after | |
7059 // substituting once. | |
7060 assert(this.prunedTypedefs == null); | |
7061 if (argumentTypes.length != parameterTypes.length) { | 7057 if (argumentTypes.length != parameterTypes.length) { |
7062 throw new IllegalArgumentException( | 7058 throw new IllegalArgumentException( |
7063 "argumentTypes.length (${argumentTypes.length}) != parameterTypes.leng
th (${parameterTypes.length})"); | 7059 "argumentTypes.length (${argumentTypes.length}) != parameterTypes.leng
th (${parameterTypes.length})"); |
7064 } | 7060 } |
7065 if (argumentTypes.length == 0 || typeArguments.length == 0) { | 7061 if (argumentTypes.length == 0 || typeArguments.length == 0) { |
7066 return this.pruned(prune); | 7062 return this.pruned(prune); |
7067 } | 7063 } |
7068 List<DartType> newTypeArguments = TypeImpl.substitute( | 7064 List<DartType> newTypeArguments = TypeImpl.substitute( |
7069 typeArguments, argumentTypes, parameterTypes, prune); | 7065 typeArguments, argumentTypes, parameterTypes, prune); |
7070 if (JavaArrays.equals(newTypeArguments, typeArguments)) { | 7066 if (JavaArrays.equals(newTypeArguments, typeArguments)) { |
(...skipping 4074 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11145 | 11141 |
11146 @override | 11142 @override |
11147 void visitElement(Element element) { | 11143 void visitElement(Element element) { |
11148 int offset = element.nameOffset; | 11144 int offset = element.nameOffset; |
11149 if (offset != -1) { | 11145 if (offset != -1) { |
11150 map[offset] = element; | 11146 map[offset] = element; |
11151 } | 11147 } |
11152 super.visitElement(element); | 11148 super.visitElement(element); |
11153 } | 11149 } |
11154 } | 11150 } |
OLD | NEW |