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

Side by Side Diff: tests/compiler/dart2js/semantic_visitor_test.dart

Issue 1112563002: Refactor SsaBuilder.visitStaticSend and visitGetterSend. (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
« no previous file with comments | « tests/compiler/dart2js/load_elimination_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_test; 5 library dart2js.semantics_visitor_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'package:async_helper/async_helper.dart'; 8 import 'package:async_helper/async_helper.dart';
9 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
10 import 'package:compiler/src/constants/expressions.dart'; 10 import 'package:compiler/src/constants/expressions.dart';
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 const Test.prefix( 498 const Test.prefix(
499 ''' 499 '''
500 class C { 500 class C {
501 static o(a, b) {} 501 static o(a, b) {}
502 } 502 }
503 ''', 503 ''',
504 'm() { p.C.o(null, 42); }', 504 'm() { p.C.o(null, 42); }',
505 const Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE, 505 const Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE,
506 element: 'function(C#o)', 506 element: 'function(C#o)',
507 arguments: '(null,42)')), 507 arguments: '(null,42)')),
508 const Test(
509 '''
510 class C { static o(a, b) {} }
511 m() => C.o(null);
512 ''',
513 const Visit(VisitKind.VISIT_STATIC_FUNCTION_INCOMPATIBLE_INVOKE,
514 element: 'function(C#o)',
515 arguments: '(null)')),
508 ], 516 ],
509 'Top level fields': const [ 517 'Top level fields': const [
510 // Top level fields 518 // Top level fields
511 const Test( 519 const Test(
512 ''' 520 '''
513 var o; 521 var o;
514 m() => o; 522 m() => o;
515 ''', 523 ''',
516 const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_GET, 524 const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_GET,
517 element: 'field(o)')), 525 element: 'field(o)')),
(...skipping 29 matching lines...) Expand all
547 element: 'field(o)', 555 element: 'field(o)',
548 arguments: '(null,42)')), 556 arguments: '(null,42)')),
549 const Test.prefix( 557 const Test.prefix(
550 ''' 558 '''
551 var o; 559 var o;
552 ''', 560 ''',
553 'm() { p.o(null, 42); }', 561 'm() { p.o(null, 42); }',
554 const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_INVOKE, 562 const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_INVOKE,
555 element: 'field(o)', 563 element: 'field(o)',
556 arguments: '(null,42)')), 564 arguments: '(null,42)')),
565 const Test(
566 '''
567 m() => o;
568 ''',
569 const Visit(VisitKind.VISIT_UNRESOLVED_GET,
570 name: 'o')),
557 ], 571 ],
558 'Top level properties': const [ 572 'Top level properties': const [
559 // Top level properties 573 // Top level properties
560 const Test( 574 const Test(
561 ''' 575 '''
562 get o => null; 576 get o => null;
563 m() => o; 577 m() => o;
564 ''', 578 ''',
565 const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_GET, 579 const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_GET,
566 element: 'getter(o)')), 580 element: 'getter(o)')),
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_GET, 630 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_GET,
617 element: 'function(o)')), 631 element: 'function(o)')),
618 const Test( 632 const Test(
619 ''' 633 '''
620 o(a, b) {} 634 o(a, b) {}
621 m() => o(null, 42); 635 m() => o(null, 42);
622 ''', 636 ''',
623 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE, 637 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
624 element: 'function(o)', 638 element: 'function(o)',
625 arguments: '(null,42)')), 639 arguments: '(null,42)')),
640 const Test(
641 '''
642 o(a, b) {}
643 m() => o(null);
644 ''',
645 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INCOMPATIBLE_INVOKE,
646 element: 'function(o)',
647 arguments: '(null)')),
626 const Test.prefix( 648 const Test.prefix(
627 ''' 649 '''
628 o(a, b) {} 650 o(a, b) {}
629 ''', 651 ''',
630 'm() { p.o(null, 42); }', 652 'm() { p.o(null, 42); }',
631 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE, 653 const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
632 element: 'function(o)', 654 element: 'function(o)',
633 arguments: '(null,42)')), 655 arguments: '(null,42)')),
656 const Test(
657 '''
658 m() => o(null, 42);
659 ''',
660 const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE,
661 name: 'o',
662 arguments: '(null,42)')),
634 ], 663 ],
635 'Dynamic properties': const [ 664 'Dynamic properties': const [
636 // Dynamic properties 665 // Dynamic properties
637 const Test('m(o) => o.foo;', 666 const Test('m(o) => o.foo;',
638 const [ 667 const [
639 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET, 668 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET,
640 receiver: 'o', 669 receiver: 'o',
641 name: 'foo'), 670 name: 'foo'),
642 const Visit(VisitKind.VISIT_PARAMETER_GET, 671 const Visit(VisitKind.VISIT_PARAMETER_GET,
643 element: 'parameter(m#o)'), 672 element: 'parameter(m#o)'),
(...skipping 2990 matching lines...) Expand 10 before | Expand all | Expand 10 after
3634 MethodElement function, 3663 MethodElement function,
3635 NodeList arguments, 3664 NodeList arguments,
3636 CallStructure callStructure, 3665 CallStructure callStructure,
3637 arg) { 3666 arg) {
3638 visits.add(new Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE, 3667 visits.add(new Visit(VisitKind.VISIT_STATIC_FUNCTION_INVOKE,
3639 element: function, arguments: arguments)); 3668 element: function, arguments: arguments));
3640 apply(arguments, arg); 3669 apply(arguments, arg);
3641 } 3670 }
3642 3671
3643 @override 3672 @override
3673 visitStaticFunctionIncompatibleInvoke(
3674 Send node,
3675 MethodElement function,
3676 NodeList arguments,
3677 CallStructure callStructure,
3678 arg) {
3679 visits.add(new Visit(VisitKind.VISIT_STATIC_FUNCTION_INCOMPATIBLE_INVOKE,
3680 element: function, arguments: arguments));
3681 apply(arguments, arg);
3682 }
3683
3684 @override
3644 visitStaticGetterGet( 3685 visitStaticGetterGet(
3645 Send node, 3686 Send node,
3646 FunctionElement getter, 3687 FunctionElement getter,
3647 arg) { 3688 arg) {
3648 visits.add(new Visit(VisitKind.VISIT_STATIC_GETTER_GET, 3689 visits.add(new Visit(VisitKind.VISIT_STATIC_GETTER_GET,
3649 element: getter)); 3690 element: getter));
3650 } 3691 }
3651 3692
3652 @override 3693 @override
3653 visitStaticGetterInvoke( 3694 visitStaticGetterInvoke(
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
3822 MethodElement function, 3863 MethodElement function,
3823 NodeList arguments, 3864 NodeList arguments,
3824 CallStructure callStructure, 3865 CallStructure callStructure,
3825 arg) { 3866 arg) {
3826 visits.add(new Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE, 3867 visits.add(new Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INVOKE,
3827 element: function, arguments: arguments)); 3868 element: function, arguments: arguments));
3828 apply(arguments, arg); 3869 apply(arguments, arg);
3829 } 3870 }
3830 3871
3831 @override 3872 @override
3873 visitTopLevelFunctionIncompatibleInvoke(
3874 Send node,
3875 MethodElement function,
3876 NodeList arguments,
3877 CallStructure callStructure,
3878 arg) {
3879 visits.add(new Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_INCOMPATIBLE_INVOKE,
3880 element: function, arguments: arguments));
3881 apply(arguments, arg);
3882 }
3883
3884 @override
3832 visitTopLevelGetterGet( 3885 visitTopLevelGetterGet(
3833 Send node, 3886 Send node,
3834 FunctionElement getter, 3887 FunctionElement getter,
3835 arg) { 3888 arg) {
3836 visits.add(new Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_GET, 3889 visits.add(new Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_GET,
3837 element: getter)); 3890 element: getter));
3838 } 3891 }
3839 3892
3840 @override 3893 @override
3841 visitTopLevelGetterInvoke( 3894 visitTopLevelGetterInvoke(
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after
5058 errorUnresolvedCompound( 5111 errorUnresolvedCompound(
5059 Send node, 5112 Send node,
5060 ErroneousElement element, 5113 ErroneousElement element,
5061 AssignmentOperator operator, 5114 AssignmentOperator operator,
5062 Node rhs, 5115 Node rhs,
5063 arg) { 5116 arg) {
5064 // TODO: implement errorUnresolvedCompound 5117 // TODO: implement errorUnresolvedCompound
5065 } 5118 }
5066 5119
5067 @override 5120 @override
5068 errorUnresolvedGet( 5121 visitUnresolvedGet(
5069 Send node, 5122 Send node,
5070 ErroneousElement element, 5123 Element element,
5071 arg) { 5124 arg) {
5072 // TODO: implement errorUnresolvedGet 5125 visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_GET, name: element.name));
5073 } 5126 }
5074 5127
5075 @override 5128 @override
5076 errorUnresolvedInvoke( 5129 visitUnresolvedInvoke(
5077 Send node, 5130 Send node,
5078 ErroneousElement element, 5131 Element element,
5079 NodeList arguments, 5132 NodeList arguments,
5080 Selector selector, 5133 Selector selector,
5081 arg) { 5134 arg) {
5082 // TODO: implement errorUnresolvedInvoke 5135 visits.add(new Visit(VisitKind.VISIT_UNRESOLVED_INVOKE,
5136 name: element.name, arguments: arguments));
5083 } 5137 }
5084 5138
5085 @override 5139 @override
5086 errorUnresolvedPostfix( 5140 errorUnresolvedPostfix(
5087 Send node, 5141 Send node,
5088 ErroneousElement element, 5142 ErroneousElement element,
5089 IncDecOperator operator, 5143 IncDecOperator operator,
5090 arg) { 5144 arg) {
5091 visits.add(new Visit( 5145 visits.add(new Visit(
5092 VisitKind.ERROR_UNRESOLVED_POSTFIX, operator: operator)); 5146 VisitKind.ERROR_UNRESOLVED_POSTFIX, operator: operator));
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after
6029 VISIT_STATIC_GETTER_INVOKE, 6083 VISIT_STATIC_GETTER_INVOKE,
6030 VISIT_STATIC_GETTER_SETTER_COMPOUND, 6084 VISIT_STATIC_GETTER_SETTER_COMPOUND,
6031 VISIT_STATIC_METHOD_SETTER_COMPOUND, 6085 VISIT_STATIC_METHOD_SETTER_COMPOUND,
6032 VISIT_STATIC_GETTER_SETTER_PREFIX, 6086 VISIT_STATIC_GETTER_SETTER_PREFIX,
6033 VISIT_STATIC_GETTER_SETTER_POSTFIX, 6087 VISIT_STATIC_GETTER_SETTER_POSTFIX,
6034 VISIT_STATIC_GETTER_DECL, 6088 VISIT_STATIC_GETTER_DECL,
6035 VISIT_STATIC_SETTER_DECL, 6089 VISIT_STATIC_SETTER_DECL,
6036 6090
6037 VISIT_STATIC_FUNCTION_GET, 6091 VISIT_STATIC_FUNCTION_GET,
6038 VISIT_STATIC_FUNCTION_INVOKE, 6092 VISIT_STATIC_FUNCTION_INVOKE,
6093 VISIT_STATIC_FUNCTION_INCOMPATIBLE_INVOKE,
6039 VISIT_STATIC_FUNCTION_DECL, 6094 VISIT_STATIC_FUNCTION_DECL,
6040 6095
6041 VISIT_TOP_LEVEL_FIELD_GET, 6096 VISIT_TOP_LEVEL_FIELD_GET,
6042 VISIT_TOP_LEVEL_FIELD_SET, 6097 VISIT_TOP_LEVEL_FIELD_SET,
6043 VISIT_TOP_LEVEL_FIELD_INVOKE, 6098 VISIT_TOP_LEVEL_FIELD_INVOKE,
6044 VISIT_TOP_LEVEL_FIELD_COMPOUND, 6099 VISIT_TOP_LEVEL_FIELD_COMPOUND,
6045 VISIT_TOP_LEVEL_FIELD_PREFIX, 6100 VISIT_TOP_LEVEL_FIELD_PREFIX,
6046 VISIT_TOP_LEVEL_FIELD_POSTFIX, 6101 VISIT_TOP_LEVEL_FIELD_POSTFIX,
6047 VISIT_TOP_LEVEL_FIELD_DECL, 6102 VISIT_TOP_LEVEL_FIELD_DECL,
6048 VISIT_TOP_LEVEL_CONSTANT_DECL, 6103 VISIT_TOP_LEVEL_CONSTANT_DECL,
6049 6104
6050 VISIT_TOP_LEVEL_GETTER_GET, 6105 VISIT_TOP_LEVEL_GETTER_GET,
6051 VISIT_TOP_LEVEL_SETTER_SET, 6106 VISIT_TOP_LEVEL_SETTER_SET,
6052 VISIT_TOP_LEVEL_GETTER_INVOKE, 6107 VISIT_TOP_LEVEL_GETTER_INVOKE,
6053 VISIT_TOP_LEVEL_GETTER_SETTER_COMPOUND, 6108 VISIT_TOP_LEVEL_GETTER_SETTER_COMPOUND,
6054 VISIT_TOP_LEVEL_GETTER_SETTER_PREFIX, 6109 VISIT_TOP_LEVEL_GETTER_SETTER_PREFIX,
6055 VISIT_TOP_LEVEL_GETTER_SETTER_POSTFIX, 6110 VISIT_TOP_LEVEL_GETTER_SETTER_POSTFIX,
6056 VISIT_TOP_LEVEL_GETTER_DECL, 6111 VISIT_TOP_LEVEL_GETTER_DECL,
6057 VISIT_TOP_LEVEL_SETTER_DECL, 6112 VISIT_TOP_LEVEL_SETTER_DECL,
6058 6113
6059 VISIT_TOP_LEVEL_FUNCTION_GET, 6114 VISIT_TOP_LEVEL_FUNCTION_GET,
6060 VISIT_TOP_LEVEL_FUNCTION_INVOKE, 6115 VISIT_TOP_LEVEL_FUNCTION_INVOKE,
6116 VISIT_TOP_LEVEL_FUNCTION_INCOMPATIBLE_INVOKE,
6061 VISIT_TOP_LEVEL_FUNCTION_DECL, 6117 VISIT_TOP_LEVEL_FUNCTION_DECL,
6062 6118
6063 VISIT_DYNAMIC_PROPERTY_GET, 6119 VISIT_DYNAMIC_PROPERTY_GET,
6064 VISIT_DYNAMIC_PROPERTY_SET, 6120 VISIT_DYNAMIC_PROPERTY_SET,
6065 VISIT_DYNAMIC_PROPERTY_INVOKE, 6121 VISIT_DYNAMIC_PROPERTY_INVOKE,
6066 VISIT_DYNAMIC_PROPERTY_COMPOUND, 6122 VISIT_DYNAMIC_PROPERTY_COMPOUND,
6067 VISIT_DYNAMIC_PROPERTY_PREFIX, 6123 VISIT_DYNAMIC_PROPERTY_PREFIX,
6068 VISIT_DYNAMIC_PROPERTY_POSTFIX, 6124 VISIT_DYNAMIC_PROPERTY_POSTFIX,
6069 6125
6070 VISIT_THIS_GET, 6126 VISIT_THIS_GET,
(...skipping 23 matching lines...) Expand all
6094 VISIT_SUPER_GETTER_FIELD_PREFIX, 6150 VISIT_SUPER_GETTER_FIELD_PREFIX,
6095 VISIT_SUPER_FIELD_SETTER_PREFIX, 6151 VISIT_SUPER_FIELD_SETTER_PREFIX,
6096 VISIT_SUPER_GETTER_SETTER_POSTFIX, 6152 VISIT_SUPER_GETTER_SETTER_POSTFIX,
6097 VISIT_SUPER_GETTER_FIELD_POSTFIX, 6153 VISIT_SUPER_GETTER_FIELD_POSTFIX,
6098 VISIT_SUPER_FIELD_SETTER_POSTFIX, 6154 VISIT_SUPER_FIELD_SETTER_POSTFIX,
6099 6155
6100 VISIT_SUPER_METHOD_GET, 6156 VISIT_SUPER_METHOD_GET,
6101 VISIT_SUPER_METHOD_INVOKE, 6157 VISIT_SUPER_METHOD_INVOKE,
6102 VISIT_SUPER_METHOD_INCOMPATIBLE_INVOKE, 6158 VISIT_SUPER_METHOD_INCOMPATIBLE_INVOKE,
6103 6159
6160 VISIT_UNRESOLVED_GET,
6161 VISIT_UNRESOLVED_INVOKE,
6104 VISIT_UNRESOLVED_SUPER_GET, 6162 VISIT_UNRESOLVED_SUPER_GET,
6105 VISIT_UNRESOLVED_SUPER_INVOKE, 6163 VISIT_UNRESOLVED_SUPER_INVOKE,
6106 6164
6107 VISIT_BINARY, 6165 VISIT_BINARY,
6108 VISIT_INDEX, 6166 VISIT_INDEX,
6109 VISIT_EQUALS, 6167 VISIT_EQUALS,
6110 VISIT_NOT_EQUALS, 6168 VISIT_NOT_EQUALS,
6111 VISIT_INDEX_PREFIX, 6169 VISIT_INDEX_PREFIX,
6112 VISIT_INDEX_POSTFIX, 6170 VISIT_INDEX_POSTFIX,
6113 6171
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
6203 VISIT_OPTIONAL_PARAMETER_DECL, 6261 VISIT_OPTIONAL_PARAMETER_DECL,
6204 VISIT_NAMED_PARAMETER_DECL, 6262 VISIT_NAMED_PARAMETER_DECL,
6205 VISIT_REQUIRED_INITIALIZING_FORMAL_DECL, 6263 VISIT_REQUIRED_INITIALIZING_FORMAL_DECL,
6206 VISIT_OPTIONAL_INITIALIZING_FORMAL_DECL, 6264 VISIT_OPTIONAL_INITIALIZING_FORMAL_DECL,
6207 VISIT_NAMED_INITIALIZING_FORMAL_DECL, 6265 VISIT_NAMED_INITIALIZING_FORMAL_DECL,
6208 6266
6209 ERROR_UNRESOLVED_POSTFIX, 6267 ERROR_UNRESOLVED_POSTFIX,
6210 6268
6211 // TODO(johnniwinther): Add tests for more error cases. 6269 // TODO(johnniwinther): Add tests for more error cases.
6212 } 6270 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/load_elimination_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698