OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 library inferrer_visitor; | 5 library inferrer_visitor; |
6 | 6 |
7 import 'dart:collection' show | 7 import 'dart:collection' show |
8 IterableMixin; | 8 IterableMixin; |
9 | 9 |
10 import '../compiler.dart' show | 10 import '../compiler.dart' show |
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 void updateField(Element element, T type) { | 685 void updateField(Element element, T type) { |
686 fieldScope.updateField(element, type); | 686 fieldScope.updateField(element, type); |
687 } | 687 } |
688 } | 688 } |
689 | 689 |
690 abstract class InferrerVisitor<T, E extends MinimalInferrerEngine<T>> | 690 abstract class InferrerVisitor<T, E extends MinimalInferrerEngine<T>> |
691 extends Visitor<T> | 691 extends Visitor<T> |
692 with SendResolverMixin, | 692 with SendResolverMixin, |
693 SemanticSendResolvedMixin<T, dynamic>, | 693 SemanticSendResolvedMixin<T, dynamic>, |
694 CompoundBulkMixin<T, dynamic>, | 694 CompoundBulkMixin<T, dynamic>, |
| 695 SetIfNullBulkMixin<T, dynamic>, |
695 PrefixBulkMixin<T, dynamic>, | 696 PrefixBulkMixin<T, dynamic>, |
696 PostfixBulkMixin<T, dynamic>, | 697 PostfixBulkMixin<T, dynamic>, |
697 ErrorBulkMixin<T, dynamic>, | 698 ErrorBulkMixin<T, dynamic>, |
698 NewBulkMixin<T, dynamic>, | 699 NewBulkMixin<T, dynamic>, |
699 SetBulkMixin<T, dynamic> | 700 SetBulkMixin<T, dynamic> |
700 implements SemanticSendVisitor<T, dynamic> { | 701 implements SemanticSendVisitor<T, dynamic> { |
701 final Compiler compiler; | 702 final Compiler compiler; |
702 final AstElement analyzedElement; | 703 final AstElement analyzedElement; |
703 final TypeSystem<T> types; | 704 final TypeSystem<T> types; |
704 final E inferrer; | 705 final E inferrer; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
766 T bulkHandleSet(SendSet node, _) { | 767 T bulkHandleSet(SendSet node, _) { |
767 return handleSendSet(node); | 768 return handleSendSet(node); |
768 } | 769 } |
769 | 770 |
770 @override | 771 @override |
771 T bulkHandleCompound(SendSet node, _) { | 772 T bulkHandleCompound(SendSet node, _) { |
772 return handleSendSet(node); | 773 return handleSendSet(node); |
773 } | 774 } |
774 | 775 |
775 @override | 776 @override |
| 777 T bulkHandleSetIfNull(SendSet node, _) { |
| 778 return handleSendSet(node); |
| 779 } |
| 780 |
| 781 @override |
776 T bulkHandlePrefix(SendSet node, _) { | 782 T bulkHandlePrefix(SendSet node, _) { |
777 return handleSendSet(node); | 783 return handleSendSet(node); |
778 } | 784 } |
779 | 785 |
780 @override | 786 @override |
781 T bulkHandlePostfix(SendSet node, _) { | 787 T bulkHandlePostfix(SendSet node, _) { |
782 return handleSendSet(node); | 788 return handleSendSet(node); |
783 } | 789 } |
784 | 790 |
785 @override | 791 @override |
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 return type; | 1533 return type; |
1528 } | 1534 } |
1529 | 1535 |
1530 T visitCascade(Cascade node) { | 1536 T visitCascade(Cascade node) { |
1531 // Ignore the result of the cascade send and return the type of the cascade | 1537 // Ignore the result of the cascade send and return the type of the cascade |
1532 // receiver. | 1538 // receiver. |
1533 visit(node.expression); | 1539 visit(node.expression); |
1534 return cascadeReceiverStack.removeLast(); | 1540 return cascadeReceiverStack.removeLast(); |
1535 } | 1541 } |
1536 } | 1542 } |
OLD | NEW |