| OLD | NEW |
| 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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 ''' | 102 ''' |
| 103 class C { | 103 class C { |
| 104 static var o; | 104 static var o; |
| 105 } | 105 } |
| 106 ''', | 106 ''', |
| 107 'm() => p.C.o;', | 107 'm() => p.C.o;', |
| 108 const Visit(VisitKind.VISIT_STATIC_FIELD_GET, | 108 const Visit(VisitKind.VISIT_STATIC_FIELD_GET, |
| 109 element: 'field(C#o)')), | 109 element: 'field(C#o)')), |
| 110 const Test( | 110 const Test( |
| 111 ''' | 111 ''' |
| 112 class C { |
| 113 var o; |
| 114 } |
| 115 m() => C.o; |
| 116 ''', |
| 117 const Visit(VisitKind.VISIT_UNRESOLVED_GET, |
| 118 name: 'o')), |
| 119 const Test( |
| 120 ''' |
| 121 class C { |
| 122 C.o(); |
| 123 } |
| 124 m() => C.o; |
| 125 ''', |
| 126 const Visit(VisitKind.VISIT_UNRESOLVED_GET, |
| 127 name: 'o')), |
| 128 const Test( |
| 129 ''' |
| 130 class C {} |
| 131 m() => C.this; |
| 132 ''', |
| 133 null), |
| 134 const Test( |
| 135 ''' |
| 112 class C { static var o; } | 136 class C { static var o; } |
| 113 m() { C.o = 42; } | 137 m() { C.o = 42; } |
| 114 ''', | 138 ''', |
| 115 const Visit(VisitKind.VISIT_STATIC_FIELD_SET, | 139 const Visit(VisitKind.VISIT_STATIC_FIELD_SET, |
| 116 element: 'field(C#o)', | 140 element: 'field(C#o)', |
| 117 rhs: '42')), | 141 rhs: '42')), |
| 118 const Test.clazz( | 142 const Test.clazz( |
| 119 ''' | 143 ''' |
| 120 class C { | 144 class C { |
| 121 static var o; | 145 static var o; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 const Test.prefix( | 200 const Test.prefix( |
| 177 ''' | 201 ''' |
| 178 class C { | 202 class C { |
| 179 static var o; | 203 static var o; |
| 180 } | 204 } |
| 181 ''', | 205 ''', |
| 182 'm() { p.C.o(null, 42); }', | 206 'm() { p.C.o(null, 42); }', |
| 183 const Visit(VisitKind.VISIT_STATIC_FIELD_INVOKE, | 207 const Visit(VisitKind.VISIT_STATIC_FIELD_INVOKE, |
| 184 element: 'field(C#o)', | 208 element: 'field(C#o)', |
| 185 arguments: '(null,42)')), | 209 arguments: '(null,42)')), |
| 210 const Test( |
| 211 ''' |
| 212 class C {} |
| 213 m() => C.this(null, 42); |
| 214 ''', |
| 215 const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE, |
| 216 name: 'this', arguments: '(null,42)')), |
| 186 // TODO(johnniwinther): Expect [VISIT_FINAL_STATIC_FIELD_SET] instead. | 217 // TODO(johnniwinther): Expect [VISIT_FINAL_STATIC_FIELD_SET] instead. |
| 187 const Test( | 218 const Test( |
| 188 ''' | 219 ''' |
| 189 class C { static final o = 0; } | 220 class C { static final o = 0; } |
| 190 m() { C.o = 42; } | 221 m() { C.o = 42; } |
| 191 ''', | 222 ''', |
| 192 const Visit(VisitKind.VISIT_UNRESOLVED_SET, | 223 const Visit(VisitKind.VISIT_UNRESOLVED_SET, |
| 193 name: 'o', | 224 name: 'o', |
| 194 rhs: '42')), | 225 rhs: '42')), |
| 195 const Test.clazz( | 226 const Test.clazz( |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 const Test.prefix( | 362 const Test.prefix( |
| 332 ''' | 363 ''' |
| 333 class C { | 364 class C { |
| 334 static get o => 42; | 365 static get o => 42; |
| 335 } | 366 } |
| 336 ''', | 367 ''', |
| 337 'm() { p.C.o = 42; }', | 368 'm() { p.C.o = 42; }', |
| 338 const Visit(VisitKind.VISIT_UNRESOLVED_SET, | 369 const Visit(VisitKind.VISIT_UNRESOLVED_SET, |
| 339 name: 'o', | 370 name: 'o', |
| 340 rhs: '42')), | 371 rhs: '42')), |
| 341 // TODO(johnniwinther): Expected [VISIT_STATIC_SETTER_GET] instead. | |
| 342 const Test( | 372 const Test( |
| 343 ''' | 373 ''' |
| 344 class C { | 374 class C { |
| 345 static set o(_) {} | 375 static set o(_) {} |
| 346 } | 376 } |
| 347 m() => C.o; | 377 m() => C.o; |
| 348 ''', | 378 ''', |
| 349 const Visit(VisitKind.VISIT_UNRESOLVED_GET, | 379 const Visit(VisitKind.VISIT_STATIC_SETTER_GET, |
| 350 name: 'o')), | 380 element: 'setter(C#o)')), |
| 351 const Test.clazz( | 381 const Test.clazz( |
| 352 ''' | 382 ''' |
| 353 class C { | 383 class C { |
| 354 static set o(_) {} | 384 static set o(_) {} |
| 355 m() => o; | 385 m() => o; |
| 356 } | 386 } |
| 357 ''', | 387 ''', |
| 358 const Visit(VisitKind.VISIT_STATIC_SETTER_GET, | 388 const Visit(VisitKind.VISIT_STATIC_SETTER_GET, |
| 359 element: 'setter(C#o)')), | 389 element: 'setter(C#o)')), |
| 360 | 390 |
| 361 const Test.clazz( | 391 const Test.clazz( |
| 362 ''' | 392 ''' |
| 363 class C { | 393 class C { |
| 364 static set o(_) {} | 394 static set o(_) {} |
| 365 m() => C.o; | 395 m() => C.o; |
| 366 } | 396 } |
| 367 ''', | 397 ''', |
| 368 const Visit(VisitKind.VISIT_UNRESOLVED_GET, | 398 const Visit(VisitKind.VISIT_STATIC_SETTER_GET, |
| 369 name: 'o')), | 399 element: 'setter(C#o)')), |
| 370 const Test.prefix( | 400 const Test.prefix( |
| 371 ''' | 401 ''' |
| 372 class C { | 402 class C { |
| 373 static set o(_) {} | 403 static set o(_) {} |
| 374 } | 404 } |
| 375 ''', | 405 ''', |
| 376 'm() => p.C.o;', | 406 'm() => p.C.o;', |
| 377 const Visit(VisitKind.VISIT_UNRESOLVED_GET, | 407 const Visit(VisitKind.VISIT_STATIC_SETTER_GET, |
| 378 name: 'o')), | 408 element: 'setter(C#o)')), |
| 379 const Test( | 409 const Test( |
| 380 ''' | 410 ''' |
| 381 class C { static set o(_) {} } | 411 class C { static set o(_) {} } |
| 382 m() { C.o = 42; } | 412 m() { C.o = 42; } |
| 383 ''', | 413 ''', |
| 384 const Visit(VisitKind.VISIT_STATIC_SETTER_SET, | 414 const Visit(VisitKind.VISIT_STATIC_SETTER_SET, |
| 385 element: 'setter(C#o)', | 415 element: 'setter(C#o)', |
| 386 rhs: '42')), | 416 rhs: '42')), |
| 387 const Test.clazz( | 417 const Test.clazz( |
| 388 ''' | 418 ''' |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 const Test.prefix( | 475 const Test.prefix( |
| 446 ''' | 476 ''' |
| 447 class C { | 477 class C { |
| 448 static get o => null; | 478 static get o => null; |
| 449 } | 479 } |
| 450 ''', | 480 ''', |
| 451 'm() { p.C.o(null, 42); }', | 481 'm() { p.C.o(null, 42); }', |
| 452 const Visit(VisitKind.VISIT_STATIC_GETTER_INVOKE, | 482 const Visit(VisitKind.VISIT_STATIC_GETTER_INVOKE, |
| 453 element: 'getter(C#o)', | 483 element: 'getter(C#o)', |
| 454 arguments: '(null,42)')), | 484 arguments: '(null,42)')), |
| 455 // TODO(johnniwinther): Expect [VISIT_STATIC_SETTER_INVOKE] instead. | |
| 456 const Test( | 485 const Test( |
| 457 ''' | 486 ''' |
| 458 class C { static set o(_) {} } | 487 class C { static set o(_) {} } |
| 459 m() => C.o(null, 42); | 488 m() => C.o(null, 42); |
| 460 ''', | 489 ''', |
| 461 const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE, | 490 const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE, |
| 462 name: 'o', | 491 element: 'setter(C#o)', |
| 463 arguments: '(null,42)')), | 492 arguments: '(null,42)')), |
| 464 const Test.clazz( | 493 const Test.clazz( |
| 465 ''' | 494 ''' |
| 466 class C { | 495 class C { |
| 467 static set o(_) {} | 496 static set o(_) {} |
| 468 m() { o(null, 42); } | 497 m() { o(null, 42); } |
| 469 } | 498 } |
| 470 ''', | 499 ''', |
| 471 const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE, | 500 const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE, |
| 472 element: 'setter(C#o)', | 501 element: 'setter(C#o)', |
| 473 arguments: '(null,42)')), | 502 arguments: '(null,42)')), |
| 474 const Test.clazz( | 503 const Test.clazz( |
| 475 ''' | 504 ''' |
| 476 class C { | 505 class C { |
| 477 static set o(_) {} | 506 static set o(_) {} |
| 478 m() { C.o(null, 42); } | 507 m() { C.o(null, 42); } |
| 479 } | 508 } |
| 480 ''', | 509 ''', |
| 481 const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE, | 510 const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE, |
| 482 name: 'o', | 511 element: 'setter(C#o)', |
| 483 arguments: '(null,42)')), | 512 arguments: '(null,42)')), |
| 484 const Test.prefix( | 513 const Test.prefix( |
| 485 ''' | 514 ''' |
| 486 class C { | 515 class C { |
| 487 static set o(_) {} | 516 static set o(_) {} |
| 488 } | 517 } |
| 489 ''', | 518 ''', |
| 490 'm() { p.C.o(null, 42); }', | 519 'm() { p.C.o(null, 42); }', |
| 491 const Visit(VisitKind.VISIT_UNRESOLVED_INVOKE, | 520 const Visit(VisitKind.VISIT_STATIC_SETTER_INVOKE, |
| 492 name: 'o', | 521 element: 'setter(C#o)', |
| 493 arguments: '(null,42)')), | 522 arguments: '(null,42)')), |
| 494 ], | 523 ], |
| 495 'Static functions': const [ | 524 'Static functions': const [ |
| 496 // Static functions | 525 // Static functions |
| 497 const Test( | 526 const Test( |
| 498 ''' | 527 ''' |
| 499 class C { static o(a, b) {} } | 528 class C { static o(a, b) {} } |
| 500 m() => C.o; | 529 m() => C.o; |
| 501 ''', | 530 ''', |
| 502 const Visit(VisitKind.VISIT_STATIC_FUNCTION_GET, | 531 const Visit(VisitKind.VISIT_STATIC_FUNCTION_GET, |
| (...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1236 ''' | 1265 ''' |
| 1237 class C {} | 1266 class C {} |
| 1238 m() => C--; | 1267 m() => C--; |
| 1239 ''', | 1268 ''', |
| 1240 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_POSTFIX, | 1269 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_POSTFIX, |
| 1241 constant: 'C', | 1270 constant: 'C', |
| 1242 operator: '--')), | 1271 operator: '--')), |
| 1243 const Test( | 1272 const Test( |
| 1244 ''' | 1273 ''' |
| 1245 class C {} | 1274 class C {} |
| 1246 m() => C; | 1275 m() => (C).hashCode; |
| 1247 ''', | 1276 ''', |
| 1248 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_GET, | 1277 const [ |
| 1249 constant: 'C')), | 1278 const Visit(VisitKind.VISIT_DYNAMIC_PROPERTY_GET, |
| 1279 receiver: '(C)', name: 'hashCode'), |
| 1280 const Visit(VisitKind.VISIT_CLASS_TYPE_LITERAL_GET, |
| 1281 constant: 'C'), |
| 1282 ]), |
| 1250 ], | 1283 ], |
| 1251 'Typedef type literals': const [ | 1284 'Typedef type literals': const [ |
| 1252 // Typedef type literals | 1285 // Typedef type literals |
| 1253 const Test( | 1286 const Test( |
| 1254 ''' | 1287 ''' |
| 1255 typedef F(); | 1288 typedef F(); |
| 1256 m() => F; | 1289 m() => F; |
| 1257 ''', | 1290 ''', |
| 1258 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_GET, | 1291 const Visit(VisitKind.VISIT_TYPEDEF_TYPE_LITERAL_GET, |
| 1259 constant: 'F')), | 1292 constant: 'F')), |
| (...skipping 2152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3412 const Visit( | 3445 const Visit( |
| 3413 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_GET, | 3446 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_GET, |
| 3414 receiver: 'a', | 3447 receiver: 'a', |
| 3415 name: 'b'), | 3448 name: 'b'), |
| 3416 const Visit( | 3449 const Visit( |
| 3417 VisitKind.VISIT_PARAMETER_GET, | 3450 VisitKind.VISIT_PARAMETER_GET, |
| 3418 element: 'parameter(m#a)'), | 3451 element: 'parameter(m#a)'), |
| 3419 ]), | 3452 ]), |
| 3420 const Test( | 3453 const Test( |
| 3421 ''' | 3454 ''' |
| 3455 class C { |
| 3456 static var b; |
| 3457 } |
| 3458 m(a) => C?.b; |
| 3459 ''', |
| 3460 const [ |
| 3461 const Visit( |
| 3462 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_GET, |
| 3463 receiver: 'C', |
| 3464 name: 'b'), |
| 3465 const Visit( |
| 3466 VisitKind.VISIT_CLASS_TYPE_LITERAL_GET, |
| 3467 constant: 'C'), |
| 3468 ]), |
| 3469 const Test( |
| 3470 ''' |
| 3422 m(a) => a?.b = 42; | 3471 m(a) => a?.b = 42; |
| 3423 ''', | 3472 ''', |
| 3424 const [ | 3473 const [ |
| 3425 const Visit( | 3474 const Visit( |
| 3426 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_SET, | 3475 VisitKind.VISIT_IF_NOT_NULL_DYNAMIC_PROPERTY_SET, |
| 3427 receiver: 'a', | 3476 receiver: 'a', |
| 3428 name: 'b', | 3477 name: 'b', |
| 3429 rhs: '42'), | 3478 rhs: '42'), |
| 3430 const Visit( | 3479 const Visit( |
| 3431 VisitKind.VISIT_PARAMETER_GET, | 3480 VisitKind.VISIT_PARAMETER_GET, |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3509 ''' | 3558 ''' |
| 3510 m(a) => a ??= 42; | 3559 m(a) => a ??= 42; |
| 3511 ''', | 3560 ''', |
| 3512 const Visit( | 3561 const Visit( |
| 3513 VisitKind.VISIT_PARAMETER_COMPOUND, | 3562 VisitKind.VISIT_PARAMETER_COMPOUND, |
| 3514 element: 'parameter(m#a)', | 3563 element: 'parameter(m#a)', |
| 3515 operator: '??=', | 3564 operator: '??=', |
| 3516 rhs: '42')), | 3565 rhs: '42')), |
| 3517 ], | 3566 ], |
| 3518 }; | 3567 }; |
| OLD | NEW |