| OLD | NEW |
| 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 836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 visitor.visit(node); | 847 visitor.visit(node); |
| 848 | 848 |
| 849 element.isBeingResolved = false; | 849 element.isBeingResolved = false; |
| 850 element.isResolved = true; | 850 element.isResolved = true; |
| 851 }); | 851 }); |
| 852 }); | 852 }); |
| 853 } | 853 } |
| 854 | 854 |
| 855 FunctionType computeFunctionType(Element element, | 855 FunctionType computeFunctionType(Element element, |
| 856 FunctionSignature signature) { | 856 FunctionSignature signature) { |
| 857 LinkBuilder<DartType> parameterTypes = new LinkBuilder<DartType>(); | 857 var parameterTypes = new LinkBuilder<DartType>(); |
| 858 for (Link<Element> link = signature.requiredParameters; | 858 for (Element parameter in signature.requiredParameters) { |
| 859 !link.isEmpty; | 859 parameterTypes.addLast(parameter.computeType(compiler)); |
| 860 link = link.tail) { | |
| 861 parameterTypes.addLast(link.head.computeType(compiler)); | |
| 862 // TODO(karlklose): optional parameters. | |
| 863 } | 860 } |
| 864 return new FunctionType(signature.returnType, | 861 var optionalParameterTypes = const Link<DartType>(); |
| 865 parameterTypes.toLink(), | 862 var namedParameters = const Link<SourceString>(); |
| 866 element); | 863 var namedParameterTypes = const Link<DartType>(); |
| 864 if (signature.optionalParametersAreNamed) { |
| 865 var namedParametersBuilder = new LinkBuilder<SourceString>(); |
| 866 var namedParameterTypesBuilder = new LinkBuilder<DartType>(); |
| 867 for (Element parameter in signature.optionalParameters) { |
| 868 namedParametersBuilder.addLast(parameter.name); |
| 869 namedParameterTypesBuilder.addLast(parameter.computeType(compiler)); |
| 870 } |
| 871 namedParameters = namedParametersBuilder.toLink(); |
| 872 namedParameterTypes = namedParametersBuilder.toLink(); |
| 873 } else { |
| 874 var optionalParameterTypesBuilder = new LinkBuilder<DartType>(); |
| 875 for (Element parameter in signature.optionalParameters) { |
| 876 optionalParameterTypesBuilder.addLast(parameter.computeType(compiler)); |
| 877 } |
| 878 optionalParameterTypes = optionalParameterTypesBuilder.toLink(); |
| 879 } |
| 880 return new FunctionType(element, |
| 881 signature.returnType, |
| 882 parameterTypes.toLink(), |
| 883 optionalParameterTypes, |
| 884 namedParameters, |
| 885 namedParameterTypes); |
| 867 } | 886 } |
| 868 | 887 |
| 869 void resolveMetadataAnnotation(PartialMetadataAnnotation annotation) { | 888 void resolveMetadataAnnotation(PartialMetadataAnnotation annotation) { |
| 870 compiler.withCurrentElement(annotation.annotatedElement, () => measure(() { | 889 compiler.withCurrentElement(annotation.annotatedElement, () => measure(() { |
| 871 assert(annotation.resolutionState == STATE_NOT_STARTED); | 890 assert(annotation.resolutionState == STATE_NOT_STARTED); |
| 872 annotation.resolutionState = STATE_STARTED; | 891 annotation.resolutionState = STATE_STARTED; |
| 873 | 892 |
| 874 Node node = annotation.parseNode(compiler); | 893 Node node = annotation.parseNode(compiler); |
| 875 ResolverVisitor visitor = | 894 ResolverVisitor visitor = |
| 876 visitorFor(annotation.annotatedElement.enclosingElement); | 895 visitorFor(annotation.annotatedElement.enclosingElement); |
| (...skipping 2761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3638 return e; | 3657 return e; |
| 3639 } | 3658 } |
| 3640 | 3659 |
| 3641 /// Assumed to be called by [resolveRedirectingFactory]. | 3660 /// Assumed to be called by [resolveRedirectingFactory]. |
| 3642 Element visitReturn(Return node) { | 3661 Element visitReturn(Return node) { |
| 3643 Node expression = node.expression; | 3662 Node expression = node.expression; |
| 3644 return finishConstructorReference(visit(expression), | 3663 return finishConstructorReference(visit(expression), |
| 3645 expression, expression); | 3664 expression, expression); |
| 3646 } | 3665 } |
| 3647 } | 3666 } |
| OLD | NEW |