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

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

Issue 12087052: Implement Types.isSubtype for FunctionType with optional and named parameters. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased (again) Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of resolution; 5 part of resolution;
6 6
7 abstract class TreeElements { 7 abstract class TreeElements {
8 Element operator[](Node node); 8 Element operator[](Node node);
9 Selector getSelector(Send send); 9 Selector getSelector(Send send);
10 DartType getType(Node node); 10 DartType getType(Node node);
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 var parameterTypes = new LinkBuilder<DartType>(); 841 var parameterTypes = new LinkBuilder<DartType>();
842 for (Element parameter in signature.requiredParameters) { 842 for (Element parameter in signature.requiredParameters) {
843 parameterTypes.addLast(parameter.computeType(compiler)); 843 parameterTypes.addLast(parameter.computeType(compiler));
844 } 844 }
845 var optionalParameterTypes = const Link<DartType>(); 845 var optionalParameterTypes = const Link<DartType>();
846 var namedParameters = const Link<SourceString>(); 846 var namedParameters = const Link<SourceString>();
847 var namedParameterTypes = const Link<DartType>(); 847 var namedParameterTypes = const Link<DartType>();
848 if (signature.optionalParametersAreNamed) { 848 if (signature.optionalParametersAreNamed) {
849 var namedParametersBuilder = new LinkBuilder<SourceString>(); 849 var namedParametersBuilder = new LinkBuilder<SourceString>();
850 var namedParameterTypesBuilder = new LinkBuilder<DartType>(); 850 var namedParameterTypesBuilder = new LinkBuilder<DartType>();
851 for (Element parameter in signature.optionalParameters) { 851 for (Element parameter in signature.orderedOptionalParameters) {
852 namedParametersBuilder.addLast(parameter.name); 852 namedParametersBuilder.addLast(parameter.name);
853 namedParameterTypesBuilder.addLast(parameter.computeType(compiler)); 853 namedParameterTypesBuilder.addLast(parameter.computeType(compiler));
854 } 854 }
855 namedParameters = namedParametersBuilder.toLink(); 855 namedParameters = namedParametersBuilder.toLink();
856 namedParameterTypes = namedParametersBuilder.toLink(); 856 namedParameterTypes = namedParameterTypesBuilder.toLink();
857 } else { 857 } else {
858 var optionalParameterTypesBuilder = new LinkBuilder<DartType>(); 858 var optionalParameterTypesBuilder = new LinkBuilder<DartType>();
859 for (Element parameter in signature.optionalParameters) { 859 for (Element parameter in signature.optionalParameters) {
860 optionalParameterTypesBuilder.addLast(parameter.computeType(compiler)); 860 optionalParameterTypesBuilder.addLast(parameter.computeType(compiler));
861 } 861 }
862 optionalParameterTypes = optionalParameterTypesBuilder.toLink(); 862 optionalParameterTypes = optionalParameterTypesBuilder.toLink();
863 } 863 }
864 return new FunctionType(element, 864 return new FunctionType(element,
865 signature.returnType, 865 signature.returnType,
866 parameterTypes.toLink(), 866 parameterTypes.toLink(),
(...skipping 2756 matching lines...) Expand 10 before | Expand all | Expand 10 after
3623 return e; 3623 return e;
3624 } 3624 }
3625 3625
3626 /// Assumed to be called by [resolveRedirectingFactory]. 3626 /// Assumed to be called by [resolveRedirectingFactory].
3627 Element visitReturn(Return node) { 3627 Element visitReturn(Return node) {
3628 Node expression = node.expression; 3628 Node expression = node.expression;
3629 return finishConstructorReference(visit(expression), 3629 return finishConstructorReference(visit(expression),
3630 expression, expression); 3630 expression, expression);
3631 } 3631 }
3632 } 3632 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/dart_types.dart ('k') | sdk/lib/_internal/compiler/implementation/typechecker.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698