OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 analyzer.test.generated.hint_code_test; | 5 library analyzer.test.generated.hint_code_test; |
6 | 6 |
7 import 'package:analyzer/error/error.dart'; | 7 import 'package:analyzer/error/error.dart'; |
8 import 'package:analyzer/src/error/codes.dart'; | 8 import 'package:analyzer/src/error/codes.dart'; |
9 import 'package:analyzer/src/generated/engine.dart'; | 9 import 'package:analyzer/src/generated/engine.dart'; |
10 import 'package:analyzer/src/generated/parser.dart'; | 10 import 'package:analyzer/src/generated/parser.dart'; |
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
768 m() {} | 768 m() {} |
769 n() {m();} | 769 n() {m();} |
770 }'''); | 770 }'''); |
771 await computeAnalysisResult(source); | 771 await computeAnalysisResult(source); |
772 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); | 772 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); |
773 verify([source]); | 773 verify([source]); |
774 } | 774 } |
775 | 775 |
776 test_deprecatedAnnotationUse_export() async { | 776 test_deprecatedAnnotationUse_export() async { |
777 Source source = addSource("export 'deprecated_library.dart';"); | 777 Source source = addSource("export 'deprecated_library.dart';"); |
778 addNamedSource( | 778 addNamedSource("/deprecated_library.dart", r''' |
779 "/deprecated_library.dart", | |
780 r''' | |
781 @deprecated | 779 @deprecated |
782 library deprecated_library; | 780 library deprecated_library; |
783 class A {}'''); | 781 class A {}'''); |
784 await computeAnalysisResult(source); | 782 await computeAnalysisResult(source); |
785 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); | 783 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); |
786 verify([source]); | 784 verify([source]); |
787 } | 785 } |
788 | 786 |
789 test_deprecatedAnnotationUse_field() async { | 787 test_deprecatedAnnotationUse_field() async { |
790 Source source = addSource(r''' | 788 Source source = addSource(r''' |
(...skipping 20 matching lines...) Expand all Loading... |
811 }'''); | 809 }'''); |
812 await computeAnalysisResult(source); | 810 await computeAnalysisResult(source); |
813 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); | 811 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); |
814 verify([source]); | 812 verify([source]); |
815 } | 813 } |
816 | 814 |
817 test_deprecatedAnnotationUse_import() async { | 815 test_deprecatedAnnotationUse_import() async { |
818 Source source = addSource(r''' | 816 Source source = addSource(r''' |
819 import 'deprecated_library.dart'; | 817 import 'deprecated_library.dart'; |
820 f(A a) {}'''); | 818 f(A a) {}'''); |
821 addNamedSource( | 819 addNamedSource("/deprecated_library.dart", r''' |
822 "/deprecated_library.dart", | |
823 r''' | |
824 @deprecated | 820 @deprecated |
825 library deprecated_library; | 821 library deprecated_library; |
826 class A {}'''); | 822 class A {}'''); |
827 await computeAnalysisResult(source); | 823 await computeAnalysisResult(source); |
828 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); | 824 assertErrors(source, [HintCode.DEPRECATED_MEMBER_USE]); |
829 verify([source]); | 825 verify([source]); |
830 } | 826 } |
831 | 827 |
832 test_deprecatedAnnotationUse_indexExpression() async { | 828 test_deprecatedAnnotationUse_indexExpression() async { |
833 Source source = addSource(r''' | 829 Source source = addSource(r''' |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); | 1047 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); |
1052 verify([source]); | 1048 verify([source]); |
1053 } | 1049 } |
1054 | 1050 |
1055 test_duplicateImport() async { | 1051 test_duplicateImport() async { |
1056 Source source = addSource(r''' | 1052 Source source = addSource(r''' |
1057 library L; | 1053 library L; |
1058 import 'lib1.dart'; | 1054 import 'lib1.dart'; |
1059 import 'lib1.dart'; | 1055 import 'lib1.dart'; |
1060 A a;'''); | 1056 A a;'''); |
1061 addNamedSource( | 1057 addNamedSource("/lib1.dart", r''' |
1062 "/lib1.dart", | |
1063 r''' | |
1064 library lib1; | 1058 library lib1; |
1065 class A {}'''); | 1059 class A {}'''); |
1066 await computeAnalysisResult(source); | 1060 await computeAnalysisResult(source); |
1067 assertErrors(source, [HintCode.DUPLICATE_IMPORT]); | 1061 assertErrors(source, [HintCode.DUPLICATE_IMPORT]); |
1068 verify([source]); | 1062 verify([source]); |
1069 } | 1063 } |
1070 | 1064 |
1071 test_duplicateImport2() async { | 1065 test_duplicateImport2() async { |
1072 Source source = addSource(r''' | 1066 Source source = addSource(r''' |
1073 library L; | 1067 library L; |
1074 import 'lib1.dart'; | 1068 import 'lib1.dart'; |
1075 import 'lib1.dart'; | 1069 import 'lib1.dart'; |
1076 import 'lib1.dart'; | 1070 import 'lib1.dart'; |
1077 A a;'''); | 1071 A a;'''); |
1078 addNamedSource( | 1072 addNamedSource("/lib1.dart", r''' |
1079 "/lib1.dart", | |
1080 r''' | |
1081 library lib1; | 1073 library lib1; |
1082 class A {}'''); | 1074 class A {}'''); |
1083 await computeAnalysisResult(source); | 1075 await computeAnalysisResult(source); |
1084 assertErrors( | 1076 assertErrors( |
1085 source, [HintCode.DUPLICATE_IMPORT, HintCode.DUPLICATE_IMPORT]); | 1077 source, [HintCode.DUPLICATE_IMPORT, HintCode.DUPLICATE_IMPORT]); |
1086 verify([source]); | 1078 verify([source]); |
1087 } | 1079 } |
1088 | 1080 |
1089 test_duplicateImport3() async { | 1081 test_duplicateImport3() async { |
1090 Source source = addSource(r''' | 1082 Source source = addSource(r''' |
1091 library L; | 1083 library L; |
1092 import 'lib1.dart' as M show A hide B; | 1084 import 'lib1.dart' as M show A hide B; |
1093 import 'lib1.dart' as M show A hide B; | 1085 import 'lib1.dart' as M show A hide B; |
1094 M.A a;'''); | 1086 M.A a;'''); |
1095 addNamedSource( | 1087 addNamedSource("/lib1.dart", r''' |
1096 "/lib1.dart", | |
1097 r''' | |
1098 library lib1; | 1088 library lib1; |
1099 class A {} | 1089 class A {} |
1100 class B {}'''); | 1090 class B {}'''); |
1101 await computeAnalysisResult(source); | 1091 await computeAnalysisResult(source); |
1102 assertErrors(source, [HintCode.DUPLICATE_IMPORT]); | 1092 assertErrors(source, [HintCode.DUPLICATE_IMPORT]); |
1103 verify([source]); | 1093 verify([source]); |
1104 } | 1094 } |
1105 | 1095 |
1106 test_factory__expr_return_null_OK() async { | 1096 test_factory__expr_return_null_OK() async { |
1107 Source source = addSource(r''' | 1097 Source source = addSource(r''' |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1375 @immutable | 1365 @immutable |
1376 void m() {} | 1366 void m() {} |
1377 } | 1367 } |
1378 '''); | 1368 '''); |
1379 await computeAnalysisResult(source); | 1369 await computeAnalysisResult(source); |
1380 assertErrors(source, [HintCode.INVALID_IMMUTABLE_ANNOTATION]); | 1370 assertErrors(source, [HintCode.INVALID_IMMUTABLE_ANNOTATION]); |
1381 verify([source]); | 1371 verify([source]); |
1382 } | 1372 } |
1383 | 1373 |
1384 test_invalidRequiredParam_on_named_parameter_with_default() async { | 1374 test_invalidRequiredParam_on_named_parameter_with_default() async { |
1385 Source source = addNamedSource( | 1375 Source source = addNamedSource('/lib1.dart', r''' |
1386 '/lib1.dart', | |
1387 r''' | |
1388 import 'package:meta/meta.dart'; | 1376 import 'package:meta/meta.dart'; |
1389 | 1377 |
1390 m({@required a = 1}) => null; | 1378 m({@required a = 1}) => null; |
1391 '''); | 1379 '''); |
1392 await computeAnalysisResult(source); | 1380 await computeAnalysisResult(source); |
1393 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); | 1381 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); |
1394 verify([source]); | 1382 verify([source]); |
1395 } | 1383 } |
1396 | 1384 |
1397 test_invalidRequiredParam_on_positional_parameter() async { | 1385 test_invalidRequiredParam_on_positional_parameter() async { |
1398 Source source = addNamedSource( | 1386 Source source = addNamedSource('/lib1.dart', r''' |
1399 '/lib1.dart', | |
1400 r''' | |
1401 import 'package:meta/meta.dart'; | 1387 import 'package:meta/meta.dart'; |
1402 | 1388 |
1403 m([@required a]) => null; | 1389 m([@required a]) => null; |
1404 '''); | 1390 '''); |
1405 await computeAnalysisResult(source); | 1391 await computeAnalysisResult(source); |
1406 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); | 1392 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); |
1407 verify([source]); | 1393 verify([source]); |
1408 } | 1394 } |
1409 | 1395 |
1410 test_invalidRequiredParam_on_positional_parameter_with_default() async { | 1396 test_invalidRequiredParam_on_positional_parameter_with_default() async { |
1411 Source source = addNamedSource( | 1397 Source source = addNamedSource('/lib1.dart', r''' |
1412 '/lib1.dart', | |
1413 r''' | |
1414 import 'package:meta/meta.dart'; | 1398 import 'package:meta/meta.dart'; |
1415 | 1399 |
1416 m([@required a = 1]) => null; | 1400 m([@required a = 1]) => null; |
1417 '''); | 1401 '''); |
1418 await computeAnalysisResult(source); | 1402 await computeAnalysisResult(source); |
1419 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); | 1403 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); |
1420 verify([source]); | 1404 verify([source]); |
1421 } | 1405 } |
1422 | 1406 |
1423 test_invalidRequiredParam_on_required_parameter() async { | 1407 test_invalidRequiredParam_on_required_parameter() async { |
1424 Source source = addNamedSource( | 1408 Source source = addNamedSource('/lib1.dart', r''' |
1425 '/lib1.dart', | |
1426 r''' | |
1427 import 'package:meta/meta.dart'; | 1409 import 'package:meta/meta.dart'; |
1428 | 1410 |
1429 m(@required a) => null; | 1411 m(@required a) => null; |
1430 '''); | 1412 '''); |
1431 await computeAnalysisResult(source); | 1413 await computeAnalysisResult(source); |
1432 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); | 1414 assertErrors(source, [HintCode.INVALID_REQUIRED_PARAM]); |
1433 verify([source]); | 1415 verify([source]); |
1434 } | 1416 } |
1435 | 1417 |
1436 test_invalidRequiredParam_valid() async { | 1418 test_invalidRequiredParam_valid() async { |
1437 Source source = addNamedSource( | 1419 Source source = addNamedSource('/lib1.dart', r''' |
1438 '/lib1.dart', | |
1439 r''' | |
1440 import 'package:meta/meta.dart'; | 1420 import 'package:meta/meta.dart'; |
1441 | 1421 |
1442 m1() => null; | 1422 m1() => null; |
1443 m2(a) => null; | 1423 m2(a) => null; |
1444 m3([a]) => null; | 1424 m3([a]) => null; |
1445 m4({a}) => null; | 1425 m4({a}) => null; |
1446 m5({@required a}) => null; | 1426 m5({@required a}) => null; |
1447 m6({a, @required b}) => null; | 1427 m6({a, @required b}) => null; |
1448 '''); | 1428 '''); |
1449 await computeAnalysisResult(source); | 1429 await computeAnalysisResult(source); |
1450 assertNoErrors(source); | 1430 assertNoErrors(source); |
1451 verify([source]); | 1431 verify([source]); |
1452 } | 1432 } |
1453 | 1433 |
1454 test_invalidUseOfProtectedMember_closure() async { | 1434 test_invalidUseOfProtectedMember_closure() async { |
1455 Source source = addNamedSource( | 1435 Source source = addNamedSource('/lib1.dart', r''' |
1456 '/lib1.dart', | |
1457 r''' | |
1458 import 'package:meta/meta.dart'; | 1436 import 'package:meta/meta.dart'; |
1459 | 1437 |
1460 class A { | 1438 class A { |
1461 @protected | 1439 @protected |
1462 int a() => 42; | 1440 int a() => 42; |
1463 } | 1441 } |
1464 '''); | 1442 '''); |
1465 Source source2 = addNamedSource( | 1443 Source source2 = addNamedSource('/lib2.dart', r''' |
1466 '/lib2.dart', | |
1467 r''' | |
1468 import 'lib1.dart'; | 1444 import 'lib1.dart'; |
1469 | 1445 |
1470 void main() { | 1446 void main() { |
1471 var leak = new A().a; | 1447 var leak = new A().a; |
1472 print(leak); | 1448 print(leak); |
1473 } | 1449 } |
1474 '''); | 1450 '''); |
1475 await computeAnalysisResult(source); | 1451 await computeAnalysisResult(source); |
1476 await computeAnalysisResult(source2); | 1452 await computeAnalysisResult(source2); |
1477 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); | 1453 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); |
1478 assertNoErrors(source); | 1454 assertNoErrors(source); |
1479 verify([source, source2]); | 1455 verify([source, source2]); |
1480 } | 1456 } |
1481 | 1457 |
1482 test_invalidUseOfProtectedMember_field() async { | 1458 test_invalidUseOfProtectedMember_field() async { |
1483 Source source = addNamedSource( | 1459 Source source = addNamedSource('/lib1.dart', r''' |
1484 '/lib1.dart', | |
1485 r''' | |
1486 import 'package:meta/meta.dart'; | 1460 import 'package:meta/meta.dart'; |
1487 class A { | 1461 class A { |
1488 @protected | 1462 @protected |
1489 int a; | 1463 int a; |
1490 } | 1464 } |
1491 '''); | 1465 '''); |
1492 Source source2 = addNamedSource( | 1466 Source source2 = addNamedSource('/lib2.dart', r''' |
1493 '/lib2.dart', | |
1494 r''' | |
1495 import 'lib1.dart'; | 1467 import 'lib1.dart'; |
1496 | 1468 |
1497 abstract class B { | 1469 abstract class B { |
1498 int b() => new A().a; | 1470 int b() => new A().a; |
1499 } | 1471 } |
1500 '''); | 1472 '''); |
1501 await computeAnalysisResult(source); | 1473 await computeAnalysisResult(source); |
1502 await computeAnalysisResult(source2); | 1474 await computeAnalysisResult(source2); |
1503 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); | 1475 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); |
1504 assertNoErrors(source); | 1476 assertNoErrors(source); |
1505 verify([source, source2]); | 1477 verify([source, source2]); |
1506 } | 1478 } |
1507 | 1479 |
1508 test_invalidUseOfProtectedMember_field_OK() async { | 1480 test_invalidUseOfProtectedMember_field_OK() async { |
1509 Source source = addSource(r''' | 1481 Source source = addSource(r''' |
1510 import 'package:meta/meta.dart'; | 1482 import 'package:meta/meta.dart'; |
1511 class A { | 1483 class A { |
1512 @protected | 1484 @protected |
1513 int a; | 1485 int a; |
1514 } | 1486 } |
1515 abstract class B implements A { | 1487 abstract class B implements A { |
1516 int b() => a; | 1488 int b() => a; |
1517 }'''); | 1489 }'''); |
1518 await computeAnalysisResult(source); | 1490 await computeAnalysisResult(source); |
1519 assertNoErrors(source); | 1491 assertNoErrors(source); |
1520 verify([source]); | 1492 verify([source]); |
1521 } | 1493 } |
1522 | 1494 |
1523 test_invalidUseOfProtectedMember_function() async { | 1495 test_invalidUseOfProtectedMember_function() async { |
1524 Source source = addNamedSource( | 1496 Source source = addNamedSource('/lib1.dart', r''' |
1525 '/lib1.dart', | |
1526 r''' | |
1527 import 'package:meta/meta.dart'; | 1497 import 'package:meta/meta.dart'; |
1528 class A { | 1498 class A { |
1529 @protected | 1499 @protected |
1530 void a(){ } | 1500 void a(){ } |
1531 } | 1501 } |
1532 '''); | 1502 '''); |
1533 Source source2 = addNamedSource( | 1503 Source source2 = addNamedSource('/lib2.dart', r''' |
1534 '/lib2.dart', | |
1535 r''' | |
1536 import 'lib1.dart'; | 1504 import 'lib1.dart'; |
1537 | 1505 |
1538 main() { | 1506 main() { |
1539 new A().a(); | 1507 new A().a(); |
1540 } | 1508 } |
1541 '''); | 1509 '''); |
1542 await computeAnalysisResult(source); | 1510 await computeAnalysisResult(source); |
1543 await computeAnalysisResult(source2); | 1511 await computeAnalysisResult(source2); |
1544 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); | 1512 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); |
1545 assertNoErrors(source); | 1513 assertNoErrors(source); |
(...skipping 25 matching lines...) Expand all Loading... |
1571 } | 1539 } |
1572 main() { | 1540 main() { |
1573 new A().a(); | 1541 new A().a(); |
1574 }'''); | 1542 }'''); |
1575 await computeAnalysisResult(source); | 1543 await computeAnalysisResult(source); |
1576 assertNoErrors(source); | 1544 assertNoErrors(source); |
1577 verify([source]); | 1545 verify([source]); |
1578 } | 1546 } |
1579 | 1547 |
1580 test_invalidUseOfProtectedMember_getter() async { | 1548 test_invalidUseOfProtectedMember_getter() async { |
1581 Source source = addNamedSource( | 1549 Source source = addNamedSource('/lib1.dart', r''' |
1582 '/lib1.dart', | |
1583 r''' | |
1584 import 'package:meta/meta.dart'; | 1550 import 'package:meta/meta.dart'; |
1585 class A { | 1551 class A { |
1586 @protected | 1552 @protected |
1587 int get a => 42; | 1553 int get a => 42; |
1588 } | 1554 } |
1589 '''); | 1555 '''); |
1590 Source source2 = addNamedSource( | 1556 Source source2 = addNamedSource('/lib2.dart', r''' |
1591 '/lib2.dart', | |
1592 r''' | |
1593 import 'lib1.dart'; | 1557 import 'lib1.dart'; |
1594 | 1558 |
1595 class B { | 1559 class B { |
1596 A a; | 1560 A a; |
1597 int b() => a.a; | 1561 int b() => a.a; |
1598 } | 1562 } |
1599 '''); | 1563 '''); |
1600 await computeAnalysisResult(source); | 1564 await computeAnalysisResult(source); |
1601 await computeAnalysisResult(source2); | 1565 await computeAnalysisResult(source2); |
1602 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); | 1566 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1634 | 1598 |
1635 /// OK: [A.a], [A.b], [A.c]. | 1599 /// OK: [A.a], [A.b], [A.c]. |
1636 f() {} | 1600 f() {} |
1637 '''); | 1601 '''); |
1638 await computeAnalysisResult(source); | 1602 await computeAnalysisResult(source); |
1639 assertNoErrors(source); | 1603 assertNoErrors(source); |
1640 verify([source]); | 1604 verify([source]); |
1641 } | 1605 } |
1642 | 1606 |
1643 test_invalidUseOfProtectedMember_message() async { | 1607 test_invalidUseOfProtectedMember_message() async { |
1644 Source source = addNamedSource( | 1608 Source source = addNamedSource('/lib1.dart', r''' |
1645 '/lib1.dart', | |
1646 r''' | |
1647 import 'package:meta/meta.dart'; | 1609 import 'package:meta/meta.dart'; |
1648 class A { | 1610 class A { |
1649 @protected | 1611 @protected |
1650 void a(){ } | 1612 void a(){ } |
1651 } | 1613 } |
1652 '''); | 1614 '''); |
1653 Source source2 = addNamedSource( | 1615 Source source2 = addNamedSource('/lib2.dart', r''' |
1654 '/lib2.dart', | |
1655 r''' | |
1656 import 'lib1.dart'; | 1616 import 'lib1.dart'; |
1657 | 1617 |
1658 class B { | 1618 class B { |
1659 void b() => new A().a(); | 1619 void b() => new A().a(); |
1660 } | 1620 } |
1661 '''); | 1621 '''); |
1662 await computeAnalysisResult(source); | 1622 await computeAnalysisResult(source); |
1663 await computeAnalysisResult(source2); | 1623 await computeAnalysisResult(source2); |
1664 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); | 1624 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); |
1665 verify([source, source2]); | 1625 verify([source, source2]); |
1666 } | 1626 } |
1667 | 1627 |
1668 test_invalidUseOfProtectedMember_method_1() async { | 1628 test_invalidUseOfProtectedMember_method_1() async { |
1669 Source source = addNamedSource( | 1629 Source source = addNamedSource('/lib1.dart', r''' |
1670 '/lib1.dart', | |
1671 r''' | |
1672 import 'package:meta/meta.dart'; | 1630 import 'package:meta/meta.dart'; |
1673 class A { | 1631 class A { |
1674 @protected | 1632 @protected |
1675 void a(){ } | 1633 void a(){ } |
1676 } | 1634 } |
1677 '''); | 1635 '''); |
1678 Source source2 = addNamedSource( | 1636 Source source2 = addNamedSource('/lib2.dart', r''' |
1679 '/lib2.dart', | |
1680 r''' | |
1681 import 'lib1.dart'; | 1637 import 'lib1.dart'; |
1682 | 1638 |
1683 class B { | 1639 class B { |
1684 void b() => new A().a(); | 1640 void b() => new A().a(); |
1685 } | 1641 } |
1686 '''); | 1642 '''); |
1687 | 1643 |
1688 await computeAnalysisResult(source); | 1644 await computeAnalysisResult(source); |
1689 await computeAnalysisResult(source2); | 1645 await computeAnalysisResult(source2); |
1690 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); | 1646 assertErrors(source2, [HintCode.INVALID_USE_OF_PROTECTED_MEMBER]); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1838 this.a = a; | 1794 this.a = a; |
1839 } | 1795 } |
1840 } | 1796 } |
1841 '''); | 1797 '''); |
1842 await computeAnalysisResult(source); | 1798 await computeAnalysisResult(source); |
1843 assertNoErrors(source); | 1799 assertNoErrors(source); |
1844 verify([source]); | 1800 verify([source]); |
1845 } | 1801 } |
1846 | 1802 |
1847 test_invalidUseOfProtectedMember_setter() async { | 1803 test_invalidUseOfProtectedMember_setter() async { |
1848 Source source = addNamedSource( | 1804 Source source = addNamedSource('/lib1.dart', r''' |
1849 '/lib1.dart', | |
1850 r''' | |
1851 import 'package:meta/meta.dart'; | 1805 import 'package:meta/meta.dart'; |
1852 class A { | 1806 class A { |
1853 @protected | 1807 @protected |
1854 void set a(int i) { } | 1808 void set a(int i) { } |
1855 } | 1809 } |
1856 '''); | 1810 '''); |
1857 Source source2 = addNamedSource( | 1811 Source source2 = addNamedSource('/lib2.dart', r''' |
1858 '/lib2.dart', | |
1859 r''' | |
1860 import 'lib1.dart'; | 1812 import 'lib1.dart'; |
1861 | 1813 |
1862 class B{ | 1814 class B{ |
1863 A a; | 1815 A a; |
1864 b(int i) { | 1816 b(int i) { |
1865 a.a = i; | 1817 a.a = i; |
1866 } | 1818 } |
1867 } | 1819 } |
1868 '''); | 1820 '''); |
1869 await computeAnalysisResult(source); | 1821 await computeAnalysisResult(source); |
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2536 f() { | 2488 f() { |
2537 new A().m(); | 2489 new A().m(); |
2538 } | 2490 } |
2539 '''); | 2491 '''); |
2540 await computeAnalysisResult(source); | 2492 await computeAnalysisResult(source); |
2541 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); | 2493 assertErrors(source, [HintCode.MISSING_REQUIRED_PARAM_WITH_DETAILS]); |
2542 verify([source]); | 2494 verify([source]); |
2543 } | 2495 } |
2544 | 2496 |
2545 test_required_method_param_in_other_lib() async { | 2497 test_required_method_param_in_other_lib() async { |
2546 addNamedSource( | 2498 addNamedSource('/a_lib.dart', r''' |
2547 '/a_lib.dart', | |
2548 r''' | |
2549 library a_lib; | 2499 library a_lib; |
2550 import 'package:meta/meta.dart'; | 2500 import 'package:meta/meta.dart'; |
2551 class A { | 2501 class A { |
2552 void m({@Required('must specify an `a`') int a}) {} | 2502 void m({@Required('must specify an `a`') int a}) {} |
2553 } | 2503 } |
2554 '''); | 2504 '''); |
2555 | 2505 |
2556 Source source = addSource(r''' | 2506 Source source = addSource(r''' |
2557 import "a_lib.dart"; | 2507 import "a_lib.dart"; |
2558 f() { | 2508 f() { |
(...skipping 1326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3885 assertNoErrors(source2); | 3835 assertNoErrors(source2); |
3886 verify([source, source2]); | 3836 verify([source, source2]); |
3887 } | 3837 } |
3888 | 3838 |
3889 test_unusedImport_as() async { | 3839 test_unusedImport_as() async { |
3890 Source source = addSource(r''' | 3840 Source source = addSource(r''' |
3891 library L; | 3841 library L; |
3892 import 'lib1.dart'; | 3842 import 'lib1.dart'; |
3893 import 'lib1.dart' as one; | 3843 import 'lib1.dart' as one; |
3894 one.A a;'''); | 3844 one.A a;'''); |
3895 Source source2 = addNamedSource( | 3845 Source source2 = addNamedSource("/lib1.dart", r''' |
3896 "/lib1.dart", | |
3897 r''' | |
3898 library lib1; | 3846 library lib1; |
3899 class A {}'''); | 3847 class A {}'''); |
3900 await computeAnalysisResult(source); | 3848 await computeAnalysisResult(source); |
3901 await computeAnalysisResult(source2); | 3849 await computeAnalysisResult(source2); |
3902 assertErrors(source, [HintCode.UNUSED_IMPORT]); | 3850 assertErrors(source, [HintCode.UNUSED_IMPORT]); |
3903 assertNoErrors(source2); | 3851 assertNoErrors(source2); |
3904 verify([source, source2]); | 3852 verify([source, source2]); |
3905 } | 3853 } |
3906 | 3854 |
3907 @failingTest | 3855 @failingTest |
3908 test_unusedImport_as_equalPrefixes() async { | 3856 test_unusedImport_as_equalPrefixes() async { |
3909 // See todo at ImportsVerifier.prefixElementMap. | 3857 // See todo at ImportsVerifier.prefixElementMap. |
3910 Source source = addSource(r''' | 3858 Source source = addSource(r''' |
3911 library L; | 3859 library L; |
3912 import 'lib1.dart' as one; | 3860 import 'lib1.dart' as one; |
3913 import 'lib2.dart' as one; | 3861 import 'lib2.dart' as one; |
3914 one.A a;'''); | 3862 one.A a;'''); |
3915 Source source2 = addNamedSource( | 3863 Source source2 = addNamedSource("/lib1.dart", r''' |
3916 "/lib1.dart", | |
3917 r''' | |
3918 library lib1; | 3864 library lib1; |
3919 class A {}'''); | 3865 class A {}'''); |
3920 Source source3 = addNamedSource( | 3866 Source source3 = addNamedSource("/lib2.dart", r''' |
3921 "/lib2.dart", | |
3922 r''' | |
3923 library lib2; | 3867 library lib2; |
3924 class B {}'''); | 3868 class B {}'''); |
3925 await computeAnalysisResult(source); | 3869 await computeAnalysisResult(source); |
3926 await computeAnalysisResult(source2); | 3870 await computeAnalysisResult(source2); |
3927 await computeAnalysisResult(source3); | 3871 await computeAnalysisResult(source3); |
3928 assertErrors(source, [HintCode.UNUSED_IMPORT]); | 3872 assertErrors(source, [HintCode.UNUSED_IMPORT]); |
3929 assertNoErrors(source2); | 3873 assertNoErrors(source2); |
3930 assertNoErrors(source3); | 3874 assertNoErrors(source3); |
3931 verify([source, source2, source3]); | 3875 verify([source, source2, source3]); |
3932 } | 3876 } |
3933 | 3877 |
3934 test_unusedImport_hide() async { | 3878 test_unusedImport_hide() async { |
3935 Source source = addSource(r''' | 3879 Source source = addSource(r''' |
3936 library L; | 3880 library L; |
3937 import 'lib1.dart'; | 3881 import 'lib1.dart'; |
3938 import 'lib1.dart' hide A; | 3882 import 'lib1.dart' hide A; |
3939 A a;'''); | 3883 A a;'''); |
3940 Source source2 = addNamedSource( | 3884 Source source2 = addNamedSource("/lib1.dart", r''' |
3941 "/lib1.dart", | |
3942 r''' | |
3943 library lib1; | 3885 library lib1; |
3944 class A {}'''); | 3886 class A {}'''); |
3945 await computeAnalysisResult(source); | 3887 await computeAnalysisResult(source); |
3946 await computeAnalysisResult(source2); | 3888 await computeAnalysisResult(source2); |
3947 assertErrors(source, [HintCode.UNUSED_IMPORT]); | 3889 assertErrors(source, [HintCode.UNUSED_IMPORT]); |
3948 assertNoErrors(source2); | 3890 assertNoErrors(source2); |
3949 verify([source, source2]); | 3891 verify([source, source2]); |
3950 } | 3892 } |
3951 | 3893 |
3952 test_unusedImport_inComment_libraryDirective() async { | 3894 test_unusedImport_inComment_libraryDirective() async { |
3953 Source source = addSource(r''' | 3895 Source source = addSource(r''' |
3954 /// Use [Future] class. | 3896 /// Use [Future] class. |
3955 library L; | 3897 library L; |
3956 import 'dart:async'; | 3898 import 'dart:async'; |
3957 '''); | 3899 '''); |
3958 await computeAnalysisResult(source); | 3900 await computeAnalysisResult(source); |
3959 assertNoErrors(source); | 3901 assertNoErrors(source); |
3960 } | 3902 } |
3961 | 3903 |
3962 test_unusedImport_show() async { | 3904 test_unusedImport_show() async { |
3963 Source source = addSource(r''' | 3905 Source source = addSource(r''' |
3964 library L; | 3906 library L; |
3965 import 'lib1.dart' show A; | 3907 import 'lib1.dart' show A; |
3966 import 'lib1.dart' show B; | 3908 import 'lib1.dart' show B; |
3967 A a;'''); | 3909 A a;'''); |
3968 Source source2 = addNamedSource( | 3910 Source source2 = addNamedSource("/lib1.dart", r''' |
3969 "/lib1.dart", | |
3970 r''' | |
3971 library lib1; | 3911 library lib1; |
3972 class A {} | 3912 class A {} |
3973 class B {}'''); | 3913 class B {}'''); |
3974 await computeAnalysisResult(source); | 3914 await computeAnalysisResult(source); |
3975 await computeAnalysisResult(source2); | 3915 await computeAnalysisResult(source2); |
3976 assertErrors(source, [HintCode.UNUSED_IMPORT]); | 3916 assertErrors(source, [HintCode.UNUSED_IMPORT]); |
3977 assertNoErrors(source2); | 3917 assertNoErrors(source2); |
3978 verify([source, source2]); | 3918 verify([source, source2]); |
3979 } | 3919 } |
3980 | 3920 |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4178 await computeAnalysisResult(source); | 4118 await computeAnalysisResult(source); |
4179 assertErrors(source); | 4119 assertErrors(source); |
4180 verify([source]); | 4120 verify([source]); |
4181 } | 4121 } |
4182 | 4122 |
4183 test_unusedShownName() async { | 4123 test_unusedShownName() async { |
4184 Source source = addSource(r''' | 4124 Source source = addSource(r''' |
4185 library L; | 4125 library L; |
4186 import 'lib1.dart' show A, B; | 4126 import 'lib1.dart' show A, B; |
4187 A a;'''); | 4127 A a;'''); |
4188 Source source2 = addNamedSource( | 4128 Source source2 = addNamedSource("/lib1.dart", r''' |
4189 "/lib1.dart", | |
4190 r''' | |
4191 library lib1; | 4129 library lib1; |
4192 class A {} | 4130 class A {} |
4193 class B {}'''); | 4131 class B {}'''); |
4194 await computeAnalysisResult(source); | 4132 await computeAnalysisResult(source); |
4195 await computeAnalysisResult(source2); | 4133 await computeAnalysisResult(source2); |
4196 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); | 4134 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); |
4197 assertNoErrors(source2); | 4135 assertNoErrors(source2); |
4198 verify([source, source2]); | 4136 verify([source, source2]); |
4199 } | 4137 } |
4200 | 4138 |
4201 test_unusedShownName_as() async { | 4139 test_unusedShownName_as() async { |
4202 Source source = addSource(r''' | 4140 Source source = addSource(r''' |
4203 library L; | 4141 library L; |
4204 import 'lib1.dart' as p show A, B; | 4142 import 'lib1.dart' as p show A, B; |
4205 p.A a;'''); | 4143 p.A a;'''); |
4206 Source source2 = addNamedSource( | 4144 Source source2 = addNamedSource("/lib1.dart", r''' |
4207 "/lib1.dart", | |
4208 r''' | |
4209 library lib1; | 4145 library lib1; |
4210 class A {} | 4146 class A {} |
4211 class B {}'''); | 4147 class B {}'''); |
4212 await computeAnalysisResult(source); | 4148 await computeAnalysisResult(source); |
4213 await computeAnalysisResult(source2); | 4149 await computeAnalysisResult(source2); |
4214 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); | 4150 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); |
4215 assertNoErrors(source2); | 4151 assertNoErrors(source2); |
4216 verify([source, source2]); | 4152 verify([source, source2]); |
4217 } | 4153 } |
4218 | 4154 |
4219 test_unusedShownName_duplicates() async { | 4155 test_unusedShownName_duplicates() async { |
4220 Source source = addSource(r''' | 4156 Source source = addSource(r''' |
4221 library L; | 4157 library L; |
4222 import 'lib1.dart' show A, B; | 4158 import 'lib1.dart' show A, B; |
4223 import 'lib1.dart' show C, D; | 4159 import 'lib1.dart' show C, D; |
4224 A a; | 4160 A a; |
4225 C c;'''); | 4161 C c;'''); |
4226 Source source2 = addNamedSource( | 4162 Source source2 = addNamedSource("/lib1.dart", r''' |
4227 "/lib1.dart", | |
4228 r''' | |
4229 library lib1; | 4163 library lib1; |
4230 class A {} | 4164 class A {} |
4231 class B {} | 4165 class B {} |
4232 class C {} | 4166 class C {} |
4233 class D {}'''); | 4167 class D {}'''); |
4234 await computeAnalysisResult(source); | 4168 await computeAnalysisResult(source); |
4235 await computeAnalysisResult(source2); | 4169 await computeAnalysisResult(source2); |
4236 assertErrors( | 4170 assertErrors( |
4237 source, [HintCode.UNUSED_SHOWN_NAME, HintCode.UNUSED_SHOWN_NAME]); | 4171 source, [HintCode.UNUSED_SHOWN_NAME, HintCode.UNUSED_SHOWN_NAME]); |
4238 assertNoErrors(source2); | 4172 assertNoErrors(source2); |
4239 verify([source, source2]); | 4173 verify([source, source2]); |
4240 } | 4174 } |
4241 | 4175 |
4242 test_unusedShownName_topLevelVariable() async { | 4176 test_unusedShownName_topLevelVariable() async { |
4243 Source source = addSource(r''' | 4177 Source source = addSource(r''' |
4244 library L; | 4178 library L; |
4245 import 'lib1.dart' show var1, var2; | 4179 import 'lib1.dart' show var1, var2; |
4246 import 'lib1.dart' show var3, var4; | 4180 import 'lib1.dart' show var3, var4; |
4247 int a = var1; | 4181 int a = var1; |
4248 int b = var2; | 4182 int b = var2; |
4249 int c = var3;'''); | 4183 int c = var3;'''); |
4250 Source source2 = addNamedSource( | 4184 Source source2 = addNamedSource("/lib1.dart", r''' |
4251 "/lib1.dart", | |
4252 r''' | |
4253 library lib1; | 4185 library lib1; |
4254 const int var1 = 1; | 4186 const int var1 = 1; |
4255 const int var2 = 2; | 4187 const int var2 = 2; |
4256 const int var3 = 3; | 4188 const int var3 = 3; |
4257 const int var4 = 4;'''); | 4189 const int var4 = 4;'''); |
4258 await computeAnalysisResult(source); | 4190 await computeAnalysisResult(source); |
4259 await computeAnalysisResult(source2); | 4191 await computeAnalysisResult(source2); |
4260 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); | 4192 assertErrors(source, [HintCode.UNUSED_SHOWN_NAME]); |
4261 assertNoErrors(source2); | 4193 assertNoErrors(source2); |
4262 verify([source, source2]); | 4194 verify([source, source2]); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4336 n() { | 4268 n() { |
4337 var a = m(), b = m(); | 4269 var a = m(), b = m(); |
4338 } | 4270 } |
4339 }'''); | 4271 }'''); |
4340 await computeAnalysisResult(source); | 4272 await computeAnalysisResult(source); |
4341 assertErrors( | 4273 assertErrors( |
4342 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]); | 4274 source, [HintCode.USE_OF_VOID_RESULT, HintCode.USE_OF_VOID_RESULT]); |
4343 verify([source]); | 4275 verify([source]); |
4344 } | 4276 } |
4345 } | 4277 } |
OLD | NEW |