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 |