| 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 get currentElement; | 8 Element get currentElement; |
| 9 Set<Node> get superUses; | 9 Set<Node> get superUses; |
| 10 | 10 |
| (...skipping 2600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2611 error(nodes.head, MessageKind.ADDITIONAL_TYPE_ARGUMENT); | 2611 error(nodes.head, MessageKind.ADDITIONAL_TYPE_ARGUMENT); |
| 2612 resolveTypeRequired(nodes.head); | 2612 resolveTypeRequired(nodes.head); |
| 2613 } | 2613 } |
| 2614 } | 2614 } |
| 2615 } | 2615 } |
| 2616 DartType listType; | 2616 DartType listType; |
| 2617 if (typeArgument != null) { | 2617 if (typeArgument != null) { |
| 2618 listType = new InterfaceType(compiler.listClass, | 2618 listType = new InterfaceType(compiler.listClass, |
| 2619 new Link<DartType>.fromList([typeArgument])); | 2619 new Link<DartType>.fromList([typeArgument])); |
| 2620 } else { | 2620 } else { |
| 2621 compiler.listClass.computeType(compiler); |
| 2621 listType = compiler.listClass.rawType; | 2622 listType = compiler.listClass.rawType; |
| 2622 } | 2623 } |
| 2624 mapping.setType(node, listType); |
| 2623 world.registerInstantiatedType(listType, mapping); | 2625 world.registerInstantiatedType(listType, mapping); |
| 2624 visit(node.elements); | 2626 visit(node.elements); |
| 2625 } | 2627 } |
| 2626 | 2628 |
| 2627 visitConditional(Conditional node) { | 2629 visitConditional(Conditional node) { |
| 2628 node.visitChildren(this); | 2630 node.visitChildren(this); |
| 2629 } | 2631 } |
| 2630 | 2632 |
| 2631 visitStringInterpolation(StringInterpolation node) { | 2633 visitStringInterpolation(StringInterpolation node) { |
| 2632 world.registerInstantiatedClass(compiler.stringClass, mapping); | 2634 world.registerInstantiatedClass(compiler.stringClass, mapping); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2768 } | 2770 } |
| 2769 }); | 2771 }); |
| 2770 if (!targetElement.isTarget && identical(mapping[body], targetElement)) { | 2772 if (!targetElement.isTarget && identical(mapping[body], targetElement)) { |
| 2771 // If the body is itself a break or continue for another target, it | 2773 // If the body is itself a break or continue for another target, it |
| 2772 // might have updated its mapping to the target it actually does target. | 2774 // might have updated its mapping to the target it actually does target. |
| 2773 mapping.remove(body); | 2775 mapping.remove(body); |
| 2774 } | 2776 } |
| 2775 } | 2777 } |
| 2776 | 2778 |
| 2777 visitLiteralMap(LiteralMap node) { | 2779 visitLiteralMap(LiteralMap node) { |
| 2780 NodeList arguments = node.typeArguments; |
| 2781 DartType keyTypeArgument; |
| 2782 DartType valueTypeArgument; |
| 2783 if (arguments != null) { |
| 2784 Link<Node> nodes = arguments.nodes; |
| 2785 if (nodes.isEmpty) { |
| 2786 error(arguments, MessageKind.MISSING_TYPE_ARGUMENT); |
| 2787 } else { |
| 2788 keyTypeArgument = resolveTypeRequired(nodes.head); |
| 2789 nodes = nodes.tail; |
| 2790 if (nodes.isEmpty) { |
| 2791 error(arguments, MessageKind.MISSING_TYPE_ARGUMENT); |
| 2792 } else { |
| 2793 valueTypeArgument = resolveTypeRequired(nodes.head); |
| 2794 for (nodes = nodes.tail; !nodes.isEmpty; nodes = nodes.tail) { |
| 2795 error(nodes.head, MessageKind.ADDITIONAL_TYPE_ARGUMENT); |
| 2796 resolveTypeRequired(nodes.head); |
| 2797 } |
| 2798 } |
| 2799 } |
| 2800 } |
| 2801 DartType mapType; |
| 2802 if (valueTypeArgument != null) { |
| 2803 mapType = new InterfaceType(compiler.mapClass, |
| 2804 new Link<DartType>.fromList([keyTypeArgument, valueTypeArgument])); |
| 2805 } else { |
| 2806 compiler.mapClass.computeType(compiler); |
| 2807 mapType = compiler.mapClass.rawType; |
| 2808 } |
| 2809 mapping.setType(node, mapType); |
| 2778 world.registerInstantiatedClass(compiler.mapClass, mapping); | 2810 world.registerInstantiatedClass(compiler.mapClass, mapping); |
| 2779 if (node.isConst()) { | 2811 if (node.isConst()) { |
| 2780 compiler.backend.registerConstantMap(mapping); | 2812 compiler.backend.registerConstantMap(mapping); |
| 2781 } | 2813 } |
| 2782 node.visitChildren(this); | 2814 node.visitChildren(this); |
| 2783 } | 2815 } |
| 2784 | 2816 |
| 2785 visitLiteralMapEntry(LiteralMapEntry node) { | 2817 visitLiteralMapEntry(LiteralMapEntry node) { |
| 2786 node.visitChildren(this); | 2818 node.visitChildren(this); |
| 2787 } | 2819 } |
| (...skipping 1054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3842 return e; | 3874 return e; |
| 3843 } | 3875 } |
| 3844 | 3876 |
| 3845 /// Assumed to be called by [resolveRedirectingFactory]. | 3877 /// Assumed to be called by [resolveRedirectingFactory]. |
| 3846 Element visitReturn(Return node) { | 3878 Element visitReturn(Return node) { |
| 3847 Node expression = node.expression; | 3879 Node expression = node.expression; |
| 3848 return finishConstructorReference(visit(expression), | 3880 return finishConstructorReference(visit(expression), |
| 3849 expression, expression); | 3881 expression, expression); |
| 3850 } | 3882 } |
| 3851 } | 3883 } |
| OLD | NEW |