Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Unified Diff: sdk/lib/_internal/compiler/implementation/resolution/class_members.dart

Issue 177963002: Use List instead of Link in the type system. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/resolution/class_members.dart
diff --git a/sdk/lib/_internal/compiler/implementation/resolution/class_members.dart b/sdk/lib/_internal/compiler/implementation/resolution/class_members.dart
index 4aa640d4d7fa3a8807b3f47b75bf439b576633b5..c0dd4ebc735b50057e46cc9b674228ba7b7d71cb 100644
--- a/sdk/lib/_internal/compiler/implementation/resolution/class_members.dart
+++ b/sdk/lib/_internal/compiler/implementation/resolution/class_members.dart
@@ -147,7 +147,7 @@ class MembersCreator {
name, element, thisType, type,
new FunctionType(compiler.functionClass,
compiler.types.voidType,
- const Link<DartType>().prepend(type)));
+ [type]));
}
} else if (element.isGetter()) {
FunctionType functionType = element.computeType(compiler);
@@ -158,7 +158,7 @@ class MembersCreator {
FunctionType functionType = element.computeType(compiler);
DartType type;
if (!functionType.parameterTypes.isEmpty) {
- type = functionType.parameterTypes.head;
+ type = functionType.parameterTypes.first;
} else {
type = compiler.types.dynamicType;
}
@@ -295,10 +295,9 @@ class MembersCreator {
}
if (member.type.kind == TypeKind.FUNCTION) {
FunctionType type = member.type;
- type.namedParameters.forEach(
- (String name) => names.add(name));
- requiredParameters = type.parameterTypes.slowLength();
- optionalParameters = type.optionalParameterTypes.slowLength();
+ type.namedParameters.forEach((String name) => names.add(name));
+ requiredParameters = type.parameterTypes.length;
+ optionalParameters = type.optionalParameterTypes.length;
}
int positionalParameters = requiredParameters + optionalParameters;
if (minRequiredParameters == null ||
@@ -315,24 +314,15 @@ class MembersCreator {
// TODO(johnniwinther): Support function types with both optional
// and named parameters?
if (optionalParameters == 0 || names.isEmpty) {
- Link<DartType> requiredParameterTypes = const Link<DartType>();
- while (--minRequiredParameters >= 0) {
- requiredParameterTypes =
- requiredParameterTypes.prepend(compiler.types.dynamicType);
- }
- Link<DartType> optionalParameterTypes = const Link<DartType>();
- while (--optionalParameters >= 0) {
- optionalParameterTypes =
- optionalParameterTypes.prepend(compiler.types.dynamicType);
- }
- Link<String> namedParameters = const Link<String>();
- Link<DartType> namedParameterTypes = const Link<DartType>();
- List<String> namesReversed =
- names.toList()..sort((a, b) => -a.compareTo(b));
- for (String name in namesReversed) {
- namedParameters = namedParameters.prepend(name);
- namedParameterTypes =
- namedParameterTypes.prepend(compiler.types.dynamicType);
+ List<DartType> requiredParameterTypes = new List<DartType>.generate(
+ minRequiredParameters, (_) => compiler.types.dynamicType);
+ List<DartType> optionalParameterTypes = new List<DartType>.generate(
+ optionalParameters, (_) => compiler.types.dynamicType);
+ List<String> namedParameters = <String>[];
+ List<DartType> namedParameterTypes = <DartType>[];
+ for (String name in namedParameters) {
+ namedParameters.add(name);
+ namedParameterTypes.add(compiler.types.dynamicType);
}
FunctionType memberType = new FunctionType(
compiler.functionClass,

Powered by Google App Engine
This is Rietveld 408576698