| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 engine.static_warning_code_test; | 5 library engine.static_warning_code_test; |
| 6 | 6 |
| 7 import 'package:analyzer/src/generated/error.dart'; | 7 import 'package:analyzer/src/generated/error.dart'; |
| 8 import 'package:analyzer/src/generated/source_io.dart'; | 8 import 'package:analyzer/src/generated/source_io.dart'; |
| 9 import 'package:unittest/unittest.dart'; | 9 import 'package:unittest/unittest.dart'; |
| 10 | 10 |
| (...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 | 875 |
| 876 void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter
() { | 876 void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter
() { |
| 877 Source source = addSource(r''' | 877 Source source = addSource(r''' |
| 878 class A { | 878 class A { |
| 879 static set v(x) {} | 879 static set v(x) {} |
| 880 } | 880 } |
| 881 class B extends A { | 881 class B extends A { |
| 882 var v; | 882 var v; |
| 883 }'''); | 883 }'''); |
| 884 resolve(source); | 884 resolve(source); |
| 885 assertErrors(source, [ | 885 assertErrors(source, |
| 886 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 886 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 887 ]); | |
| 888 verify([source]); | 887 verify([source]); |
| 889 } | 888 } |
| 890 | 889 |
| 891 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_gette
r() { | 890 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_gette
r() { |
| 892 Source source = addSource(r''' | 891 Source source = addSource(r''' |
| 893 class A { | 892 class A { |
| 894 static get v => 0; | 893 static get v => 0; |
| 895 } | 894 } |
| 896 class B extends A { | 895 class B extends A { |
| 897 get v => 0; | 896 get v => 0; |
| 898 }'''); | 897 }'''); |
| 899 resolve(source); | 898 resolve(source); |
| 900 assertErrors(source, [ | 899 assertErrors(source, |
| 901 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 900 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 902 ]); | |
| 903 verify([source]); | 901 verify([source]); |
| 904 } | 902 } |
| 905 | 903 |
| 906 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_metho
d() { | 904 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_metho
d() { |
| 907 Source source = addSource(r''' | 905 Source source = addSource(r''' |
| 908 class A { | 906 class A { |
| 909 static v() {} | 907 static v() {} |
| 910 } | 908 } |
| 911 class B extends A { | 909 class B extends A { |
| 912 get v => 0; | 910 get v => 0; |
| 913 }'''); | 911 }'''); |
| 914 resolve(source); | 912 resolve(source); |
| 915 assertErrors(source, [ | 913 assertErrors(source, |
| 916 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 914 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 917 ]); | |
| 918 verify([source]); | 915 verify([source]); |
| 919 } | 916 } |
| 920 | 917 |
| 921 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_sette
r() { | 918 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_direct_sette
r() { |
| 922 Source source = addSource(r''' | 919 Source source = addSource(r''' |
| 923 class A { | 920 class A { |
| 924 static set v(x) {} | 921 static set v(x) {} |
| 925 } | 922 } |
| 926 class B extends A { | 923 class B extends A { |
| 927 get v => 0; | 924 get v => 0; |
| 928 }'''); | 925 }'''); |
| 929 resolve(source); | 926 resolve(source); |
| 930 assertErrors(source, [ | 927 assertErrors(source, |
| 931 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 928 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 932 ]); | |
| 933 verify([source]); | 929 verify([source]); |
| 934 } | 930 } |
| 935 | 931 |
| 936 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() { | 932 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_indirect() { |
| 937 Source source = addSource(r''' | 933 Source source = addSource(r''' |
| 938 class A { | 934 class A { |
| 939 static int v; | 935 static int v; |
| 940 } | 936 } |
| 941 class B extends A {} | 937 class B extends A {} |
| 942 class C extends B { | 938 class C extends B { |
| 943 get v => 0; | 939 get v => 0; |
| 944 }'''); | 940 }'''); |
| 945 resolve(source); | 941 resolve(source); |
| 946 assertErrors(source, [ | 942 assertErrors(source, |
| 947 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 943 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 948 ]); | |
| 949 verify([source]); | 944 verify([source]); |
| 950 } | 945 } |
| 951 | 946 |
| 952 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() { | 947 void test_conflictingInstanceGetterAndSuperclassMember_declGetter_mixin() { |
| 953 Source source = addSource(r''' | 948 Source source = addSource(r''' |
| 954 class M { | 949 class M { |
| 955 static int v; | 950 static int v; |
| 956 } | 951 } |
| 957 class B extends Object with M { | 952 class B extends Object with M { |
| 958 get v => 0; | 953 get v => 0; |
| 959 }'''); | 954 }'''); |
| 960 resolve(source); | 955 resolve(source); |
| 961 assertErrors(source, [ | 956 assertErrors(source, |
| 962 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 957 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 963 ]); | |
| 964 verify([source]); | 958 verify([source]); |
| 965 } | 959 } |
| 966 | 960 |
| 967 void test_conflictingInstanceGetterAndSuperclassMember_direct_field() { | 961 void test_conflictingInstanceGetterAndSuperclassMember_direct_field() { |
| 968 Source source = addSource(r''' | 962 Source source = addSource(r''' |
| 969 class A { | 963 class A { |
| 970 static int v; | 964 static int v; |
| 971 } | 965 } |
| 972 class B extends A { | 966 class B extends A { |
| 973 get v => 0; | 967 get v => 0; |
| 974 }'''); | 968 }'''); |
| 975 resolve(source); | 969 resolve(source); |
| 976 assertErrors(source, [ | 970 assertErrors(source, |
| 977 StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER | 971 [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER]); |
| 978 ]); | |
| 979 verify([source]); | 972 verify([source]); |
| 980 } | 973 } |
| 981 | 974 |
| 982 void test_conflictingInstanceMethodSetter2() { | 975 void test_conflictingInstanceMethodSetter2() { |
| 983 Source source = addSource(r''' | 976 Source source = addSource(r''' |
| 984 class A { | 977 class A { |
| 985 foo() {} | 978 foo() {} |
| 986 set foo(a) {} | 979 set foo(a) {} |
| 987 }'''); | 980 }'''); |
| 988 resolve(source); | 981 resolve(source); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1033 | 1026 |
| 1034 void test_conflictingInstanceSetterAndSuperclassMember() { | 1027 void test_conflictingInstanceSetterAndSuperclassMember() { |
| 1035 Source source = addSource(r''' | 1028 Source source = addSource(r''' |
| 1036 class A { | 1029 class A { |
| 1037 static int v; | 1030 static int v; |
| 1038 } | 1031 } |
| 1039 class B extends A { | 1032 class B extends A { |
| 1040 set v(x) {} | 1033 set v(x) {} |
| 1041 }'''); | 1034 }'''); |
| 1042 resolve(source); | 1035 resolve(source); |
| 1043 assertErrors(source, [ | 1036 assertErrors(source, |
| 1044 StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER | 1037 [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER]); |
| 1045 ]); | |
| 1046 verify([source]); | 1038 verify([source]); |
| 1047 } | 1039 } |
| 1048 | 1040 |
| 1049 void test_conflictingStaticGetterAndInstanceSetter_mixin() { | 1041 void test_conflictingStaticGetterAndInstanceSetter_mixin() { |
| 1050 Source source = addSource(r''' | 1042 Source source = addSource(r''' |
| 1051 class A { | 1043 class A { |
| 1052 set x(int p) {} | 1044 set x(int p) {} |
| 1053 } | 1045 } |
| 1054 class B extends Object with A { | 1046 class B extends Object with A { |
| 1055 static get x => 0; | 1047 static get x => 0; |
| 1056 }'''); | 1048 }'''); |
| 1057 resolve(source); | 1049 resolve(source); |
| 1058 assertErrors(source, [ | 1050 assertErrors(source, |
| 1059 StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER | 1051 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); |
| 1060 ]); | |
| 1061 verify([source]); | 1052 verify([source]); |
| 1062 } | 1053 } |
| 1063 | 1054 |
| 1064 void test_conflictingStaticGetterAndInstanceSetter_superClass() { | 1055 void test_conflictingStaticGetterAndInstanceSetter_superClass() { |
| 1065 Source source = addSource(r''' | 1056 Source source = addSource(r''' |
| 1066 class A { | 1057 class A { |
| 1067 set x(int p) {} | 1058 set x(int p) {} |
| 1068 } | 1059 } |
| 1069 class B extends A { | 1060 class B extends A { |
| 1070 static get x => 0; | 1061 static get x => 0; |
| 1071 }'''); | 1062 }'''); |
| 1072 resolve(source); | 1063 resolve(source); |
| 1073 assertErrors(source, [ | 1064 assertErrors(source, |
| 1074 StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER | 1065 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); |
| 1075 ]); | |
| 1076 verify([source]); | 1066 verify([source]); |
| 1077 } | 1067 } |
| 1078 | 1068 |
| 1079 void test_conflictingStaticGetterAndInstanceSetter_thisClass() { | 1069 void test_conflictingStaticGetterAndInstanceSetter_thisClass() { |
| 1080 Source source = addSource(r''' | 1070 Source source = addSource(r''' |
| 1081 class A { | 1071 class A { |
| 1082 static get x => 0; | 1072 static get x => 0; |
| 1083 set x(int p) {} | 1073 set x(int p) {} |
| 1084 }'''); | 1074 }'''); |
| 1085 resolve(source); | 1075 resolve(source); |
| 1086 assertErrors(source, [ | 1076 assertErrors(source, |
| 1087 StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER | 1077 [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTANCE_SETTER]); |
| 1088 ]); | |
| 1089 verify([source]); | 1078 verify([source]); |
| 1090 } | 1079 } |
| 1091 | 1080 |
| 1092 void test_conflictingStaticSetterAndInstanceMember_thisClass_getter() { | 1081 void test_conflictingStaticSetterAndInstanceMember_thisClass_getter() { |
| 1093 Source source = addSource(r''' | 1082 Source source = addSource(r''' |
| 1094 class A { | 1083 class A { |
| 1095 get x => 0; | 1084 get x => 0; |
| 1096 static set x(int p) {} | 1085 static set x(int p) {} |
| 1097 }'''); | 1086 }'''); |
| 1098 resolve(source); | 1087 resolve(source); |
| 1099 assertErrors(source, [ | 1088 assertErrors(source, |
| 1100 StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER | 1089 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); |
| 1101 ]); | |
| 1102 verify([source]); | 1090 verify([source]); |
| 1103 } | 1091 } |
| 1104 | 1092 |
| 1105 void test_conflictingStaticSetterAndInstanceMember_thisClass_method() { | 1093 void test_conflictingStaticSetterAndInstanceMember_thisClass_method() { |
| 1106 Source source = addSource(r''' | 1094 Source source = addSource(r''' |
| 1107 class A { | 1095 class A { |
| 1108 x() {} | 1096 x() {} |
| 1109 static set x(int p) {} | 1097 static set x(int p) {} |
| 1110 }'''); | 1098 }'''); |
| 1111 resolve(source); | 1099 resolve(source); |
| 1112 assertErrors(source, [ | 1100 assertErrors(source, |
| 1113 StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER | 1101 [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTANCE_MEMBER]); |
| 1114 ]); | |
| 1115 verify([source]); | 1102 verify([source]); |
| 1116 } | 1103 } |
| 1117 | 1104 |
| 1118 void test_constWithAbstractClass() { | 1105 void test_constWithAbstractClass() { |
| 1119 Source source = addSource(r''' | 1106 Source source = addSource(r''' |
| 1120 abstract class A { | 1107 abstract class A { |
| 1121 const A(); | 1108 const A(); |
| 1122 } | 1109 } |
| 1123 void f() { | 1110 void f() { |
| 1124 A a = const A(); | 1111 A a = const A(); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1204 verify([source]); | 1191 verify([source]); |
| 1205 } | 1192 } |
| 1206 | 1193 |
| 1207 void test_fieldInitializedInInitializerAndDeclaration_final() { | 1194 void test_fieldInitializedInInitializerAndDeclaration_final() { |
| 1208 Source source = addSource(r''' | 1195 Source source = addSource(r''' |
| 1209 class A { | 1196 class A { |
| 1210 final int x = 0; | 1197 final int x = 0; |
| 1211 A() : x = 1 {} | 1198 A() : x = 1 {} |
| 1212 }'''); | 1199 }'''); |
| 1213 resolve(source); | 1200 resolve(source); |
| 1214 assertErrors(source, [ | 1201 assertErrors(source, |
| 1215 StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION | 1202 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); |
| 1216 ]); | |
| 1217 verify([source]); | 1203 verify([source]); |
| 1218 } | 1204 } |
| 1219 | 1205 |
| 1220 void test_fieldInitializerNotAssignable() { | 1206 void test_fieldInitializerNotAssignable() { |
| 1221 Source source = addSource(r''' | 1207 Source source = addSource(r''' |
| 1222 class A { | 1208 class A { |
| 1223 int x; | 1209 int x; |
| 1224 A() : x = ''; | 1210 A() : x = ''; |
| 1225 }'''); | 1211 }'''); |
| 1226 resolve(source); | 1212 resolve(source); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1249 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w
e use it instead of | 1235 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w
e use it instead of |
| 1250 * the broader code | 1236 * the broader code |
| 1251 */ | 1237 */ |
| 1252 void test_finalInitializedInDeclarationAndConstructor_initializers() { | 1238 void test_finalInitializedInDeclarationAndConstructor_initializers() { |
| 1253 Source source = addSource(r''' | 1239 Source source = addSource(r''' |
| 1254 class A { | 1240 class A { |
| 1255 final x = 0; | 1241 final x = 0; |
| 1256 A() : x = 0 {} | 1242 A() : x = 0 {} |
| 1257 }'''); | 1243 }'''); |
| 1258 resolve(source); | 1244 resolve(source); |
| 1259 assertErrors(source, [ | 1245 assertErrors(source, |
| 1260 StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION | 1246 [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION]); |
| 1261 ]); | |
| 1262 verify([source]); | 1247 verify([source]); |
| 1263 } | 1248 } |
| 1264 | 1249 |
| 1265 void test_finalInitializedInDeclarationAndConstructor_initializingFormal() { | 1250 void test_finalInitializedInDeclarationAndConstructor_initializingFormal() { |
| 1266 Source source = addSource(r''' | 1251 Source source = addSource(r''' |
| 1267 class A { | 1252 class A { |
| 1268 final x = 0; | 1253 final x = 0; |
| 1269 A(this.x) {} | 1254 A(this.x) {} |
| 1270 }'''); | 1255 }'''); |
| 1271 resolve(source); | 1256 resolve(source); |
| 1272 assertErrors(source, [ | 1257 assertErrors(source, |
| 1273 StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR | 1258 [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR]); |
| 1274 ]); | |
| 1275 verify([source]); | 1259 verify([source]); |
| 1276 } | 1260 } |
| 1277 | 1261 |
| 1278 void test_finalNotInitialized_inConstructor() { | 1262 void test_finalNotInitialized_inConstructor_1() { |
| 1279 Source source = addSource(r''' | 1263 Source source = addSource(r''' |
| 1280 class A { | 1264 class A { |
| 1281 final int x; | 1265 final int x; |
| 1282 A() {} | 1266 A() {} |
| 1283 }'''); | 1267 }'''); |
| 1284 resolve(source); | 1268 resolve(source); |
| 1285 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | 1269 assertErrors( |
| 1270 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_1]); |
| 1286 verify([source]); | 1271 verify([source]); |
| 1287 } | 1272 } |
| 1288 | 1273 |
| 1274 void test_finalNotInitialized_inConstructor_2() { |
| 1275 Source source = addSource(r''' |
| 1276 class A { |
| 1277 final int a; |
| 1278 final int b; |
| 1279 A() {} |
| 1280 }'''); |
| 1281 resolve(source); |
| 1282 assertErrors( |
| 1283 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_2]); |
| 1284 verify([source]); |
| 1285 } |
| 1286 |
| 1287 void test_finalNotInitialized_inConstructor_3() { |
| 1288 Source source = addSource(r''' |
| 1289 class A { |
| 1290 final int a; |
| 1291 final int b; |
| 1292 final int c; |
| 1293 A() {} |
| 1294 }'''); |
| 1295 resolve(source); |
| 1296 assertErrors( |
| 1297 source, [StaticWarningCode.FINAL_NOT_INITIALIZED_CONSTRUCTOR_3_PLUS]); |
| 1298 verify([source]); |
| 1299 } |
| 1300 |
| 1289 void test_finalNotInitialized_instanceField_final() { | 1301 void test_finalNotInitialized_instanceField_final() { |
| 1290 Source source = addSource(r''' | 1302 Source source = addSource(r''' |
| 1291 class A { | 1303 class A { |
| 1292 final F; | 1304 final F; |
| 1293 }'''); | 1305 }'''); |
| 1294 resolve(source); | 1306 resolve(source); |
| 1295 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | 1307 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); |
| 1296 verify([source]); | 1308 verify([source]); |
| 1297 } | 1309 } |
| 1298 | 1310 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1402 Source source = addSource(r''' | 1414 Source source = addSource(r''' |
| 1403 abstract class A { | 1415 abstract class A { |
| 1404 int x(); | 1416 int x(); |
| 1405 } | 1417 } |
| 1406 abstract class B { | 1418 abstract class B { |
| 1407 int get x; | 1419 int get x; |
| 1408 } | 1420 } |
| 1409 class C implements A, B { | 1421 class C implements A, B { |
| 1410 }'''); | 1422 }'''); |
| 1411 resolve(source); | 1423 resolve(source); |
| 1412 assertErrors(source, [ | 1424 assertErrors(source, |
| 1413 StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD | 1425 [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]); |
| 1414 ]); | |
| 1415 verify([source]); | 1426 verify([source]); |
| 1416 } | 1427 } |
| 1417 | 1428 |
| 1418 void test_instanceMethodNameCollidesWithSuperclassStatic_field() { | 1429 void test_instanceMethodNameCollidesWithSuperclassStatic_field() { |
| 1419 Source source = addSource(r''' | 1430 Source source = addSource(r''' |
| 1420 class A { | 1431 class A { |
| 1421 static var n; | 1432 static var n; |
| 1422 } | 1433 } |
| 1423 class B extends A { | 1434 class B extends A { |
| 1424 void n() {} | 1435 void n() {} |
| (...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1725 | 1736 |
| 1726 void test_invalidMethodOverrideOptionalParamType() { | 1737 void test_invalidMethodOverrideOptionalParamType() { |
| 1727 Source source = addSource(r''' | 1738 Source source = addSource(r''' |
| 1728 class A { | 1739 class A { |
| 1729 m([int a]) {} | 1740 m([int a]) {} |
| 1730 } | 1741 } |
| 1731 class B implements A { | 1742 class B implements A { |
| 1732 m([String a]) {} | 1743 m([String a]) {} |
| 1733 }'''); | 1744 }'''); |
| 1734 resolve(source); | 1745 resolve(source); |
| 1735 assertErrors(source, [ | 1746 assertErrors(source, |
| 1736 StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE | 1747 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); |
| 1737 ]); | |
| 1738 verify([source]); | 1748 verify([source]); |
| 1739 } | 1749 } |
| 1740 | 1750 |
| 1741 void test_invalidMethodOverrideOptionalParamType_twoInterfaces() { | 1751 void test_invalidMethodOverrideOptionalParamType_twoInterfaces() { |
| 1742 Source source = addSource(r''' | 1752 Source source = addSource(r''' |
| 1743 abstract class I { | 1753 abstract class I { |
| 1744 m([int n]); | 1754 m([int n]); |
| 1745 } | 1755 } |
| 1746 abstract class J { | 1756 abstract class J { |
| 1747 m([num n]); | 1757 m([num n]); |
| 1748 } | 1758 } |
| 1749 abstract class A implements I, J {} | 1759 abstract class A implements I, J {} |
| 1750 class B extends A { | 1760 class B extends A { |
| 1751 m([String n]) {} | 1761 m([String n]) {} |
| 1752 }'''); | 1762 }'''); |
| 1753 resolve(source); | 1763 resolve(source); |
| 1754 assertErrors(source, [ | 1764 assertErrors(source, |
| 1755 StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE | 1765 [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE]); |
| 1756 ]); | |
| 1757 verify([source]); | 1766 verify([source]); |
| 1758 } | 1767 } |
| 1759 | 1768 |
| 1760 void test_invalidMethodOverrideReturnType_interface() { | 1769 void test_invalidMethodOverrideReturnType_interface() { |
| 1761 Source source = addSource(r''' | 1770 Source source = addSource(r''' |
| 1762 class A { | 1771 class A { |
| 1763 int m() { return 0; } | 1772 int m() { return 0; } |
| 1764 } | 1773 } |
| 1765 class B implements A { | 1774 class B implements A { |
| 1766 String m() { return 'a'; } | 1775 String m() { return 'a'; } |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1888 // value, even if implicitly. | 1897 // value, even if implicitly. |
| 1889 Source source = addSource(r''' | 1898 Source source = addSource(r''' |
| 1890 class A { | 1899 class A { |
| 1891 foo({x: 1}) {} | 1900 foo({x: 1}) {} |
| 1892 } | 1901 } |
| 1893 class B extends A { | 1902 class B extends A { |
| 1894 foo({x}) {} | 1903 foo({x}) {} |
| 1895 } | 1904 } |
| 1896 '''); | 1905 '''); |
| 1897 resolve(source); | 1906 resolve(source); |
| 1898 assertErrors(source, [ | 1907 assertErrors(source, |
| 1899 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED | 1908 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); |
| 1900 ]); | |
| 1901 verify([source]); | 1909 verify([source]); |
| 1902 } | 1910 } |
| 1903 | 1911 |
| 1904 void test_invalidOverride_defaultOverridesNonDefaultNull() { | 1912 void test_invalidOverride_defaultOverridesNonDefaultNull() { |
| 1905 // If the base class provided an explicit null value for a default | 1913 // If the base class provided an explicit null value for a default |
| 1906 // parameter, then it is ok for the derived class to let the default value | 1914 // parameter, then it is ok for the derived class to let the default value |
| 1907 // be implicit, because the implicit default value of null matches the | 1915 // be implicit, because the implicit default value of null matches the |
| 1908 // explicit default value of null. | 1916 // explicit default value of null. |
| 1909 Source source = addSource(r''' | 1917 Source source = addSource(r''' |
| 1910 class A { | 1918 class A { |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1973 | 1981 |
| 1974 void test_invalidOverrideDifferentDefaultValues_named() { | 1982 void test_invalidOverrideDifferentDefaultValues_named() { |
| 1975 Source source = addSource(r''' | 1983 Source source = addSource(r''' |
| 1976 class A { | 1984 class A { |
| 1977 m({int p : 0}) {} | 1985 m({int p : 0}) {} |
| 1978 } | 1986 } |
| 1979 class B extends A { | 1987 class B extends A { |
| 1980 m({int p : 1}) {} | 1988 m({int p : 1}) {} |
| 1981 }'''); | 1989 }'''); |
| 1982 resolve(source); | 1990 resolve(source); |
| 1983 assertErrors(source, [ | 1991 assertErrors(source, |
| 1984 StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED | 1992 [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES_NAMED]); |
| 1985 ]); | |
| 1986 verify([source]); | 1993 verify([source]); |
| 1987 } | 1994 } |
| 1988 | 1995 |
| 1989 void test_invalidOverrideDifferentDefaultValues_positional() { | 1996 void test_invalidOverrideDifferentDefaultValues_positional() { |
| 1990 Source source = addSource(r''' | 1997 Source source = addSource(r''' |
| 1991 class A { | 1998 class A { |
| 1992 m([int p = 0]) {} | 1999 m([int p = 0]) {} |
| 1993 } | 2000 } |
| 1994 class B extends A { | 2001 class B extends A { |
| 1995 m([int p = 1]) {} | 2002 m([int p = 1]) {} |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2182 | 2189 |
| 2183 void test_mismatchedAccessorTypes_getterAndSuperSetter() { | 2190 void test_mismatchedAccessorTypes_getterAndSuperSetter() { |
| 2184 Source source = addSource(r''' | 2191 Source source = addSource(r''' |
| 2185 class A { | 2192 class A { |
| 2186 int get g { return 0; } | 2193 int get g { return 0; } |
| 2187 } | 2194 } |
| 2188 class B extends A { | 2195 class B extends A { |
| 2189 set g(String v) {} | 2196 set g(String v) {} |
| 2190 }'''); | 2197 }'''); |
| 2191 resolve(source); | 2198 resolve(source); |
| 2192 assertErrors(source, [ | 2199 assertErrors(source, |
| 2193 StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE | 2200 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); |
| 2194 ]); | |
| 2195 verify([source]); | 2201 verify([source]); |
| 2196 } | 2202 } |
| 2197 | 2203 |
| 2198 void test_mismatchedAccessorTypes_setterAndSuperGetter() { | 2204 void test_mismatchedAccessorTypes_setterAndSuperGetter() { |
| 2199 Source source = addSource(r''' | 2205 Source source = addSource(r''' |
| 2200 class A { | 2206 class A { |
| 2201 set g(int v) {} | 2207 set g(int v) {} |
| 2202 } | 2208 } |
| 2203 class B extends A { | 2209 class B extends A { |
| 2204 String get g { return ''; } | 2210 String get g { return ''; } |
| 2205 }'''); | 2211 }'''); |
| 2206 resolve(source); | 2212 resolve(source); |
| 2207 assertErrors(source, [ | 2213 assertErrors(source, |
| 2208 StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE | 2214 [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]); |
| 2209 ]); | |
| 2210 verify([source]); | 2215 verify([source]); |
| 2211 } | 2216 } |
| 2212 | 2217 |
| 2213 void test_mismatchedAccessorTypes_topLevel() { | 2218 void test_mismatchedAccessorTypes_topLevel() { |
| 2214 Source source = addSource(r''' | 2219 Source source = addSource(r''' |
| 2215 int get g { return 0; } | 2220 int get g { return 0; } |
| 2216 set g(String v) {}'''); | 2221 set g(String v) {}'''); |
| 2217 resolve(source); | 2222 resolve(source); |
| 2218 assertErrors( | 2223 assertErrors( |
| 2219 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); | 2224 source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2392 Source source = addSource(r''' | 2397 Source source = addSource(r''' |
| 2393 abstract class A { | 2398 abstract class A { |
| 2394 m(); | 2399 m(); |
| 2395 n(); | 2400 n(); |
| 2396 o(); | 2401 o(); |
| 2397 p(); | 2402 p(); |
| 2398 } | 2403 } |
| 2399 class C extends A { | 2404 class C extends A { |
| 2400 }'''); | 2405 }'''); |
| 2401 resolve(source); | 2406 resolve(source); |
| 2402 assertErrors(source, [ | 2407 assertErrors(source, |
| 2403 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR | 2408 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_FOUR]); |
| 2404 ]); | |
| 2405 verify([source]); | 2409 verify([source]); |
| 2406 } | 2410 } |
| 2407 | 2411 |
| 2408 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface()
{ | 2412 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface()
{ |
| 2409 // 15979 | 2413 // 15979 |
| 2410 Source source = addSource(r''' | 2414 Source source = addSource(r''' |
| 2411 abstract class M {} | 2415 abstract class M {} |
| 2412 abstract class A {} | 2416 abstract class A {} |
| 2413 abstract class I { | 2417 abstract class I { |
| 2414 m(); | 2418 m(); |
| 2415 } | 2419 } |
| 2416 class B = A with M implements I;'''); | 2420 class B = A with M implements I;'''); |
| 2417 resolve(source); | 2421 resolve(source); |
| 2418 assertErrors(source, [ | 2422 assertErrors(source, |
| 2419 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2423 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2420 ]); | |
| 2421 verify([source]); | 2424 verify([source]); |
| 2422 } | 2425 } |
| 2423 | 2426 |
| 2424 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() { | 2427 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() { |
| 2425 // 15979 | 2428 // 15979 |
| 2426 Source source = addSource(r''' | 2429 Source source = addSource(r''' |
| 2427 abstract class M { | 2430 abstract class M { |
| 2428 m(); | 2431 m(); |
| 2429 } | 2432 } |
| 2430 abstract class A {} | 2433 abstract class A {} |
| 2431 class B = A with M;'''); | 2434 class B = A with M;'''); |
| 2432 resolve(source); | 2435 resolve(source); |
| 2433 assertErrors(source, [ | 2436 assertErrors(source, |
| 2434 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2437 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2435 ]); | |
| 2436 verify([source]); | 2438 verify([source]); |
| 2437 } | 2439 } |
| 2438 | 2440 |
| 2439 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass(
) { | 2441 void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass(
) { |
| 2440 // 15979 | 2442 // 15979 |
| 2441 Source source = addSource(r''' | 2443 Source source = addSource(r''' |
| 2442 class M {} | 2444 class M {} |
| 2443 abstract class A { | 2445 abstract class A { |
| 2444 m(); | 2446 m(); |
| 2445 } | 2447 } |
| 2446 class B = A with M;'''); | 2448 class B = A with M;'''); |
| 2447 resolve(source); | 2449 resolve(source); |
| 2448 assertErrors(source, [ | 2450 assertErrors(source, |
| 2449 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2451 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2450 ]); | |
| 2451 verify([source]); | 2452 verify([source]); |
| 2452 } | 2453 } |
| 2453 | 2454 |
| 2454 void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubty
peIsUsedInImplementation() { | 2455 void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubty
peIsUsedInImplementation() { |
| 2455 // 15028 | 2456 // 15028 |
| 2456 Source source = addSource(r''' | 2457 Source source = addSource(r''' |
| 2457 class C { | 2458 class C { |
| 2458 foo(int x) => x; | 2459 foo(int x) => x; |
| 2459 } | 2460 } |
| 2460 abstract class D { | 2461 abstract class D { |
| 2461 foo(x, [y]); | 2462 foo(x, [y]); |
| 2462 } | 2463 } |
| 2463 class E extends C implements D {}'''); | 2464 class E extends C implements D {}'''); |
| 2464 resolve(source); | 2465 resolve(source); |
| 2465 assertErrors(source, [ | 2466 assertErrors(source, |
| 2466 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2467 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2467 ]); | |
| 2468 verify([source]); | 2468 verify([source]); |
| 2469 } | 2469 } |
| 2470 | 2470 |
| 2471 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() { | 2471 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() { |
| 2472 Source source = addSource(r''' | 2472 Source source = addSource(r''' |
| 2473 class I { | 2473 class I { |
| 2474 int get g {return 1;} | 2474 int get g {return 1;} |
| 2475 } | 2475 } |
| 2476 class C implements I { | 2476 class C implements I { |
| 2477 }'''); | 2477 }'''); |
| 2478 resolve(source); | 2478 resolve(source); |
| 2479 assertErrors(source, [ | 2479 assertErrors(source, |
| 2480 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2480 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2481 ]); | |
| 2482 verify([source]); | 2481 verify([source]); |
| 2483 } | 2482 } |
| 2484 | 2483 |
| 2485 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() { | 2484 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() { |
| 2486 Source source = addSource(r''' | 2485 Source source = addSource(r''' |
| 2487 abstract class A { | 2486 abstract class A { |
| 2488 int get g; | 2487 int get g; |
| 2489 } | 2488 } |
| 2490 class C extends A { | 2489 class C extends A { |
| 2491 }'''); | 2490 }'''); |
| 2492 resolve(source); | 2491 resolve(source); |
| 2493 assertErrors(source, [ | 2492 assertErrors(source, |
| 2494 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2493 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2495 ]); | |
| 2496 verify([source]); | 2494 verify([source]); |
| 2497 } | 2495 } |
| 2498 | 2496 |
| 2499 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() { | 2497 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() { |
| 2500 Source source = addSource(r''' | 2498 Source source = addSource(r''' |
| 2501 class I { | 2499 class I { |
| 2502 m(p) {} | 2500 m(p) {} |
| 2503 } | 2501 } |
| 2504 class C implements I { | 2502 class C implements I { |
| 2505 }'''); | 2503 }'''); |
| 2506 resolve(source); | 2504 resolve(source); |
| 2507 assertErrors(source, [ | 2505 assertErrors(source, |
| 2508 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2506 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2509 ]); | |
| 2510 verify([source]); | 2507 verify([source]); |
| 2511 } | 2508 } |
| 2512 | 2509 |
| 2513 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() { | 2510 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() { |
| 2514 Source source = addSource(r''' | 2511 Source source = addSource(r''' |
| 2515 abstract class A { | 2512 abstract class A { |
| 2516 m(p); | 2513 m(p); |
| 2517 } | 2514 } |
| 2518 class C extends A { | 2515 class C extends A { |
| 2519 }'''); | 2516 }'''); |
| 2520 resolve(source); | 2517 resolve(source); |
| 2521 assertErrors(source, [ | 2518 assertErrors(source, |
| 2522 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2519 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2523 ]); | |
| 2524 verify([source]); | 2520 verify([source]); |
| 2525 } | 2521 } |
| 2526 | 2522 |
| 2527 void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount(
) { | 2523 void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount(
) { |
| 2528 // 7640 | 2524 // 7640 |
| 2529 Source source = addSource(r''' | 2525 Source source = addSource(r''' |
| 2530 abstract class A { | 2526 abstract class A { |
| 2531 int x(int a); | 2527 int x(int a); |
| 2532 } | 2528 } |
| 2533 abstract class B { | 2529 abstract class B { |
| 2534 int x(int a, [int b]); | 2530 int x(int a, [int b]); |
| 2535 } | 2531 } |
| 2536 class C implements A, B { | 2532 class C implements A, B { |
| 2537 }'''); | 2533 }'''); |
| 2538 resolve(source); | 2534 resolve(source); |
| 2539 assertErrors(source, [ | 2535 assertErrors(source, |
| 2540 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2536 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2541 ]); | |
| 2542 verify([source]); | 2537 verify([source]); |
| 2543 } | 2538 } |
| 2544 | 2539 |
| 2545 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() { | 2540 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_getter() { |
| 2546 // 15001 | 2541 // 15001 |
| 2547 Source source = addSource(r''' | 2542 Source source = addSource(r''' |
| 2548 abstract class A { get g1; get g2; } | 2543 abstract class A { get g1; get g2; } |
| 2549 abstract class B implements A { get g1 => 1; } | 2544 abstract class B implements A { get g1 => 1; } |
| 2550 class C extends Object with B {}'''); | 2545 class C extends Object with B {}'''); |
| 2551 resolve(source); | 2546 resolve(source); |
| 2552 assertErrors(source, [ | 2547 assertErrors(source, |
| 2553 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2548 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2554 ]); | |
| 2555 } | 2549 } |
| 2556 | 2550 |
| 2557 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() { | 2551 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_method() { |
| 2558 // 15001 | 2552 // 15001 |
| 2559 Source source = addSource(r''' | 2553 Source source = addSource(r''' |
| 2560 abstract class A { m1(); m2(); } | 2554 abstract class A { m1(); m2(); } |
| 2561 abstract class B implements A { m1() => 1; } | 2555 abstract class B implements A { m1() => 1; } |
| 2562 class C extends Object with B {}'''); | 2556 class C extends Object with B {}'''); |
| 2563 resolve(source); | 2557 resolve(source); |
| 2564 assertErrors(source, [ | 2558 assertErrors(source, |
| 2565 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2559 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2566 ]); | |
| 2567 } | 2560 } |
| 2568 | 2561 |
| 2569 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() { | 2562 void test_nonAbstractClassInheritsAbstractMemberOne_mixinInherits_setter() { |
| 2570 // 15001 | 2563 // 15001 |
| 2571 Source source = addSource(r''' | 2564 Source source = addSource(r''' |
| 2572 abstract class A { set s1(v); set s2(v); } | 2565 abstract class A { set s1(v); set s2(v); } |
| 2573 abstract class B implements A { set s1(v) {} } | 2566 abstract class B implements A { set s1(v) {} } |
| 2574 class C extends Object with B {}'''); | 2567 class C extends Object with B {}'''); |
| 2575 resolve(source); | 2568 resolve(source); |
| 2576 assertErrors(source, [ | 2569 assertErrors(source, |
| 2577 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2570 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2578 ]); | |
| 2579 } | 2571 } |
| 2580 | 2572 |
| 2581 void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter(
) { | 2573 void test_nonAbstractClassInheritsAbstractMemberOne_setter_and_implicitSetter(
) { |
| 2582 // test from language/override_inheritance_abstract_test_14.dart | 2574 // test from language/override_inheritance_abstract_test_14.dart |
| 2583 Source source = addSource(r''' | 2575 Source source = addSource(r''' |
| 2584 abstract class A { | 2576 abstract class A { |
| 2585 set field(_); | 2577 set field(_); |
| 2586 } | 2578 } |
| 2587 abstract class I { | 2579 abstract class I { |
| 2588 var field; | 2580 var field; |
| 2589 } | 2581 } |
| 2590 class B extends A implements I { | 2582 class B extends A implements I { |
| 2591 get field => 0; | 2583 get field => 0; |
| 2592 }'''); | 2584 }'''); |
| 2593 resolve(source); | 2585 resolve(source); |
| 2594 assertErrors(source, [ | 2586 assertErrors(source, |
| 2595 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2587 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2596 ]); | |
| 2597 verify([source]); | 2588 verify([source]); |
| 2598 } | 2589 } |
| 2599 | 2590 |
| 2600 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() { | 2591 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() { |
| 2601 Source source = addSource(r''' | 2592 Source source = addSource(r''' |
| 2602 class I { | 2593 class I { |
| 2603 set s(int i) {} | 2594 set s(int i) {} |
| 2604 } | 2595 } |
| 2605 class C implements I { | 2596 class C implements I { |
| 2606 }'''); | 2597 }'''); |
| 2607 resolve(source); | 2598 resolve(source); |
| 2608 assertErrors(source, [ | 2599 assertErrors(source, |
| 2609 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2600 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2610 ]); | |
| 2611 verify([source]); | 2601 verify([source]); |
| 2612 } | 2602 } |
| 2613 | 2603 |
| 2614 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() { | 2604 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() { |
| 2615 Source source = addSource(r''' | 2605 Source source = addSource(r''' |
| 2616 abstract class A { | 2606 abstract class A { |
| 2617 set s(int i); | 2607 set s(int i); |
| 2618 } | 2608 } |
| 2619 class C extends A { | 2609 class C extends A { |
| 2620 }'''); | 2610 }'''); |
| 2621 resolve(source); | 2611 resolve(source); |
| 2622 assertErrors(source, [ | 2612 assertErrors(source, |
| 2623 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2613 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2624 ]); | |
| 2625 verify([source]); | 2614 verify([source]); |
| 2626 } | 2615 } |
| 2627 | 2616 |
| 2628 void test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() { | 2617 void test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() { |
| 2629 // bug 11154 | 2618 // bug 11154 |
| 2630 Source source = addSource(r''' | 2619 Source source = addSource(r''' |
| 2631 class A { | 2620 class A { |
| 2632 get a => 'a'; | 2621 get a => 'a'; |
| 2633 } | 2622 } |
| 2634 abstract class B implements A { | 2623 abstract class B implements A { |
| 2635 get b => 'b'; | 2624 get b => 'b'; |
| 2636 } | 2625 } |
| 2637 class C extends B { | 2626 class C extends B { |
| 2638 }'''); | 2627 }'''); |
| 2639 resolve(source); | 2628 resolve(source); |
| 2640 assertErrors(source, [ | 2629 assertErrors(source, |
| 2641 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2630 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2642 ]); | |
| 2643 verify([source]); | 2631 verify([source]); |
| 2644 } | 2632 } |
| 2645 | 2633 |
| 2646 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis
singGetter() { | 2634 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis
singGetter() { |
| 2647 // 16133 | 2635 // 16133 |
| 2648 Source source = addSource(r''' | 2636 Source source = addSource(r''' |
| 2649 class I { | 2637 class I { |
| 2650 var v; | 2638 var v; |
| 2651 } | 2639 } |
| 2652 class C implements I { | 2640 class C implements I { |
| 2653 set v(_) {} | 2641 set v(_) {} |
| 2654 }'''); | 2642 }'''); |
| 2655 resolve(source); | 2643 resolve(source); |
| 2656 assertErrors(source, [ | 2644 assertErrors(source, |
| 2657 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2645 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2658 ]); | |
| 2659 verify([source]); | 2646 verify([source]); |
| 2660 } | 2647 } |
| 2661 | 2648 |
| 2662 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis
singSetter() { | 2649 void test_nonAbstractClassInheritsAbstractMemberOne_variable_fromInterface_mis
singSetter() { |
| 2663 // 16133 | 2650 // 16133 |
| 2664 Source source = addSource(r''' | 2651 Source source = addSource(r''' |
| 2665 class I { | 2652 class I { |
| 2666 var v; | 2653 var v; |
| 2667 } | 2654 } |
| 2668 class C implements I { | 2655 class C implements I { |
| 2669 get v => 1; | 2656 get v => 1; |
| 2670 }'''); | 2657 }'''); |
| 2671 resolve(source); | 2658 resolve(source); |
| 2672 assertErrors(source, [ | 2659 assertErrors(source, |
| 2673 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE | 2660 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]); |
| 2674 ]); | |
| 2675 verify([source]); | 2661 verify([source]); |
| 2676 } | 2662 } |
| 2677 | 2663 |
| 2678 void test_nonAbstractClassInheritsAbstractMemberThree() { | 2664 void test_nonAbstractClassInheritsAbstractMemberThree() { |
| 2679 Source source = addSource(r''' | 2665 Source source = addSource(r''' |
| 2680 abstract class A { | 2666 abstract class A { |
| 2681 m(); | 2667 m(); |
| 2682 n(); | 2668 n(); |
| 2683 o(); | 2669 o(); |
| 2684 } | 2670 } |
| 2685 class C extends A { | 2671 class C extends A { |
| 2686 }'''); | 2672 }'''); |
| 2687 resolve(source); | 2673 resolve(source); |
| 2688 assertErrors(source, [ | 2674 assertErrors(source, |
| 2689 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE | 2675 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_THREE]); |
| 2690 ]); | |
| 2691 verify([source]); | 2676 verify([source]); |
| 2692 } | 2677 } |
| 2693 | 2678 |
| 2694 void test_nonAbstractClassInheritsAbstractMemberTwo() { | 2679 void test_nonAbstractClassInheritsAbstractMemberTwo() { |
| 2695 Source source = addSource(r''' | 2680 Source source = addSource(r''' |
| 2696 abstract class A { | 2681 abstract class A { |
| 2697 m(); | 2682 m(); |
| 2698 n(); | 2683 n(); |
| 2699 } | 2684 } |
| 2700 class C extends A { | 2685 class C extends A { |
| 2701 }'''); | 2686 }'''); |
| 2702 resolve(source); | 2687 resolve(source); |
| 2703 assertErrors(source, [ | 2688 assertErrors(source, |
| 2704 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO | 2689 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); |
| 2705 ]); | |
| 2706 verify([source]); | 2690 verify([source]); |
| 2707 } | 2691 } |
| 2708 | 2692 |
| 2709 void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_mis
singBoth() { | 2693 void test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromInterface_mis
singBoth() { |
| 2710 // 16133 | 2694 // 16133 |
| 2711 Source source = addSource(r''' | 2695 Source source = addSource(r''' |
| 2712 class I { | 2696 class I { |
| 2713 var v; | 2697 var v; |
| 2714 } | 2698 } |
| 2715 class C implements I { | 2699 class C implements I { |
| 2716 }'''); | 2700 }'''); |
| 2717 resolve(source); | 2701 resolve(source); |
| 2718 assertErrors(source, [ | 2702 assertErrors(source, |
| 2719 StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO | 2703 [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]); |
| 2720 ]); | |
| 2721 verify([source]); | 2704 verify([source]); |
| 2722 } | 2705 } |
| 2723 | 2706 |
| 2724 void test_nonTypeInCatchClause_noElement() { | 2707 void test_nonTypeInCatchClause_noElement() { |
| 2725 Source source = addSource(r''' | 2708 Source source = addSource(r''' |
| 2726 f() { | 2709 f() { |
| 2727 try { | 2710 try { |
| 2728 } on T catch (e) { | 2711 } on T catch (e) { |
| 2729 } | 2712 } |
| 2730 }'''); | 2713 }'''); |
| (...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3500 | 3483 |
| 3501 void test_voidReturnForGetter() { | 3484 void test_voidReturnForGetter() { |
| 3502 Source source = addSource(r''' | 3485 Source source = addSource(r''' |
| 3503 class S { | 3486 class S { |
| 3504 void get value {} | 3487 void get value {} |
| 3505 }'''); | 3488 }'''); |
| 3506 resolve(source); | 3489 resolve(source); |
| 3507 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); | 3490 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); |
| 3508 } | 3491 } |
| 3509 } | 3492 } |
| OLD | NEW |