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

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

Issue 12082045: Add optional and named parameters to FunctionType. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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/members.dart
diff --git a/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/sdk/lib/_internal/compiler/implementation/resolution/members.dart
index fc55765a8123d750bfb82cbe61b9d97a77c896eb..81b3aa4629072cdf7e75c70a62e9772701cb56c1 100644
--- a/sdk/lib/_internal/compiler/implementation/resolution/members.dart
+++ b/sdk/lib/_internal/compiler/implementation/resolution/members.dart
@@ -854,16 +854,35 @@ class ResolverTask extends CompilerTask {
FunctionType computeFunctionType(Element element,
FunctionSignature signature) {
- LinkBuilder<DartType> parameterTypes = new LinkBuilder<DartType>();
- for (Link<Element> link = signature.requiredParameters;
- !link.isEmpty;
- link = link.tail) {
- parameterTypes.addLast(link.head.computeType(compiler));
- // TODO(karlklose): optional parameters.
+ var parameterTypes = new LinkBuilder<DartType>();
+ for (Element parameter in signature.requiredParameters) {
+ parameterTypes.addLast(parameter.computeType(compiler));
+ }
+ if (signature.optionalParametersAreNamed) {
+ var namedParameters = new LinkBuilder<SourceString>();
+ var namedParameterTypes = new LinkBuilder<DartType>();
+ for (Element parameter in signature.optionalParameters) {
+ namedParameters.addLast(parameter.name);
+ namedParameterTypes.addLast(parameter.computeType(compiler));
+ }
+ return new FunctionType(element,
karlklose 2013/01/29 13:13:29 You can share this code with l. 897 by storing the
Johnni Winther 2013/01/29 13:53:59 Done.
+ signature.returnType,
+ parameterTypes.toLink(),
+ const Link<DartType>(), // No optional parameters.
+ namedParameters.toLink(),
+ namedParameterTypes.toLink());
+ } else {
+ var optionalParameterTypes = new LinkBuilder<DartType>();
+ for (Element parameter in signature.optionalParameters) {
+ optionalParameterTypes.addLast(parameter.computeType(compiler));
+ }
+ return new FunctionType(element,
+ signature.returnType,
+ parameterTypes.toLink(),
+ optionalParameterTypes.toLink(),
+ const Link<SourceString>(), // No named parameters.
+ const Link<DartType>()); // No named parameters.
}
- return new FunctionType(signature.returnType,
- parameterTypes.toLink(),
- element);
}
void resolveMetadataAnnotation(PartialMetadataAnnotation annotation) {

Powered by Google App Engine
This is Rietveld 408576698