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

Unified Diff: pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart

Issue 1146943002: Change Link to List in FunctionSignature. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | pkg/compiler/lib/src/js_backend/patch_resolver.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
diff --git a/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart b/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
index c742d512f12d7e4eb32ac4740d345aa15ccb85b5..d703b590b2ad30282283e6f70e50da9514c8134d 100644
--- a/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/concrete_types_inferrer.dart
@@ -1613,23 +1613,16 @@ class ConcreteTypesInferrer
argumentsTypes.positional.iterator;
// we attach each positional parameter to its corresponding positional
// argument
- for (Link<Element> requiredParameters = signature.requiredParameters;
- !requiredParameters.isEmpty;
- requiredParameters = requiredParameters.tail) {
- final Element requiredParameter = requiredParameters.head;
+ for (Element requiredParameter in signature.requiredParameters) {
// we know moveNext() succeeds because of guard 2
remainingPositionalArguments.moveNext();
result[requiredParameter] = remainingPositionalArguments.current;
}
if (signature.optionalParametersAreNamed) {
// we build a map out of the remaining named parameters
- Link<Element> remainingOptionalParameters = signature.optionalParameters;
final Map<String, Element> leftOverNamedParameters =
new Map<String, Element>();
- for (;
- !remainingOptionalParameters.isEmpty;
- remainingOptionalParameters = remainingOptionalParameters.tail) {
- final Element namedParameter = remainingOptionalParameters.head;
+ for (Element namedParameter in signature.optionalParameters) {
leftOverNamedParameters[namedParameter.name] = namedParameter;
}
// we attach the named arguments to their corresponding optional
@@ -1648,17 +1641,16 @@ class ConcreteTypesInferrer
} else { // optional parameters are positional
// we attach the remaining positional arguments to their corresponding
// optional parameters
- Link<Element> remainingOptionalParameters = signature.optionalParameters;
+ Iterator<Element> remainingOptionalParameters =
+ signature.optionalParameters.iterator;
while (remainingPositionalArguments.moveNext()) {
- final Element optionalParameter = remainingOptionalParameters.head;
+ // we know this is true because of guard 1
+ remainingOptionalParameters.moveNext();
+ final Element optionalParameter = remainingOptionalParameters.current;
result[optionalParameter] = remainingPositionalArguments.current;
- // we know tail is defined because of guard 1
- remainingOptionalParameters = remainingOptionalParameters.tail;
}
- for (;
- !remainingOptionalParameters.isEmpty;
- remainingOptionalParameters = remainingOptionalParameters.tail) {
- handleLeftoverOptionalParameter(remainingOptionalParameters.head);
+ while (remainingOptionalParameters.moveNext()) {
+ handleLeftoverOptionalParameter(remainingOptionalParameters.current);
}
}
return result;
@@ -1692,14 +1684,13 @@ class ConcreteTypesInferrer
// don't override these methods. So for 1+2, getSpecialCaseReturnType will
// be invoked with function = num#+. We use environment.typeOfThis instead.
ClassElement cls = environment.classOfThis;
+ List<Element> parameters = function.parameters;
if (cls != null) {
String name = function.name;
if ((cls == baseTypes.intBaseType.element
|| cls == baseTypes.doubleBaseType.element)
&& (name == '+' || name == '-' || name == '*')) {
- Link<Element> parameters =
- function.functionSignature.requiredParameters;
- ConcreteType argumentType = environment.lookupType(parameters.head);
+ ConcreteType argumentType = environment.lookupType(parameters.single);
if (argumentType.getUniqueType() == cls) {
return singletonConcreteType(new ClassBaseType(cls));
}
@@ -1707,24 +1698,21 @@ class ConcreteTypesInferrer
}
if (function == listIndex || function == listRemoveAt) {
- Link<Element> parameters = function.functionSignature.requiredParameters;
- ConcreteType indexType = environment.lookupType(parameters.head);
+ ConcreteType indexType = environment.lookupType(parameters.single);
if (!indexType.baseTypes.contains(baseTypes.intBaseType)) {
return emptyConcreteType;
}
return listElementType;
} else if (function == listIndexSet || function == listInsert) {
- Link<Element> parameters = function.functionSignature.requiredParameters;
- ConcreteType indexType = environment.lookupType(parameters.head);
+ ConcreteType indexType = environment.lookupType(parameters[0]);
if (!indexType.baseTypes.contains(baseTypes.intBaseType)) {
return emptyConcreteType;
}
- ConcreteType elementType = environment.lookupType(parameters.tail.head);
+ ConcreteType elementType = environment.lookupType(parameters[1]);
augmentListElementType(elementType);
return emptyConcreteType;
} else if (function == listAdd) {
- Link<Element> parameters = function.functionSignature.requiredParameters;
- ConcreteType elementType = environment.lookupType(parameters.head);
+ ConcreteType elementType = environment.lookupType(parameters.single);
augmentListElementType(elementType);
return emptyConcreteType;
} else if (function == listRemoveLast) {
@@ -1819,9 +1807,9 @@ class ConcreteTypesInferrer
// When List([length]) is called with some length, we must augment
// listElementType with {null}.
if (element == listConstructor) {
- Link<Element> parameters =
+ List<Element> parameters =
listConstructor.functionSignature.optionalParameters;
- ConcreteType lengthType = environment.lookupType(parameters.head);
+ ConcreteType lengthType = environment.lookupType(parameters.first);
if (lengthType.baseTypes.contains(baseTypes.intBaseType)) {
augmentListElementType(nullConcreteType);
}
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | pkg/compiler/lib/src/js_backend/patch_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698