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

Side by Side Diff: pkg/compiler/lib/src/resolution/semantic_visitor.dart

Issue 1108783003: Refactor SsaBuilder.visitSuperSend. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 5 years, 7 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 dart2js.semantics_visitor; 5 library dart2js.semantics_visitor;
6 6
7 import '../constants/expressions.dart'; 7 import '../constants/expressions.dart';
8 import '../dart2jslib.dart' show invariant; 8 import '../dart2jslib.dart' show invariant;
9 import '../dart_types.dart'; 9 import '../dart_types.dart';
10 import '../elements/elements.dart'; 10 import '../elements/elements.dart';
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 /// m() { super.foo(null, 42); } 505 /// m() { super.foo(null, 42); }
506 /// } 506 /// }
507 /// 507 ///
508 R visitSuperMethodInvoke( 508 R visitSuperMethodInvoke(
509 Send node, 509 Send node,
510 MethodElement method, 510 MethodElement method,
511 NodeList arguments, 511 NodeList arguments,
512 CallStructure callStructure, 512 CallStructure callStructure,
513 A arg); 513 A arg);
514 514
515 /// Invocation of the super [method] with incompatible [arguments].
516 ///
517 /// For instance
518 /// class B {
519 /// foo(a, b) {}
520 /// }
521 /// class C extends B {
522 /// m() { super.foo(null); } // One argument missing.
523 /// }
524 ///
525 R visitSuperMethodIncompatibleInvoke(
526 Send node,
527 MethodElement method,
528 NodeList arguments,
529 CallStructure callStructure,
530 A arg);
531
515 /// Assignment of [rhs] to the super [method]. 532 /// Assignment of [rhs] to the super [method].
516 /// 533 ///
517 /// For instance 534 /// For instance
518 /// class B { 535 /// class B {
519 /// foo(a, b) {} 536 /// foo(a, b) {}
520 /// } 537 /// }
521 /// class C extends B { 538 /// class C extends B {
522 /// m() { super.foo = rhs; } 539 /// m() { super.foo = rhs; }
523 /// } 540 /// }
524 /// 541 ///
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
1275 A arg); 1292 A arg);
1276 1293
1277 /// Index expression `super[index]` where 'operator []' is unresolved. 1294 /// Index expression `super[index]` where 'operator []' is unresolved.
1278 /// 1295 ///
1279 /// For instance: 1296 /// For instance:
1280 /// class B {} 1297 /// class B {}
1281 /// class C extends B { 1298 /// class C extends B {
1282 /// m(a) => super[a]; 1299 /// m(a) => super[a];
1283 /// } 1300 /// }
1284 /// 1301 ///
1285 R errorUnresolvedSuperIndex( 1302 R visitUnresolvedSuperIndex(
1286 Send node, 1303 Send node,
1287 Element element, 1304 Element element,
1288 Node index, 1305 Node index,
1289 A arg); 1306 A arg);
1290 1307
1291 /// Prefix operation on an index expression `operator super[index]` where 1308 /// Prefix operation on an index expression `operator super[index]` where
1292 /// 'operator []' or 'operator []=' is unresolved and the operation 1309 /// 'operator []' or 'operator []=' is unresolved and the operation
1293 /// is defined by [operator]. 1310 /// is defined by [operator].
1294 /// 1311 ///
1295 /// For instance: 1312 /// For instance:
(...skipping 1367 matching lines...) Expand 10 before | Expand all | Expand 10 after
2663 /// m5() => unresolved.Foo.bar; 2680 /// m5() => unresolved.Foo.bar;
2664 /// m6() => C.unresolved; 2681 /// m6() => C.unresolved;
2665 /// m7() => prefix.C.unresolved; 2682 /// m7() => prefix.C.unresolved;
2666 /// 2683 ///
2667 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 2684 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
2668 R errorUnresolvedGet( 2685 R errorUnresolvedGet(
2669 Send node, 2686 Send node,
2670 Element element, 2687 Element element,
2671 A arg); 2688 A arg);
2672 2689
2690 /// Read of the unresolved super [element].
2691 ///
2692 /// For instance
2693 /// class B {}
2694 /// class C {
2695 /// m() => super.foo;
2696 /// }
2697 ///
2698 R visitUnresolvedSuperGet(
2699 Send node,
2700 Element element,
2701 A arg);
2702
2673 /// Assignment of [rhs] to the unresolved [element]. 2703 /// Assignment of [rhs] to the unresolved [element].
2674 /// 2704 ///
2675 /// For instance 2705 /// For instance
2676 /// class C {} 2706 /// class C {}
2677 /// m1() => unresolved = 42; 2707 /// m1() => unresolved = 42;
2678 /// m2() => prefix.unresolved = 42; 2708 /// m2() => prefix.unresolved = 42;
2679 /// m3() => Unresolved.foo = 42; 2709 /// m3() => Unresolved.foo = 42;
2680 /// m4() => unresolved.foo = 42; 2710 /// m4() => unresolved.foo = 42;
2681 /// m5() => unresolved.Foo.bar = 42; 2711 /// m5() => unresolved.Foo.bar = 42;
2682 /// m6() => C.unresolved = 42; 2712 /// m6() => C.unresolved = 42;
(...skipping 19 matching lines...) Expand all
2702 /// m7() => prefix.C.unresolved(null, 42); 2732 /// m7() => prefix.C.unresolved(null, 42);
2703 /// 2733 ///
2704 // TODO(johnniwinther): Split the cases in which a prefix is resolved. 2734 // TODO(johnniwinther): Split the cases in which a prefix is resolved.
2705 R errorUnresolvedInvoke( 2735 R errorUnresolvedInvoke(
2706 Send node, 2736 Send node,
2707 Element element, 2737 Element element,
2708 NodeList arguments, 2738 NodeList arguments,
2709 Selector selector, 2739 Selector selector,
2710 A arg); 2740 A arg);
2711 2741
2742 /// Invocation of the unresolved super [element] with [arguments].
2743 ///
2744 /// For instance
2745 /// class B {}
2746 /// class C extends B {
2747 /// m() => super.foo();
2748 /// }
2749 ///
2750 R visitUnresolvedSuperInvoke(
2751 Send node,
2752 Element element,
2753 NodeList arguments,
2754 Selector selector,
2755 A arg);
2756
2712 /// Compound assignment of [rhs] on the unresolved [element]. 2757 /// Compound assignment of [rhs] on the unresolved [element].
2713 /// 2758 ///
2714 /// For instance 2759 /// For instance
2715 /// class C {} 2760 /// class C {}
2716 /// m1() => unresolved += 42; 2761 /// m1() => unresolved += 42;
2717 /// m2() => prefix.unresolved += 42; 2762 /// m2() => prefix.unresolved += 42;
2718 /// m3() => Unresolved.foo += 42; 2763 /// m3() => Unresolved.foo += 42;
2719 /// m4() => unresolved.foo += 42; 2764 /// m4() => unresolved.foo += 42;
2720 /// m5() => unresolved.Foo.bar += 42; 2765 /// m5() => unresolved.Foo.bar += 42;
2721 /// m6() => C.unresolved += 42; 2766 /// m6() => C.unresolved += 42;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
2803 2848
2804 /// Unary operation on the unresolved super [element]. 2849 /// Unary operation on the unresolved super [element].
2805 /// 2850 ///
2806 /// For instance 2851 /// For instance
2807 /// class B { 2852 /// class B {
2808 /// } 2853 /// }
2809 /// class C extends B { 2854 /// class C extends B {
2810 /// m() => -super; 2855 /// m() => -super;
2811 /// } 2856 /// }
2812 /// 2857 ///
2813 R errorUnresolvedSuperUnary( 2858 R visitUnresolvedSuperUnary(
2814 Send node, 2859 Send node,
2815 UnaryOperator operator, 2860 UnaryOperator operator,
2816 Element element, 2861 Element element,
2817 A arg); 2862 A arg);
2818 2863
2819 /// Binary operation on the unresolved super [element]. 2864 /// Binary operation on the unresolved super [element].
2820 /// 2865 ///
2821 /// For instance 2866 /// For instance
2822 /// class B { 2867 /// class B {
2823 /// } 2868 /// }
2824 /// class C extends B { 2869 /// class C extends B {
2825 /// m() => super + 42; 2870 /// m() => super + 42;
2826 /// } 2871 /// }
2827 /// 2872 ///
2828 R errorUnresolvedSuperBinary( 2873 R visitUnresolvedSuperBinary(
2829 Send node, 2874 Send node,
2830 Element element, 2875 Element element,
2831 BinaryOperator operator, 2876 BinaryOperator operator,
2832 Node argument, 2877 Node argument,
2833 A arg); 2878 A arg);
2834 2879
2835 /// Invocation of an undefined unary [operator] on [expression]. 2880 /// Invocation of an undefined unary [operator] on [expression].
2836 R errorUndefinedUnaryExpression( 2881 R errorUndefinedUnaryExpression(
2837 Send node, 2882 Send node,
2838 Operator operator, 2883 Operator operator,
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
3555 /// C() : this._(42); 3600 /// C() : this._(42);
3556 /// } 3601 /// }
3557 /// 3602 ///
3558 R errorUnresolvedThisConstructorInvoke( 3603 R errorUnresolvedThisConstructorInvoke(
3559 Send node, 3604 Send node,
3560 Element element, 3605 Element element,
3561 NodeList arguments, 3606 NodeList arguments,
3562 Selector selector, 3607 Selector selector,
3563 A arg); 3608 A arg);
3564 } 3609 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/access_semantics.dart ('k') | pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698