| 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..f6932a54aeff1d0a88ddf908112ff45fe8a7a126 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 names.toList()..sort()) {
|
| + namedParameters.add(name);
|
| + namedParameterTypes.add(compiler.types.dynamicType);
|
| }
|
| FunctionType memberType = new FunctionType(
|
| compiler.functionClass,
|
|
|