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

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: Address comments. Created 6 years, 6 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 d04aa1a3c01881cbc908de7b7eb842dc11d1cf0c..8bd0042787852782b3a1048f57d6ecd42636fb28 100644
--- a/sdk/lib/_internal/compiler/implementation/resolution/class_members.dart
+++ b/sdk/lib/_internal/compiler/implementation/resolution/class_members.dart
@@ -194,7 +194,7 @@ abstract class MembersCreator {
addDeclaredMember(name.setter, type,
new FunctionType.synthesized(
const VoidType(),
- const Link<DartType>().prepend(type)));
+ <DartType>[type]));
}
} else if (element.isGetter) {
FunctionType functionType = element.computeType(compiler);
@@ -204,7 +204,7 @@ abstract class MembersCreator {
FunctionType functionType = element.computeType(compiler);
DartType type;
if (!functionType.parameterTypes.isEmpty) {
- type = functionType.parameterTypes.head;
+ type = functionType.parameterTypes.first;
} else {
type = const DynamicType();
}
@@ -726,8 +726,8 @@ class InterfaceMembersCreator extends MembersCreator {
FunctionType type = member.type;
type.namedParameters.forEach(
(String name) => names.add(name));
- requiredParameters = type.parameterTypes.slowLength();
- optionalParameters = type.optionalParameterTypes.slowLength();
+ requiredParameters = type.parameterTypes.length;
+ optionalParameters = type.optionalParameterTypes.length;
}
int positionalParameters = requiredParameters + optionalParameters;
if (minRequiredParameters == null ||
@@ -744,25 +744,15 @@ class InterfaceMembersCreator extends 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(const DynamicType());
- }
- Link<DartType> optionalParameterTypes = const Link<DartType>();
- while (--optionalParameters >= 0) {
- optionalParameterTypes =
- optionalParameterTypes.prepend(const 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(const DynamicType());
- }
+ DartType dynamic = const DynamicType();
+ List<DartType> requiredParameterTypes =
+ new List.filled(minRequiredParameters, dynamic);
+ List<DartType> optionalParameterTypes =
+ new List.filled(optionalParameters, dynamic);
+ List<String> namedParameters =
+ names.toList()..sort((a, b) => a.compareTo(b));
+ List<DartType> namedParameterTypes =
+ new List.filled(namedParameters.length, dynamic);
FunctionType memberType = new FunctionType.synthesized(
const DynamicType(),
requiredParameterTypes,

Powered by Google App Engine
This is Rietveld 408576698