| 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 /// General type checking tests | 5 /// General type checking tests |
| 6 library dev_compiler.test.checker_test; | 6 library dev_compiler.test.checker_test; |
| 7 | 7 |
| 8 import 'package:test/test.dart'; | 8 import 'package:test/test.dart'; |
| 9 | 9 |
| 10 import '../testing.dart'; | 10 import '../testing.dart'; |
| (...skipping 1328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1339 | 1339 |
| 1340 testChecker('super constructor', { | 1340 testChecker('super constructor', { |
| 1341 '/main.dart': ''' | 1341 '/main.dart': ''' |
| 1342 class A { A(A x) {} } | 1342 class A { A(A x) {} } |
| 1343 class B extends A { | 1343 class B extends A { |
| 1344 B() : super(/*severe:StaticTypeError*/3); | 1344 B() : super(/*severe:StaticTypeError*/3); |
| 1345 } | 1345 } |
| 1346 ''' | 1346 ''' |
| 1347 }); | 1347 }); |
| 1348 | 1348 |
| 1349 testChecker( | 1349 testChecker('field/field override', { |
| 1350 'field/field override', | 1350 '/main.dart': ''' |
| 1351 { | |
| 1352 '/main.dart': ''' | |
| 1353 class A {} | 1351 class A {} |
| 1354 class B extends A {} | 1352 class B extends A {} |
| 1355 class C extends B {} | 1353 class C extends B {} |
| 1356 | 1354 |
| 1357 class Base { | 1355 class Base { |
| 1358 B f1; | 1356 B f1; |
| 1359 B f2; | 1357 B f2; |
| 1360 B f3; | 1358 B f3; |
| 1361 B f4; | 1359 B f4; |
| 1362 } | 1360 } |
| 1363 | 1361 |
| 1364 class Child extends Base { | 1362 class Child extends Base { |
| 1365 /*severe:InvalidMethodOverride*/A f1; // invalid for getter | 1363 /*severe:InvalidMethodOverride*/A f1; // invalid for getter |
| 1366 /*severe:InvalidMethodOverride*/C f2; // invalid for setter | 1364 /*severe:InvalidMethodOverride*/C f2; // invalid for setter |
| 1367 var f3; | 1365 var f3; |
| 1368 /*severe:InvalidMethodOverride,severe:InvalidMethodOverride*/dynamic
f4; | 1366 /*severe:InvalidMethodOverride,severe:InvalidMethodOverride*/dynamic
f4; |
| 1369 } | 1367 } |
| 1370 ''' | 1368 ''' |
| 1371 }, | 1369 }); |
| 1372 inferFromOverrides: true); | |
| 1373 | 1370 |
| 1374 testChecker( | 1371 testChecker('getter/getter override', { |
| 1375 'getter/getter override', | 1372 '/main.dart': ''' |
| 1376 { | |
| 1377 '/main.dart': ''' | |
| 1378 class A {} | 1373 class A {} |
| 1379 class B extends A {} | 1374 class B extends A {} |
| 1380 class C extends B {} | 1375 class C extends B {} |
| 1381 | 1376 |
| 1382 abstract class Base { | 1377 abstract class Base { |
| 1383 B get f1; | 1378 B get f1; |
| 1384 B get f2; | 1379 B get f2; |
| 1385 B get f3; | 1380 B get f3; |
| 1386 B get f4; | 1381 B get f4; |
| 1387 } | 1382 } |
| 1388 | 1383 |
| 1389 class Child extends Base { | 1384 class Child extends Base { |
| 1390 /*severe:InvalidMethodOverride*/A get f1 => null; | 1385 /*severe:InvalidMethodOverride*/A get f1 => null; |
| 1391 C get f2 => null; | 1386 C get f2 => null; |
| 1392 get f3 => null; | 1387 get f3 => null; |
| 1393 /*severe:InvalidMethodOverride*/dynamic get f4 => null; | 1388 /*severe:InvalidMethodOverride*/dynamic get f4 => null; |
| 1394 } | 1389 } |
| 1395 ''' | 1390 ''' |
| 1396 }, | 1391 }); |
| 1397 inferFromOverrides: true); | |
| 1398 | 1392 |
| 1399 testChecker( | 1393 testChecker('field/getter override', { |
| 1400 'field/getter override', | 1394 '/main.dart': ''' |
| 1401 { | |
| 1402 '/main.dart': ''' | |
| 1403 class A {} | 1395 class A {} |
| 1404 class B extends A {} | 1396 class B extends A {} |
| 1405 class C extends B {} | 1397 class C extends B {} |
| 1406 | 1398 |
| 1407 abstract class Base { | 1399 abstract class Base { |
| 1408 B f1; | 1400 B f1; |
| 1409 B f2; | 1401 B f2; |
| 1410 B f3; | 1402 B f3; |
| 1411 B f4; | 1403 B f4; |
| 1412 } | 1404 } |
| 1413 | 1405 |
| 1414 class Child extends Base { | 1406 class Child extends Base { |
| 1415 /*severe:InvalidMethodOverride*/A get f1 => null; | 1407 /*severe:InvalidMethodOverride*/A get f1 => null; |
| 1416 C get f2 => null; | 1408 C get f2 => null; |
| 1417 get f3 => null; | 1409 get f3 => null; |
| 1418 /*severe:InvalidMethodOverride*/dynamic get f4 => null; | 1410 /*severe:InvalidMethodOverride*/dynamic get f4 => null; |
| 1419 } | 1411 } |
| 1420 ''' | 1412 ''' |
| 1421 }, | 1413 }); |
| 1422 inferFromOverrides: true); | |
| 1423 | 1414 |
| 1424 testChecker('setter/setter override', { | 1415 testChecker('setter/setter override', { |
| 1425 '/main.dart': ''' | 1416 '/main.dart': ''' |
| 1426 class A {} | 1417 class A {} |
| 1427 class B extends A {} | 1418 class B extends A {} |
| 1428 class C extends B {} | 1419 class C extends B {} |
| 1429 | 1420 |
| 1430 abstract class Base { | 1421 abstract class Base { |
| 1431 void set f1(B value); | 1422 void set f1(B value); |
| 1432 void set f2(B value); | 1423 void set f2(B value); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1468 | 1459 |
| 1469 void set f1(A value) {} | 1460 void set f1(A value) {} |
| 1470 /*severe:InvalidMethodOverride*/void set f2(C value) {} | 1461 /*severe:InvalidMethodOverride*/void set f2(C value) {} |
| 1471 void set f3(value) {} | 1462 void set f3(value) {} |
| 1472 /*severe:InvalidMethodOverride*/void set f4(dynamic value) {} | 1463 /*severe:InvalidMethodOverride*/void set f4(dynamic value) {} |
| 1473 set f5(B value) {} | 1464 set f5(B value) {} |
| 1474 } | 1465 } |
| 1475 ''' | 1466 ''' |
| 1476 }); | 1467 }); |
| 1477 | 1468 |
| 1478 testChecker( | 1469 testChecker('method override', { |
| 1479 'method override', | 1470 '/main.dart': ''' |
| 1480 { | |
| 1481 '/main.dart': ''' | |
| 1482 class A {} | 1471 class A {} |
| 1483 class B extends A {} | 1472 class B extends A {} |
| 1484 class C extends B {} | 1473 class C extends B {} |
| 1485 | 1474 |
| 1486 class Base { | 1475 class Base { |
| 1487 B m1(B a); | 1476 B m1(B a); |
| 1488 B m2(B a); | 1477 B m2(B a); |
| 1489 B m3(B a); | 1478 B m3(B a); |
| 1490 B m4(B a); | 1479 B m4(B a); |
| 1491 B m5(B a); | 1480 B m5(B a); |
| 1492 B m6(B a); | 1481 B m6(B a); |
| 1493 } | 1482 } |
| 1494 | 1483 |
| 1495 class Child extends Base { | 1484 class Child extends Base { |
| 1496 /*severe:InvalidMethodOverride*/A m1(A value) {} | 1485 /*severe:InvalidMethodOverride*/A m1(A value) {} |
| 1497 /*severe:InvalidMethodOverride*/C m2(C value) {} | 1486 /*severe:InvalidMethodOverride*/C m2(C value) {} |
| 1498 /*severe:InvalidMethodOverride*/A m3(C value) {} | 1487 /*severe:InvalidMethodOverride*/A m3(C value) {} |
| 1499 C m4(A value) {} | 1488 C m4(A value) {} |
| 1500 m5(value) {} | 1489 m5(value) {} |
| 1501 /*severe:InvalidMethodOverride*/dynamic m6(dynamic value) {} | 1490 /*severe:InvalidMethodOverride*/dynamic m6(dynamic value) {} |
| 1502 } | 1491 } |
| 1503 ''' | 1492 ''' |
| 1504 }, | 1493 }); |
| 1505 inferFromOverrides: true); | |
| 1506 | 1494 |
| 1507 testChecker('unary operators', { | 1495 testChecker('unary operators', { |
| 1508 '/main.dart': ''' | 1496 '/main.dart': ''' |
| 1509 class A { | 1497 class A { |
| 1510 A operator ~() {} | 1498 A operator ~() {} |
| 1511 A operator +(int x) {} | 1499 A operator +(int x) {} |
| 1512 A operator -(int x) {} | 1500 A operator -(int x) {} |
| 1513 A operator -() {} | 1501 A operator -() {} |
| 1514 } | 1502 } |
| 1515 | 1503 |
| (...skipping 1048 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2564 | 2552 |
| 2565 baz1() sync* { yield* (/*info:DynamicCast*/x); } | 2553 baz1() sync* { yield* (/*info:DynamicCast*/x); } |
| 2566 Iterable baz2() sync* { yield* (/*info:DynamicCast*/x); } | 2554 Iterable baz2() sync* { yield* (/*info:DynamicCast*/x); } |
| 2567 Iterable<int> baz3() sync* { yield* (/*warning:DownCastComposite*/x); } | 2555 Iterable<int> baz3() sync* { yield* (/*warning:DownCastComposite*/x); } |
| 2568 Iterable<int> baz4() sync* { yield* new Iterable<int>(); } | 2556 Iterable<int> baz4() sync* { yield* new Iterable<int>(); } |
| 2569 Iterable<int> baz5() sync* { yield* (/*info:InferredTypeAllocation*/new
Iterable()); } | 2557 Iterable<int> baz5() sync* { yield* (/*info:InferredTypeAllocation*/new
Iterable()); } |
| 2570 ''' | 2558 ''' |
| 2571 }); | 2559 }); |
| 2572 }); | 2560 }); |
| 2573 } | 2561 } |
| OLD | NEW |