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

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

Issue 1313323002: Add visitor methods specific to ??= to SemanticSendVisitor. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 3 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
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 part of dart2js.semantics_visitor_test; 5 part of dart2js.semantics_visitor_test;
6 6
7 const Map<String, List<Test>> SEND_TESTS = const { 7 const Map<String, List<Test>> SEND_TESTS = const {
8 'Parameters': const [ 8 'Parameters': const [
9 // Parameters 9 // Parameters
10 const Test('m(o) => o;', 10 const Test('m(o) => o;',
(...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1465 class C {} 1465 class C {}
1466 m() => C += 42; 1466 m() => C += 42;
1467 ''', 1467 ''',
1468 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_COMPOUND, 1468 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_COMPOUND,
1469 constant: 'C', 1469 constant: 'C',
1470 operator: '+=', 1470 operator: '+=',
1471 rhs: '42')), 1471 rhs: '42')),
1472 const Test( 1472 const Test(
1473 ''' 1473 '''
1474 class C {} 1474 class C {}
1475 m() => C ??= 42;
1476 ''',
1477 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_SET_IF_NULL,
1478 constant: 'C',
1479 rhs: '42')),
1480 const Test(
1481 '''
1482 class C {}
1475 m() => ++C; 1483 m() => ++C;
1476 ''', 1484 ''',
1477 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_PREFIX, 1485 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_PREFIX,
1478 constant: 'C', 1486 constant: 'C',
1479 operator: '++')), 1487 operator: '++')),
1480 const Test( 1488 const Test(
1481 ''' 1489 '''
1482 class C {} 1490 class C {}
1483 m() => C--; 1491 m() => C--;
1484 ''', 1492 ''',
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 typedef F(); 1535 typedef F();
1528 m() => F += 42; 1536 m() => F += 42;
1529 ''', 1537 ''',
1530 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_COMPOUND, 1538 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_COMPOUND,
1531 constant: 'F', 1539 constant: 'F',
1532 operator: '+=', 1540 operator: '+=',
1533 rhs: '42')), 1541 rhs: '42')),
1534 const Test( 1542 const Test(
1535 ''' 1543 '''
1536 typedef F(); 1544 typedef F();
1545 m() => F ??= 42;
1546 ''',
1547 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_SET_IF_NULL,
1548 constant: 'F',
1549 rhs: '42')),
1550 const Test(
1551 '''
1552 typedef F();
1537 m() => ++F; 1553 m() => ++F;
1538 ''', 1554 ''',
1539 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_PREFIX, 1555 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_PREFIX,
1540 constant: 'F', 1556 constant: 'F',
1541 operator: '++')), 1557 operator: '++')),
1542 const Test( 1558 const Test(
1543 ''' 1559 '''
1544 typedef F(); 1560 typedef F();
1545 m() => F--; 1561 m() => F--;
1546 ''', 1562 ''',
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1582 m() => T += 42; 1598 m() => T += 42;
1583 } 1599 }
1584 ''', 1600 ''',
1585 const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_COMPOUND, 1601 const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_COMPOUND,
1586 element: 'type_variable(C#T)', 1602 element: 'type_variable(C#T)',
1587 operator: '+=', 1603 operator: '+=',
1588 rhs: '42')), 1604 rhs: '42')),
1589 const Test.clazz( 1605 const Test.clazz(
1590 ''' 1606 '''
1591 class C<T> { 1607 class C<T> {
1608 m() => T ??= 42;
1609 }
1610 ''',
1611 const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_SET_IF_NULL,
1612 element: 'type_variable(C#T)',
1613 rhs: '42')),
1614 const Test.clazz(
1615 '''
1616 class C<T> {
1592 m() => ++T; 1617 m() => ++T;
1593 } 1618 }
1594 ''', 1619 ''',
1595 const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_PREFIX, 1620 const Visit(VisitKind.VISIT_TYPE_VARIABLE_TYPE_LITERAL_PREFIX,
1596 element: 'type_variable(C#T)', 1621 element: 'type_variable(C#T)',
1597 operator: '++')), 1622 operator: '++')),
1598 const Test.clazz( 1623 const Test.clazz(
1599 ''' 1624 '''
1600 class C<T> { 1625 class C<T> {
1601 m() => T--; 1626 m() => T--;
(...skipping 15 matching lines...) Expand all
1617 class C<T> { 1642 class C<T> {
1618 static m() => T(null, 42); 1643 static m() => T(null, 42);
1619 } 1644 }
1620 ''', 1645 ''',
1621 const Visit(VisitKind.ERROR_INVALID_INVOKE, 1646 const Visit(VisitKind.ERROR_INVALID_INVOKE,
1622 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER, 1647 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
1623 arguments: '(null,42)')), 1648 arguments: '(null,42)')),
1624 const Test.clazz( 1649 const Test.clazz(
1625 ''' 1650 '''
1626 class C<T> { 1651 class C<T> {
1627 static m() => T += 42; 1652 static m() => T ??= 42;
1628 } 1653 }
1629 ''', 1654 ''',
1630 const Visit(VisitKind.ERROR_INVALID_COMPOUND, 1655 const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
1631 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER, 1656 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
1632 operator: '+=',
1633 rhs: '42')), 1657 rhs: '42')),
1634 const Test.clazz( 1658 const Test.clazz(
1635 ''' 1659 '''
1660 class C<T> {
1661 static m() => T ??= 42;
1662 }
1663 ''',
1664 const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
1665 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
1666 rhs: '42')),
1667 const Test.clazz(
1668 '''
1636 class C<T> { 1669 class C<T> {
1637 static m() => ++T; 1670 static m() => ++T;
1638 } 1671 }
1639 ''', 1672 ''',
1640 const Visit(VisitKind.ERROR_INVALID_PREFIX, 1673 const Visit(VisitKind.ERROR_INVALID_PREFIX,
1641 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER, 1674 error: MessageKind.TYPE_VARIABLE_WITHIN_STATIC_MEMBER,
1642 operator: '++')), 1675 operator: '++')),
1643 const Test.clazz( 1676 const Test.clazz(
1644 ''' 1677 '''
1645 class C<T> { 1678 class C<T> {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 const Test( 1711 const Test(
1679 ''' 1712 '''
1680 m() => dynamic += 42; 1713 m() => dynamic += 42;
1681 ''', 1714 ''',
1682 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_COMPOUND, 1715 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_COMPOUND,
1683 constant: 'dynamic', 1716 constant: 'dynamic',
1684 operator: '+=', 1717 operator: '+=',
1685 rhs: '42')), 1718 rhs: '42')),
1686 const Test( 1719 const Test(
1687 ''' 1720 '''
1721 m() => dynamic ??= 42;
1722 ''',
1723 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_SET_IF_NULL,
1724 constant: 'dynamic',
1725 rhs: '42')),
1726 const Test(
1727 '''
1688 m() => ++dynamic; 1728 m() => ++dynamic;
1689 ''', 1729 ''',
1690 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_PREFIX, 1730 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_PREFIX,
1691 constant: 'dynamic', 1731 constant: 'dynamic',
1692 operator: '++')), 1732 operator: '++')),
1693 const Test( 1733 const Test(
1694 ''' 1734 '''
1695 m() => dynamic--; 1735 m() => dynamic--;
1696 ''', 1736 ''',
1697 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_POSTFIX, 1737 const Visit(VisitKind.VISIT_DYNAMIC_TYPE_LITERAL_POSTFIX,
(...skipping 2231 matching lines...) Expand 10 before | Expand all | Expand 10 after
3929 const [ 3969 const [
3930 const Visit( 3970 const Visit(
3931 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_COMPOUND, 3971 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_COMPOUND,
3932 receiver: 'a', name: 'b', operator: '*=', rhs: '42'), 3972 receiver: 'a', name: 'b', operator: '*=', rhs: '42'),
3933 const Visit( 3973 const Visit(
3934 VisitKind.VISIT_PARAMETER_GET, 3974 VisitKind.VISIT_PARAMETER_GET,
3935 element: 'parameter(m#a)'), 3975 element: 'parameter(m#a)'),
3936 ]), 3976 ]),
3937 const Test( 3977 const Test(
3938 ''' 3978 '''
3979 m(a) => a?.b ??= 42;
3980 ''',
3981 const [
3982 const Visit(
3983 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_SET_IF_NULL,
3984 receiver: 'a', name: 'b', rhs: '42'),
3985 const Visit(
3986 VisitKind.VISIT_PARAMETER_GET,
3987 element: 'parameter(m#a)'),
3988 ]),
3989 const Test(
3990 '''
3939 m(a, b) => a ?? b; 3991 m(a, b) => a ?? b;
3940 ''', 3992 ''',
3941 const [ 3993 const [
3942 const Visit(VisitKind.VISIT_IF_NULL, 3994 const Visit(VisitKind.VISIT_IF_NULL,
3943 left: 'a', right: 'b'), 3995 left: 'a', right: 'b'),
3944 const Visit( 3996 const Visit(
3945 VisitKind.VISIT_PARAMETER_GET, 3997 VisitKind.VISIT_PARAMETER_GET,
3946 element: 'parameter(m#a)'), 3998 element: 'parameter(m#a)'),
3947 const Visit( 3999 const Visit(
3948 VisitKind.VISIT_PARAMETER_GET, 4000 VisitKind.VISIT_PARAMETER_GET,
3949 element: 'parameter(m#b)'), 4001 element: 'parameter(m#b)'),
3950 ]), 4002 ]),
3951 const Test( 4003 const Test(
3952 ''' 4004 '''
3953 m(a) => a ??= 42; 4005 m(a) => a ??= 42;
3954 ''', 4006 ''',
3955 const Visit( 4007 const Visit(
3956 VisitKind.VISIT_PARAMETER_COMPOUND, 4008 VisitKind.VISIT_PARAMETER_SET_IF_NULL,
3957 element: 'parameter(m#a)', 4009 element: 'parameter(m#a)',
3958 operator: '??=',
3959 rhs: '42')), 4010 rhs: '42')),
3960 const Test.prefix( 4011 const Test.prefix(
3961 ''' 4012 '''
3962 var o; 4013 var o;
3963 ''', 4014 ''',
3964 'm() => p?.o;', 4015 'm() => p?.o;',
3965 const Visit(VisitKind.ERROR_INVALID_GET, 4016 const Visit(VisitKind.ERROR_INVALID_GET,
3966 error: MessageKind.PREFIX_AS_EXPRESSION)), 4017 error: MessageKind.PREFIX_AS_EXPRESSION)),
3967 ], 4018 ],
4019 'Set if null': const [
4020 const Test(
4021 '''
4022 m(a) => a.b ??= 42;
4023 ''',
4024 const [
4025 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_SET_IF_NULL,
4026 receiver: 'a', name: 'b', rhs: '42'),
4027 const Visit(VisitKind.VISIT_PARAMETER_GET,
4028 element: 'parameter(m#a)')
4029 ]),
4030 const Test(
4031 '''
4032 m(a) => a ??= 42;
4033 ''',
4034 const Visit(VisitKind.VISIT_PARAMETER_SET_IF_NULL,
4035 element: 'parameter(m#a)', rhs: '42')),
4036 const Test(
4037 '''
4038 m(final a) => a ??= 42;
4039 ''',
4040 const Visit(VisitKind.VISIT_FINAL_PARAMETER_SET_IF_NULL,
4041 element: 'parameter(m#a)', rhs: '42')),
4042 const Test(
4043 '''
4044 m() {
4045 var a;
4046 a ??= 42;
4047 }
4048 ''',
4049 const Visit(VisitKind.VISIT_LOCAL_VARIABLE_SET_IF_NULL,
4050 element: 'variable(m#a)', rhs: '42')),
4051 const Test(
4052 '''
4053 m() {
4054 final a = 0;
4055 a ??= 42;
4056 }
4057 ''',
4058 const Visit(VisitKind.VISIT_FINAL_LOCAL_VARIABLE_SET_IF_NULL,
4059 element: 'variable(m#a)', rhs: '42')),
4060 const Test(
4061 '''
4062 m() {
4063 a() {}
4064 a ??= 42;
4065 }
4066 ''',
4067 const Visit(VisitKind.VISIT_LOCAL_FUNCTION_SET_IF_NULL,
4068 element: 'function(m#a)', rhs: '42')),
4069 const Test(
4070 '''
4071 var a;
4072 m() => a ??= 42;
4073 ''',
4074 const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_SET_IF_NULL,
4075 element: 'field(a)', rhs: '42')),
4076 const Test(
4077 '''
4078 get a => 0;
4079 set a(_) {}
4080 m() => a ??= 42;
4081 ''',
4082 const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_SETTER_SET_IF_NULL,
4083 getter: 'getter(a)', setter: 'setter(a)',
4084 rhs: '42')),
4085 const Test(
4086 '''
4087 class C {
4088 static var a;
4089 }
4090 m() => C.a ??= 42;
4091 ''',
4092 const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
4093 element: 'field(C#a)', rhs: '42')),
4094 const Test.clazz(
4095 '''
4096 class C {
4097 static var a;
4098 m() => C.a ??= 42;
4099 }
4100 ''',
4101 const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
4102 element: 'field(C#a)', rhs: '42')),
4103 const Test.clazz(
4104 '''
4105 class C {
4106 static var a;
4107 m() => a ??= 42;
4108 }
4109 ''',
4110 const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
4111 element: 'field(C#a)', rhs: '42')),
4112 const Test.prefix(
4113 '''
4114 class C {
4115 static var a;
4116 }
4117 ''',
4118 '''
4119 m() => p.C.a ??= 42;
4120 ''',
4121 const Visit(VisitKind.VISIT_STATIC_FIELD_SET_IF_NULL,
4122 element: 'field(C#a)', rhs: '42')),
4123 const Test.clazz(
4124 '''
4125 class C {
4126 var o;
4127 static m() { o ??= 42; }
4128 }
4129 ''',
4130 const Visit(VisitKind.ERROR_INVALID_SET_IF_NULL,
4131 error: MessageKind.NO_INSTANCE_AVAILABLE,
4132 rhs: '42')),
4133 const Test(
4134 '''
4135 class C {
4136 static get a => 0;
4137 static set a(_) {}
4138 }
4139 m() => C.a ??= 42;
4140 ''',
4141 const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
4142 getter: 'getter(C#a)', setter: 'setter(C#a)',
4143 rhs: '42')),
4144 const Test.clazz(
4145 '''
4146 class C {
4147 static get a => 0;
4148 static set a(_) {}
4149 m() => C.a ??= 42;
4150 }
4151 ''',
4152 const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
4153 getter: 'getter(C#a)', setter: 'setter(C#a)',
4154 rhs: '42')),
4155 const Test.clazz(
4156 '''
4157 class C {
4158 static get a => 0;
4159 static set a(_) {}
4160 m() => a ??= 42;
4161 }
4162 ''',
4163 const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
4164 getter: 'getter(C#a)', setter: 'setter(C#a)',
4165 rhs: '42')),
4166 const Test.prefix(
4167 '''
4168 class C {
4169 static get a => 0;
4170 static set a(_) {}
4171 }
4172 ''',
4173 '''
4174 m() => p.C.a ??= 42;
4175 ''',
4176 const Visit(VisitKind.VISIT_STATIC_GETTER_SETTER_SET_IF_NULL,
4177 getter: 'getter(C#a)', setter: 'setter(C#a)',
4178 rhs: '42')),
4179 // TODO(johnniwinther): Enable these when dart2js supports method and setter
4180 // with the same name.
4181 /*const Test(
4182 '''
4183 class C {
4184 static a() {}
4185 static set a(_) {}
4186 }
4187 m() => C.a ??= 42;
4188 ''',
4189 const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
4190 getter: 'function(C#a)', setter: 'setter(C#a)',
4191 rhs: '42')),
4192 const Test.clazz(
4193 '''
4194 class C {
4195 static a() {}
4196 static set a(_) {}
4197 m() => C.a ??= 42;
4198 }
4199 ''',
4200 const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
4201 getter: 'function(C#a)', setter: 'setter(C#a)',
4202 rhs: '42')),
4203 const Test.clazz(
4204 '''
4205 class C {
4206 static a() {}
4207 static set a(_) {}
4208 m() => a ??= 42;
4209 }
4210 ''',
4211 const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
4212 getter: 'function(C#a)', setter: 'setter(C#a)',
4213 rhs: '42')),
4214 const Test.prefix(
4215 '''
4216 class C {
4217 static a() {}
4218 static set a(_) {}
4219 }
4220 ''',
4221 '''
4222 m() => p.C.a ??= 42;
4223 ''',
4224 const Visit(VisitKind.VISIT_STATIC_METHOD_SETTER_SET_IF_NULL,
4225 getter: 'function(C#a)', setter: 'setter(C#a)',
4226 rhs: '42')),*/
4227 const Test.clazz(
4228 '''
4229 class C {
4230 var a;
4231 m() => a ??= 42;
4232 }
4233 ''',
4234 const Visit(VisitKind.VISIT_THIS_PROPERTY_SET_IF_NULL,
4235 name: 'a', rhs: '42')),
4236 const Test.clazz(
4237 '''
4238 class C {
4239 var a = 0;
4240 m() => this.a ??= 42;
4241 }
4242 ''',
4243 const Visit(VisitKind.VISIT_THIS_PROPERTY_SET_IF_NULL,
4244 name: 'a', rhs: '42')),
4245 const Test.clazz(
4246 '''
4247 class B {
4248 var a = 0;
4249 }
4250 class C extends B {
4251 m() => super.a ??= 42;
4252 }
4253 ''',
4254 const Visit(VisitKind.VISIT_SUPER_FIELD_SET_IF_NULL,
4255 element: 'field(B#a)', rhs: '42')),
4256 const Test.clazz(
4257 '''
4258 class B {
4259 final a = 0;
4260 }
4261 class C extends B {
4262 m() => super.a ??= 42;
4263 }
4264 ''',
4265 const Visit(VisitKind.VISIT_SUPER_FINAL_FIELD_SET_IF_NULL,
4266 element: 'field(B#a)', rhs: '42')),
4267 const Test.clazz(
4268 '''
4269 class B {
4270 get a => 0;
4271 set a (_) {}
4272 }
4273 class C extends B {
4274 m() => super.a ??= 42;
4275 }
4276 ''',
4277 const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_SET_IF_NULL,
4278 getter: 'getter(B#a)', setter: 'setter(B#a)',
4279 rhs: '42')),
4280 const Test.clazz(
4281 '''
4282 class A {
4283 get a => 0;
4284 }
4285 class B extends A {
4286 set a (_) {}
4287 }
4288 class C extends B {
4289 m() => super.a ??= 42;
4290 }
4291 ''',
4292 const Visit(VisitKind.VISIT_SUPER_GETTER_SETTER_SET_IF_NULL,
4293 getter: 'getter(A#a)', setter: 'setter(B#a)',
4294 rhs: '42')),
4295 const Test.clazz(
4296 '''
4297 class A {
4298 var a;
4299 }
4300 class B extends A {
4301 get a => 0;
4302 }
4303
4304 class C extends B {
4305 m() => super.a ??= 42;
4306 }
4307 ''',
4308 const Visit(VisitKind.VISIT_SUPER_GETTER_FIELD_SET_IF_NULL,
4309 getter: 'getter(B#a)', setter: 'field(A#a)',
4310 rhs: '42')),
4311 const Test.clazz(
4312 '''
4313 class A {
4314 var a;
4315 }
4316 class B extends A {
4317 set a(_) {}
4318 }
4319
4320 class C extends B {
4321 m() => super.a ??= 42;
4322 }
4323 ''',
4324 const Visit(VisitKind.VISIT_SUPER_FIELD_SETTER_SET_IF_NULL,
4325 getter: 'field(A#a)', setter: 'setter(B#a)',
4326 rhs: '42')),
4327 // TODO(johnniwinther): Enable this when dart2js supports shadow setters.
4328 /*const Test.clazz(
4329 '''
4330 class A {
4331 var a;
4332 }
4333 class B extends A {
4334 final a = 0;
4335 }
4336
4337 class C extends B {
4338 m() => super.a ??= 42;
4339 }
4340 ''',
4341 const Visit(VisitKind.VISIT_SUPER_FIELD_FIELD_SET_IF_NULL,
4342 getter: 'field(B#a)', setter: 'field(A#a)',
4343 rhs: '42')),*/
4344 const Test.clazz(
4345 '''
4346 class B {
4347 a() {}
4348 }
4349 class C extends B {
4350 m() => super.a ??= 42;
4351 }
4352 ''',
4353 const Visit(VisitKind.VISIT_SUPER_METHOD_SET_IF_NULL,
4354 element: 'function(B#a)',
4355 rhs: '42')),
4356 const Test.clazz(
4357 '''
4358 class B {
4359 }
4360 class C extends B {
4361 m() => super.a ??= 42;
4362 }
4363 ''',
4364 const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SET_IF_NULL,
4365 name: 'a', rhs: '42')),
4366 const Test.clazz(
4367 '''
4368 class B {
4369 set a(_) {}
4370 }
4371 class C extends B {
4372 m() => super.a ??= 42;
4373 }
4374 ''',
4375 const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_GETTER_SET_IF_NULL,
4376 setter: 'setter(B#a)', rhs: '42')),
4377 const Test.clazz(
4378 '''
4379 class B {
4380 get a => 42;
4381 }
4382 class C extends B {
4383 m() => super.a ??= 42;
4384 }
4385 ''',
4386 const Visit(VisitKind.VISIT_UNRESOLVED_SUPER_SETTER_SET_IF_NULL,
4387 getter: 'getter(B#a)', rhs: '42')),
4388
4389 const Test.clazz(
4390 '''
4391 class C {
4392 static set a(var value) { }
4393 m() => a ??= 42;
4394 }
4395 ''',
4396 const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_GETTER_SET_IF_NULL,
4397 setter: 'setter(C#a)', rhs: '42')),
4398
4399 const Test.clazz(
4400 '''
4401 class C {
4402 static get a => 42;
4403 m() => C.a ??= 42;
4404 }
4405 ''',
4406 const Visit(VisitKind.VISIT_UNRESOLVED_STATIC_SETTER_SET_IF_NULL,
4407 getter: 'getter(C#a)', rhs: '42')),
4408
4409 const Test.clazz(
4410 '''
4411 class C {
4412 static final a = 42;
4413 m() => C.a ??= 42;
4414 }
4415 ''',
4416 const Visit(VisitKind.VISIT_STATIC_FINAL_FIELD_SET_IF_NULL,
4417 element: 'field(C#a)', rhs: '42')),
4418
4419 const Test(
4420 '''
4421 class C {
4422 static a(var value) { }
4423 }
4424 m() => C.a ??= 42;
4425 ''',
4426 const Visit(VisitKind.VISIT_STATIC_METHOD_SET_IF_NULL,
4427 element: 'function(C#a)', rhs: '42')),
4428
4429 const Test(
4430 '''
4431 set a(var value) { }
4432 m() => a ??= 42;
4433 ''',
4434 const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_GETTER_SET_IF_NULL,
4435 setter: 'setter(a)', rhs: '42')),
4436
4437 const Test(
4438 '''
4439 get a => 42;
4440 m() => a ??= 42;
4441 ''',
4442 const Visit(VisitKind.VISIT_UNRESOLVED_TOP_LEVEL_SETTER_SET_IF_NULL,
4443 getter: 'getter(a)', rhs: '42')),
4444
4445 const Test(
4446 '''
4447 a(var value) { }
4448 m() => a ??= 42;
4449 ''',
4450 const Visit(VisitKind.VISIT_TOP_LEVEL_METHOD_SET_IF_NULL,
4451 element: 'function(a)', rhs: '42')),
4452
4453 const Test(
4454 '''
4455 final a = 42;
4456 m() => a ??= 42;
4457 ''',
4458 const Visit(VisitKind.VISIT_TOP_LEVEL_FINAL_FIELD_SET_IF_NULL,
4459 element: 'field(a)', rhs: '42')),
4460
4461 const Test(
4462 '''
4463 m() => unresolved ??= 42;
4464 ''',
4465 const Visit(VisitKind.VISIT_UNRESOLVED_SET_IF_NULL,
4466 name: 'unresolved', rhs: '42')),
4467 ],
3968 }; 4468 };
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/semantic_visitor_test.dart ('k') | tests/compiler/dart2js/semantic_visitor_test_send_visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698