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 |
11 import '../reflective_tests.dart'; | 11 import '../reflective_tests.dart'; |
| 12 import '../utils.dart'; |
12 import 'resolver_test.dart'; | 13 import 'resolver_test.dart'; |
13 | 14 |
14 main() { | 15 main() { |
15 groupSep = ' | '; | 16 initializeTestEnvironment(); |
16 runReflectiveTests(StaticWarningCodeTest); | 17 runReflectiveTests(StaticWarningCodeTest); |
17 } | 18 } |
18 | 19 |
19 @reflectiveTest | 20 @reflectiveTest |
20 class StaticWarningCodeTest extends ResolverTestCase { | 21 class StaticWarningCodeTest extends ResolverTestCase { |
21 void fail_undefinedGetter() { | 22 void fail_undefinedGetter() { |
22 Source source = addSource(r''' | 23 Source source = addSource(r''' |
23 '''); | 24 '''); |
24 computeLibrarySourceErrors(source); | 25 computeLibrarySourceErrors(source); |
25 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); | 26 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); |
(...skipping 21 matching lines...) Expand all Loading... |
47 computeLibrarySourceErrors(source); | 48 computeLibrarySourceErrors(source); |
48 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); | 49 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); |
49 verify([source]); | 50 verify([source]); |
50 } | 51 } |
51 | 52 |
52 void test_ambiguousImport_as() { | 53 void test_ambiguousImport_as() { |
53 Source source = addSource(r''' | 54 Source source = addSource(r''' |
54 import 'lib1.dart'; | 55 import 'lib1.dart'; |
55 import 'lib2.dart'; | 56 import 'lib2.dart'; |
56 f(p) {p as N;}'''); | 57 f(p) {p as N;}'''); |
57 addNamedSource("/lib1.dart", r''' | 58 addNamedSource( |
| 59 "/lib1.dart", |
| 60 r''' |
58 library lib1; | 61 library lib1; |
59 class N {}'''); | 62 class N {}'''); |
60 addNamedSource("/lib2.dart", r''' | 63 addNamedSource( |
| 64 "/lib2.dart", |
| 65 r''' |
61 library lib2; | 66 library lib2; |
62 class N {}'''); | 67 class N {}'''); |
63 computeLibrarySourceErrors(source); | 68 computeLibrarySourceErrors(source); |
64 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 69 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
65 } | 70 } |
66 | 71 |
67 void test_ambiguousImport_extends() { | 72 void test_ambiguousImport_extends() { |
68 Source source = addSource(r''' | 73 Source source = addSource(r''' |
69 import 'lib1.dart'; | 74 import 'lib1.dart'; |
70 import 'lib2.dart'; | 75 import 'lib2.dart'; |
71 class A extends N {}'''); | 76 class A extends N {}'''); |
72 addNamedSource("/lib1.dart", r''' | 77 addNamedSource( |
| 78 "/lib1.dart", |
| 79 r''' |
73 library lib1; | 80 library lib1; |
74 class N {}'''); | 81 class N {}'''); |
75 addNamedSource("/lib2.dart", r''' | 82 addNamedSource( |
| 83 "/lib2.dart", |
| 84 r''' |
76 library lib2; | 85 library lib2; |
77 class N {}'''); | 86 class N {}'''); |
78 computeLibrarySourceErrors(source); | 87 computeLibrarySourceErrors(source); |
79 assertErrors(source, [ | 88 assertErrors(source, [ |
80 StaticWarningCode.AMBIGUOUS_IMPORT, | 89 StaticWarningCode.AMBIGUOUS_IMPORT, |
81 CompileTimeErrorCode.EXTENDS_NON_CLASS | 90 CompileTimeErrorCode.EXTENDS_NON_CLASS |
82 ]); | 91 ]); |
83 } | 92 } |
84 | 93 |
85 void test_ambiguousImport_implements() { | 94 void test_ambiguousImport_implements() { |
86 Source source = addSource(r''' | 95 Source source = addSource(r''' |
87 import 'lib1.dart'; | 96 import 'lib1.dart'; |
88 import 'lib2.dart'; | 97 import 'lib2.dart'; |
89 class A implements N {}'''); | 98 class A implements N {}'''); |
90 addNamedSource("/lib1.dart", r''' | 99 addNamedSource( |
| 100 "/lib1.dart", |
| 101 r''' |
91 library lib1; | 102 library lib1; |
92 class N {}'''); | 103 class N {}'''); |
93 addNamedSource("/lib2.dart", r''' | 104 addNamedSource( |
| 105 "/lib2.dart", |
| 106 r''' |
94 library lib2; | 107 library lib2; |
95 class N {}'''); | 108 class N {}'''); |
96 computeLibrarySourceErrors(source); | 109 computeLibrarySourceErrors(source); |
97 assertErrors(source, [ | 110 assertErrors(source, [ |
98 StaticWarningCode.AMBIGUOUS_IMPORT, | 111 StaticWarningCode.AMBIGUOUS_IMPORT, |
99 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS | 112 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS |
100 ]); | 113 ]); |
101 } | 114 } |
102 | 115 |
103 void test_ambiguousImport_inPart() { | 116 void test_ambiguousImport_inPart() { |
104 Source source = addSource(r''' | 117 Source source = addSource(r''' |
105 library lib; | 118 library lib; |
106 import 'lib1.dart'; | 119 import 'lib1.dart'; |
107 import 'lib2.dart'; | 120 import 'lib2.dart'; |
108 part 'part.dart';'''); | 121 part 'part.dart';'''); |
109 addNamedSource("/lib1.dart", r''' | 122 addNamedSource( |
| 123 "/lib1.dart", |
| 124 r''' |
110 library lib1; | 125 library lib1; |
111 class N {}'''); | 126 class N {}'''); |
112 addNamedSource("/lib2.dart", r''' | 127 addNamedSource( |
| 128 "/lib2.dart", |
| 129 r''' |
113 library lib2; | 130 library lib2; |
114 class N {}'''); | 131 class N {}'''); |
115 Source partSource = addNamedSource("/part.dart", r''' | 132 Source partSource = addNamedSource( |
| 133 "/part.dart", |
| 134 r''' |
116 part of lib; | 135 part of lib; |
117 class A extends N {}'''); | 136 class A extends N {}'''); |
118 computeLibrarySourceErrors(source); | 137 computeLibrarySourceErrors(source); |
119 assertErrors(partSource, [ | 138 assertErrors(partSource, [ |
120 StaticWarningCode.AMBIGUOUS_IMPORT, | 139 StaticWarningCode.AMBIGUOUS_IMPORT, |
121 CompileTimeErrorCode.EXTENDS_NON_CLASS | 140 CompileTimeErrorCode.EXTENDS_NON_CLASS |
122 ]); | 141 ]); |
123 } | 142 } |
124 | 143 |
125 void test_ambiguousImport_instanceCreation() { | 144 void test_ambiguousImport_instanceCreation() { |
126 Source source = addSource(r''' | 145 Source source = addSource(r''' |
127 library L; | 146 library L; |
128 import 'lib1.dart'; | 147 import 'lib1.dart'; |
129 import 'lib2.dart'; | 148 import 'lib2.dart'; |
130 f() {new N();}'''); | 149 f() {new N();}'''); |
131 addNamedSource("/lib1.dart", r''' | 150 addNamedSource( |
| 151 "/lib1.dart", |
| 152 r''' |
132 library lib1; | 153 library lib1; |
133 class N {}'''); | 154 class N {}'''); |
134 addNamedSource("/lib2.dart", r''' | 155 addNamedSource( |
| 156 "/lib2.dart", |
| 157 r''' |
135 library lib2; | 158 library lib2; |
136 class N {}'''); | 159 class N {}'''); |
137 computeLibrarySourceErrors(source); | 160 computeLibrarySourceErrors(source); |
138 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 161 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
139 } | 162 } |
140 | 163 |
141 void test_ambiguousImport_is() { | 164 void test_ambiguousImport_is() { |
142 Source source = addSource(r''' | 165 Source source = addSource(r''' |
143 import 'lib1.dart'; | 166 import 'lib1.dart'; |
144 import 'lib2.dart'; | 167 import 'lib2.dart'; |
145 f(p) {p is N;}'''); | 168 f(p) {p is N;}'''); |
146 addNamedSource("/lib1.dart", r''' | 169 addNamedSource( |
| 170 "/lib1.dart", |
| 171 r''' |
147 library lib1; | 172 library lib1; |
148 class N {}'''); | 173 class N {}'''); |
149 addNamedSource("/lib2.dart", r''' | 174 addNamedSource( |
| 175 "/lib2.dart", |
| 176 r''' |
150 library lib2; | 177 library lib2; |
151 class N {}'''); | 178 class N {}'''); |
152 computeLibrarySourceErrors(source); | 179 computeLibrarySourceErrors(source); |
153 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 180 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
154 } | 181 } |
155 | 182 |
156 void test_ambiguousImport_qualifier() { | 183 void test_ambiguousImport_qualifier() { |
157 Source source = addSource(r''' | 184 Source source = addSource(r''' |
158 import 'lib1.dart'; | 185 import 'lib1.dart'; |
159 import 'lib2.dart'; | 186 import 'lib2.dart'; |
160 g() { N.FOO; }'''); | 187 g() { N.FOO; }'''); |
161 addNamedSource("/lib1.dart", r''' | 188 addNamedSource( |
| 189 "/lib1.dart", |
| 190 r''' |
162 library lib1; | 191 library lib1; |
163 class N {}'''); | 192 class N {}'''); |
164 addNamedSource("/lib2.dart", r''' | 193 addNamedSource( |
| 194 "/lib2.dart", |
| 195 r''' |
165 library lib2; | 196 library lib2; |
166 class N {}'''); | 197 class N {}'''); |
167 computeLibrarySourceErrors(source); | 198 computeLibrarySourceErrors(source); |
168 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 199 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
169 } | 200 } |
170 | 201 |
171 void test_ambiguousImport_typeAnnotation() { | 202 void test_ambiguousImport_typeAnnotation() { |
172 Source source = addSource(r''' | 203 Source source = addSource(r''' |
173 import 'lib1.dart'; | 204 import 'lib1.dart'; |
174 import 'lib2.dart'; | 205 import 'lib2.dart'; |
175 typedef N FT(N p); | 206 typedef N FT(N p); |
176 N f(N p) { | 207 N f(N p) { |
177 N v; | 208 N v; |
178 return null; | 209 return null; |
179 } | 210 } |
180 class A { | 211 class A { |
181 N m() { return null; } | 212 N m() { return null; } |
182 } | 213 } |
183 class B<T extends N> {}'''); | 214 class B<T extends N> {}'''); |
184 addNamedSource("/lib1.dart", r''' | 215 addNamedSource( |
| 216 "/lib1.dart", |
| 217 r''' |
185 library lib1; | 218 library lib1; |
186 class N {}'''); | 219 class N {}'''); |
187 addNamedSource("/lib2.dart", r''' | 220 addNamedSource( |
| 221 "/lib2.dart", |
| 222 r''' |
188 library lib2; | 223 library lib2; |
189 class N {}'''); | 224 class N {}'''); |
190 computeLibrarySourceErrors(source); | 225 computeLibrarySourceErrors(source); |
191 assertErrors(source, [ | 226 assertErrors(source, [ |
192 StaticWarningCode.AMBIGUOUS_IMPORT, | 227 StaticWarningCode.AMBIGUOUS_IMPORT, |
193 StaticWarningCode.AMBIGUOUS_IMPORT, | 228 StaticWarningCode.AMBIGUOUS_IMPORT, |
194 StaticWarningCode.AMBIGUOUS_IMPORT, | 229 StaticWarningCode.AMBIGUOUS_IMPORT, |
195 StaticWarningCode.AMBIGUOUS_IMPORT, | 230 StaticWarningCode.AMBIGUOUS_IMPORT, |
196 StaticWarningCode.AMBIGUOUS_IMPORT, | 231 StaticWarningCode.AMBIGUOUS_IMPORT, |
197 StaticWarningCode.AMBIGUOUS_IMPORT, | 232 StaticWarningCode.AMBIGUOUS_IMPORT, |
198 StaticWarningCode.AMBIGUOUS_IMPORT | 233 StaticWarningCode.AMBIGUOUS_IMPORT |
199 ]); | 234 ]); |
200 } | 235 } |
201 | 236 |
202 void test_ambiguousImport_typeArgument_annotation() { | 237 void test_ambiguousImport_typeArgument_annotation() { |
203 Source source = addSource(r''' | 238 Source source = addSource(r''' |
204 import 'lib1.dart'; | 239 import 'lib1.dart'; |
205 import 'lib2.dart'; | 240 import 'lib2.dart'; |
206 class A<T> {} | 241 class A<T> {} |
207 A<N> f() { return null; }'''); | 242 A<N> f() { return null; }'''); |
208 addNamedSource("/lib1.dart", r''' | 243 addNamedSource( |
| 244 "/lib1.dart", |
| 245 r''' |
209 library lib1; | 246 library lib1; |
210 class N {}'''); | 247 class N {}'''); |
211 addNamedSource("/lib2.dart", r''' | 248 addNamedSource( |
| 249 "/lib2.dart", |
| 250 r''' |
212 library lib2; | 251 library lib2; |
213 class N {}'''); | 252 class N {}'''); |
214 computeLibrarySourceErrors(source); | 253 computeLibrarySourceErrors(source); |
215 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 254 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
216 } | 255 } |
217 | 256 |
218 void test_ambiguousImport_typeArgument_instanceCreation() { | 257 void test_ambiguousImport_typeArgument_instanceCreation() { |
219 Source source = addSource(r''' | 258 Source source = addSource(r''' |
220 import 'lib1.dart'; | 259 import 'lib1.dart'; |
221 import 'lib2.dart'; | 260 import 'lib2.dart'; |
222 class A<T> {} | 261 class A<T> {} |
223 f() {new A<N>();}'''); | 262 f() {new A<N>();}'''); |
224 addNamedSource("/lib1.dart", r''' | 263 addNamedSource( |
| 264 "/lib1.dart", |
| 265 r''' |
225 library lib1; | 266 library lib1; |
226 class N {}'''); | 267 class N {}'''); |
227 addNamedSource("/lib2.dart", r''' | 268 addNamedSource( |
| 269 "/lib2.dart", |
| 270 r''' |
228 library lib2; | 271 library lib2; |
229 class N {}'''); | 272 class N {}'''); |
230 computeLibrarySourceErrors(source); | 273 computeLibrarySourceErrors(source); |
231 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 274 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
232 } | 275 } |
233 | 276 |
234 void test_ambiguousImport_varRead() { | 277 void test_ambiguousImport_varRead() { |
235 Source source = addSource(r''' | 278 Source source = addSource(r''' |
236 import 'lib1.dart'; | 279 import 'lib1.dart'; |
237 import 'lib2.dart'; | 280 import 'lib2.dart'; |
238 f() { g(v); } | 281 f() { g(v); } |
239 g(p) {}'''); | 282 g(p) {}'''); |
240 addNamedSource("/lib1.dart", r''' | 283 addNamedSource( |
| 284 "/lib1.dart", |
| 285 r''' |
241 library lib1; | 286 library lib1; |
242 var v;'''); | 287 var v;'''); |
243 addNamedSource("/lib2.dart", r''' | 288 addNamedSource( |
| 289 "/lib2.dart", |
| 290 r''' |
244 library lib2; | 291 library lib2; |
245 var v;'''); | 292 var v;'''); |
246 computeLibrarySourceErrors(source); | 293 computeLibrarySourceErrors(source); |
247 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 294 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
248 } | 295 } |
249 | 296 |
250 void test_ambiguousImport_varWrite() { | 297 void test_ambiguousImport_varWrite() { |
251 Source source = addSource(r''' | 298 Source source = addSource(r''' |
252 import 'lib1.dart'; | 299 import 'lib1.dart'; |
253 import 'lib2.dart'; | 300 import 'lib2.dart'; |
254 f() { v = 0; }'''); | 301 f() { v = 0; }'''); |
255 addNamedSource("/lib1.dart", r''' | 302 addNamedSource( |
| 303 "/lib1.dart", |
| 304 r''' |
256 library lib1; | 305 library lib1; |
257 var v;'''); | 306 var v;'''); |
258 addNamedSource("/lib2.dart", r''' | 307 addNamedSource( |
| 308 "/lib2.dart", |
| 309 r''' |
259 library lib2; | 310 library lib2; |
260 var v;'''); | 311 var v;'''); |
261 computeLibrarySourceErrors(source); | 312 computeLibrarySourceErrors(source); |
262 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 313 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
263 } | 314 } |
264 | 315 |
265 void test_ambiguousImport_withPrefix() { | 316 void test_ambiguousImport_withPrefix() { |
266 Source source = addSource(r''' | 317 Source source = addSource(r''' |
267 library test; | 318 library test; |
268 import 'lib1.dart' as p; | 319 import 'lib1.dart' as p; |
269 import 'lib2.dart' as p; | 320 import 'lib2.dart' as p; |
270 main() { | 321 main() { |
271 p.f(); | 322 p.f(); |
272 }'''); | 323 }'''); |
273 addNamedSource("/lib1.dart", r''' | 324 addNamedSource( |
| 325 "/lib1.dart", |
| 326 r''' |
274 library lib1; | 327 library lib1; |
275 f() {}'''); | 328 f() {}'''); |
276 addNamedSource("/lib2.dart", r''' | 329 addNamedSource( |
| 330 "/lib2.dart", |
| 331 r''' |
277 library lib2; | 332 library lib2; |
278 f() {}'''); | 333 f() {}'''); |
279 computeLibrarySourceErrors(source); | 334 computeLibrarySourceErrors(source); |
280 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | 335 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); |
281 } | 336 } |
282 | 337 |
283 void test_argumentTypeNotAssignable_ambiguousClassName() { | 338 void test_argumentTypeNotAssignable_ambiguousClassName() { |
284 // See dartbug.com/19624 | 339 // See dartbug.com/19624 |
285 Source source = addNamedSource("/lib1.dart", r''' | 340 Source source = addNamedSource( |
| 341 "/lib1.dart", |
| 342 r''' |
286 library lib1; | 343 library lib1; |
287 import 'lib2.dart'; | 344 import 'lib2.dart'; |
288 class _A {} | 345 class _A {} |
289 f() { | 346 f() { |
290 g((_A a) {}); | 347 g((_A a) {}); |
291 }'''); | 348 }'''); |
292 addNamedSource("/lib2.dart", r''' | 349 addNamedSource( |
| 350 "/lib2.dart", |
| 351 r''' |
293 library lib2; | 352 library lib2; |
294 class _A {} | 353 class _A {} |
295 g(h(_A a)) {}'''); | 354 g(h(_A a)) {}'''); |
296 computeLibrarySourceErrors(source); | 355 computeLibrarySourceErrors(source); |
297 // The name _A is private to the library it's defined in, so this is a type | 356 // The name _A is private to the library it's defined in, so this is a type |
298 // mismatch. Furthermore, the error message should mention both _A and the | 357 // mismatch. Furthermore, the error message should mention both _A and the |
299 // filenames so the user can figure out what's going on. | 358 // filenames so the user can figure out what's going on. |
300 List<AnalysisError> errors = analysisContext2.computeErrors(source); | 359 List<AnalysisError> errors = analysisContext2.computeErrors(source); |
301 expect(errors, hasLength(1)); | 360 expect(errors, hasLength(1)); |
302 AnalysisError error = errors[0]; | 361 AnalysisError error = errors[0]; |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); | 963 source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]); |
905 verify([source]); | 964 verify([source]); |
906 } | 965 } |
907 | 966 |
908 void test_conflictingDartImport() { | 967 void test_conflictingDartImport() { |
909 Source source = addSource(r''' | 968 Source source = addSource(r''' |
910 import 'lib.dart'; | 969 import 'lib.dart'; |
911 import 'dart:async'; | 970 import 'dart:async'; |
912 Future f = null; | 971 Future f = null; |
913 Stream s;'''); | 972 Stream s;'''); |
914 addNamedSource("/lib.dart", r''' | 973 addNamedSource( |
| 974 "/lib.dart", |
| 975 r''' |
915 library lib; | 976 library lib; |
916 class Future {}'''); | 977 class Future {}'''); |
917 computeLibrarySourceErrors(source); | 978 computeLibrarySourceErrors(source); |
918 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); | 979 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); |
919 } | 980 } |
920 | 981 |
921 void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter
() { | 982 void test_conflictingInstanceGetterAndSuperclassMember_declField_direct_setter
() { |
922 Source source = addSource(r''' | 983 Source source = addSource(r''' |
923 class A { | 984 class A { |
924 static set v(x) {} | 985 static set v(x) {} |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1445 | 1506 |
1446 void test_importOfNonLibrary() { | 1507 void test_importOfNonLibrary() { |
1447 resolveWithErrors(<String>[ | 1508 resolveWithErrors(<String>[ |
1448 r''' | 1509 r''' |
1449 part of lib; | 1510 part of lib; |
1450 class A {}''', | 1511 class A {}''', |
1451 r''' | 1512 r''' |
1452 library lib; | 1513 library lib; |
1453 import 'lib1.dart' deferred as p; | 1514 import 'lib1.dart' deferred as p; |
1454 var a = new p.A();''' | 1515 var a = new p.A();''' |
1455 ], <ErrorCode>[StaticWarningCode.IMPORT_OF_NON_LIBRARY]); | 1516 ], <ErrorCode>[ |
| 1517 StaticWarningCode.IMPORT_OF_NON_LIBRARY |
| 1518 ]); |
1456 } | 1519 } |
1457 | 1520 |
1458 void test_inconsistentMethodInheritanceGetterAndMethod() { | 1521 void test_inconsistentMethodInheritanceGetterAndMethod() { |
1459 Source source = addSource(r''' | 1522 Source source = addSource(r''' |
1460 abstract class A { | 1523 abstract class A { |
1461 int x(); | 1524 int x(); |
1462 } | 1525 } |
1463 abstract class B { | 1526 abstract class B { |
1464 int get x; | 1527 int get x; |
1465 } | 1528 } |
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2373 var A = 0; | 2436 var A = 0; |
2374 void f() { | 2437 void f() { |
2375 var a = new A(); | 2438 var a = new A(); |
2376 }'''); | 2439 }'''); |
2377 computeLibrarySourceErrors(source); | 2440 computeLibrarySourceErrors(source); |
2378 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); | 2441 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); |
2379 verify([source]); | 2442 verify([source]); |
2380 } | 2443 } |
2381 | 2444 |
2382 void test_newWithNonType_fromLibrary() { | 2445 void test_newWithNonType_fromLibrary() { |
2383 Source source1 = addNamedSource("lib.dart", "class B {}"); | 2446 Source source1 = addNamedSource("/lib.dart", "class B {}"); |
2384 Source source2 = addNamedSource("lib2.dart", r''' | 2447 Source source2 = addNamedSource( |
| 2448 "/lib2.dart", |
| 2449 r''' |
2385 import 'lib.dart' as lib; | 2450 import 'lib.dart' as lib; |
2386 void f() { | 2451 void f() { |
2387 var a = new lib.A(); | 2452 var a = new lib.A(); |
2388 } | 2453 } |
2389 lib.B b;'''); | 2454 lib.B b;'''); |
2390 computeLibrarySourceErrors(source1); | 2455 computeLibrarySourceErrors(source1); |
2391 computeLibrarySourceErrors(source2); | 2456 computeLibrarySourceErrors(source2); |
2392 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); | 2457 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); |
2393 verify([source1]); | 2458 verify([source1]); |
2394 } | 2459 } |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3060 resolveWithErrors(<String>[ | 3125 resolveWithErrors(<String>[ |
3061 r''' | 3126 r''' |
3062 library lib1; | 3127 library lib1; |
3063 class A {}''', | 3128 class A {}''', |
3064 r''' | 3129 r''' |
3065 library root; | 3130 library root; |
3066 import 'lib1.dart' deferred as a; | 3131 import 'lib1.dart' deferred as a; |
3067 f(var v) { | 3132 f(var v) { |
3068 v as a.A; | 3133 v as a.A; |
3069 }''' | 3134 }''' |
3070 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3135 ], <ErrorCode>[ |
| 3136 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3137 ]); |
3071 } | 3138 } |
3072 | 3139 |
3073 void test_typeAnnotationDeferredClass_catchClause() { | 3140 void test_typeAnnotationDeferredClass_catchClause() { |
3074 resolveWithErrors(<String>[ | 3141 resolveWithErrors(<String>[ |
3075 r''' | 3142 r''' |
3076 library lib1; | 3143 library lib1; |
3077 class A {}''', | 3144 class A {}''', |
3078 r''' | 3145 r''' |
3079 library root; | 3146 library root; |
3080 import 'lib1.dart' deferred as a; | 3147 import 'lib1.dart' deferred as a; |
3081 f(var v) { | 3148 f(var v) { |
3082 try { | 3149 try { |
3083 } on a.A { | 3150 } on a.A { |
3084 } | 3151 } |
3085 }''' | 3152 }''' |
3086 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3153 ], <ErrorCode>[ |
| 3154 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3155 ]); |
3087 } | 3156 } |
3088 | 3157 |
3089 void test_typeAnnotationDeferredClass_fieldFormalParameter() { | 3158 void test_typeAnnotationDeferredClass_fieldFormalParameter() { |
3090 resolveWithErrors(<String>[ | 3159 resolveWithErrors(<String>[ |
3091 r''' | 3160 r''' |
3092 library lib1; | 3161 library lib1; |
3093 class A {}''', | 3162 class A {}''', |
3094 r''' | 3163 r''' |
3095 library root; | 3164 library root; |
3096 import 'lib1.dart' deferred as a; | 3165 import 'lib1.dart' deferred as a; |
3097 class C { | 3166 class C { |
3098 var v; | 3167 var v; |
3099 C(a.A this.v); | 3168 C(a.A this.v); |
3100 }''' | 3169 }''' |
3101 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3170 ], <ErrorCode>[ |
| 3171 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3172 ]); |
3102 } | 3173 } |
3103 | 3174 |
3104 void test_typeAnnotationDeferredClass_functionDeclaration_returnType() { | 3175 void test_typeAnnotationDeferredClass_functionDeclaration_returnType() { |
3105 resolveWithErrors(<String>[ | 3176 resolveWithErrors(<String>[ |
3106 r''' | 3177 r''' |
3107 library lib1; | 3178 library lib1; |
3108 class A {}''', | 3179 class A {}''', |
3109 r''' | 3180 r''' |
3110 library root; | 3181 library root; |
3111 import 'lib1.dart' deferred as a; | 3182 import 'lib1.dart' deferred as a; |
3112 a.A f() { return null; }''' | 3183 a.A f() { return null; }''' |
3113 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3184 ], <ErrorCode>[ |
| 3185 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3186 ]); |
3114 } | 3187 } |
3115 | 3188 |
3116 void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType(
) { | 3189 void test_typeAnnotationDeferredClass_functionTypedFormalParameter_returnType(
) { |
3117 resolveWithErrors(<String>[ | 3190 resolveWithErrors(<String>[ |
3118 r''' | 3191 r''' |
3119 library lib1; | 3192 library lib1; |
3120 class A {}''', | 3193 class A {}''', |
3121 r''' | 3194 r''' |
3122 library root; | 3195 library root; |
3123 import 'lib1.dart' deferred as a; | 3196 import 'lib1.dart' deferred as a; |
3124 f(a.A g()) {}''' | 3197 f(a.A g()) {}''' |
3125 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3198 ], <ErrorCode>[ |
| 3199 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3200 ]); |
3126 } | 3201 } |
3127 | 3202 |
3128 void test_typeAnnotationDeferredClass_isExpression() { | 3203 void test_typeAnnotationDeferredClass_isExpression() { |
3129 resolveWithErrors(<String>[ | 3204 resolveWithErrors(<String>[ |
3130 r''' | 3205 r''' |
3131 library lib1; | 3206 library lib1; |
3132 class A {}''', | 3207 class A {}''', |
3133 r''' | 3208 r''' |
3134 library root; | 3209 library root; |
3135 import 'lib1.dart' deferred as a; | 3210 import 'lib1.dart' deferred as a; |
3136 f(var v) { | 3211 f(var v) { |
3137 bool b = v is a.A; | 3212 bool b = v is a.A; |
3138 }''' | 3213 }''' |
3139 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3214 ], <ErrorCode>[ |
| 3215 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3216 ]); |
3140 } | 3217 } |
3141 | 3218 |
3142 void test_typeAnnotationDeferredClass_methodDeclaration_returnType() { | 3219 void test_typeAnnotationDeferredClass_methodDeclaration_returnType() { |
3143 resolveWithErrors(<String>[ | 3220 resolveWithErrors(<String>[ |
3144 r''' | 3221 r''' |
3145 library lib1; | 3222 library lib1; |
3146 class A {}''', | 3223 class A {}''', |
3147 r''' | 3224 r''' |
3148 library root; | 3225 library root; |
3149 import 'lib1.dart' deferred as a; | 3226 import 'lib1.dart' deferred as a; |
3150 class C { | 3227 class C { |
3151 a.A m() { return null; } | 3228 a.A m() { return null; } |
3152 }''' | 3229 }''' |
3153 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3230 ], <ErrorCode>[ |
| 3231 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3232 ]); |
3154 } | 3233 } |
3155 | 3234 |
3156 void test_typeAnnotationDeferredClass_simpleFormalParameter() { | 3235 void test_typeAnnotationDeferredClass_simpleFormalParameter() { |
3157 resolveWithErrors(<String>[ | 3236 resolveWithErrors(<String>[ |
3158 r''' | 3237 r''' |
3159 library lib1; | 3238 library lib1; |
3160 class A {}''', | 3239 class A {}''', |
3161 r''' | 3240 r''' |
3162 library root; | 3241 library root; |
3163 import 'lib1.dart' deferred as a; | 3242 import 'lib1.dart' deferred as a; |
3164 f(a.A v) {}''' | 3243 f(a.A v) {}''' |
3165 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3244 ], <ErrorCode>[ |
| 3245 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3246 ]); |
3166 } | 3247 } |
3167 | 3248 |
3168 void test_typeAnnotationDeferredClass_typeArgumentList() { | 3249 void test_typeAnnotationDeferredClass_typeArgumentList() { |
3169 resolveWithErrors(<String>[ | 3250 resolveWithErrors(<String>[ |
3170 r''' | 3251 r''' |
3171 library lib1; | 3252 library lib1; |
3172 class A {}''', | 3253 class A {}''', |
3173 r''' | 3254 r''' |
3174 library root; | 3255 library root; |
3175 import 'lib1.dart' deferred as a; | 3256 import 'lib1.dart' deferred as a; |
3176 class C<E> {} | 3257 class C<E> {} |
3177 C<a.A> c;''' | 3258 C<a.A> c;''' |
3178 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3259 ], <ErrorCode>[ |
| 3260 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3261 ]); |
3179 } | 3262 } |
3180 | 3263 |
3181 void test_typeAnnotationDeferredClass_typeArgumentList2() { | 3264 void test_typeAnnotationDeferredClass_typeArgumentList2() { |
3182 resolveWithErrors(<String>[ | 3265 resolveWithErrors(<String>[ |
3183 r''' | 3266 r''' |
3184 library lib1; | 3267 library lib1; |
3185 class A {}''', | 3268 class A {}''', |
3186 r''' | 3269 r''' |
3187 library root; | 3270 library root; |
3188 import 'lib1.dart' deferred as a; | 3271 import 'lib1.dart' deferred as a; |
3189 class C<E, F> {} | 3272 class C<E, F> {} |
3190 C<a.A, a.A> c;''' | 3273 C<a.A, a.A> c;''' |
3191 ], <ErrorCode>[ | 3274 ], <ErrorCode>[ |
3192 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, | 3275 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS, |
3193 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS | 3276 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
3194 ]); | 3277 ]); |
3195 } | 3278 } |
3196 | 3279 |
3197 void test_typeAnnotationDeferredClass_typeParameter_bound() { | 3280 void test_typeAnnotationDeferredClass_typeParameter_bound() { |
3198 resolveWithErrors(<String>[ | 3281 resolveWithErrors(<String>[ |
3199 r''' | 3282 r''' |
3200 library lib1; | 3283 library lib1; |
3201 class A {}''', | 3284 class A {}''', |
3202 r''' | 3285 r''' |
3203 library root; | 3286 library root; |
3204 import 'lib1.dart' deferred as a; | 3287 import 'lib1.dart' deferred as a; |
3205 class C<E extends a.A> {}''' | 3288 class C<E extends a.A> {}''' |
3206 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3289 ], <ErrorCode>[ |
| 3290 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3291 ]); |
3207 } | 3292 } |
3208 | 3293 |
3209 void test_typeAnnotationDeferredClass_variableDeclarationList() { | 3294 void test_typeAnnotationDeferredClass_variableDeclarationList() { |
3210 resolveWithErrors(<String>[ | 3295 resolveWithErrors(<String>[ |
3211 r''' | 3296 r''' |
3212 library lib1; | 3297 library lib1; |
3213 class A {}''', | 3298 class A {}''', |
3214 r''' | 3299 r''' |
3215 library root; | 3300 library root; |
3216 import 'lib1.dart' deferred as a; | 3301 import 'lib1.dart' deferred as a; |
3217 a.A v;''' | 3302 a.A v;''' |
3218 ], <ErrorCode>[StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS]); | 3303 ], <ErrorCode>[ |
| 3304 StaticWarningCode.TYPE_ANNOTATION_DEFERRED_CLASS |
| 3305 ]); |
3219 } | 3306 } |
3220 | 3307 |
3221 void test_typeParameterReferencedByStatic_field() { | 3308 void test_typeParameterReferencedByStatic_field() { |
3222 Source source = addSource(r''' | 3309 Source source = addSource(r''' |
3223 class A<K> { | 3310 class A<K> { |
3224 static K k; | 3311 static K k; |
3225 }'''); | 3312 }'''); |
3226 computeLibrarySourceErrors(source); | 3313 computeLibrarySourceErrors(source); |
3227 assertErrors( | 3314 assertErrors( |
3228 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | 3315 source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3336 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); | 3423 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); |
3337 } | 3424 } |
3338 | 3425 |
3339 void test_undefinedClassBoolean_variableDeclaration() { | 3426 void test_undefinedClassBoolean_variableDeclaration() { |
3340 Source source = addSource("f() { boolean v; }"); | 3427 Source source = addSource("f() { boolean v; }"); |
3341 computeLibrarySourceErrors(source); | 3428 computeLibrarySourceErrors(source); |
3342 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); | 3429 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); |
3343 } | 3430 } |
3344 | 3431 |
3345 void test_undefinedGetter_fromLibrary() { | 3432 void test_undefinedGetter_fromLibrary() { |
3346 Source source1 = addNamedSource("lib.dart", ""); | 3433 Source source1 = addNamedSource("/lib.dart", ""); |
3347 Source source2 = addNamedSource("lib2.dart", r''' | 3434 Source source2 = addNamedSource( |
| 3435 "/lib2.dart", |
| 3436 r''' |
3348 import 'lib.dart' as lib; | 3437 import 'lib.dart' as lib; |
3349 void f() { | 3438 void f() { |
3350 var g = lib.gg; | 3439 var g = lib.gg; |
3351 }'''); | 3440 }'''); |
3352 computeLibrarySourceErrors(source1); | 3441 computeLibrarySourceErrors(source1); |
3353 computeLibrarySourceErrors(source2); | 3442 computeLibrarySourceErrors(source2); |
3354 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); | 3443 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); |
3355 verify([source1]); | 3444 verify([source1]); |
3356 } | 3445 } |
3357 | 3446 |
(...skipping 30 matching lines...) Expand all Loading... |
3388 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3477 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
3389 } | 3478 } |
3390 | 3479 |
3391 void test_undefinedIdentifier_methodInvocation() { | 3480 void test_undefinedIdentifier_methodInvocation() { |
3392 Source source = addSource("f() { C.m(); }"); | 3481 Source source = addSource("f() { C.m(); }"); |
3393 computeLibrarySourceErrors(source); | 3482 computeLibrarySourceErrors(source); |
3394 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3483 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
3395 } | 3484 } |
3396 | 3485 |
3397 void test_undefinedIdentifier_private_getter() { | 3486 void test_undefinedIdentifier_private_getter() { |
3398 addNamedSource("/lib.dart", r''' | 3487 addNamedSource( |
| 3488 "/lib.dart", |
| 3489 r''' |
3399 library lib; | 3490 library lib; |
3400 class A { | 3491 class A { |
3401 var _foo; | 3492 var _foo; |
3402 }'''); | 3493 }'''); |
3403 Source source = addSource(r''' | 3494 Source source = addSource(r''' |
3404 import 'lib.dart'; | 3495 import 'lib.dart'; |
3405 class B extends A { | 3496 class B extends A { |
3406 test() { | 3497 test() { |
3407 var v = _foo; | 3498 var v = _foo; |
3408 } | 3499 } |
3409 }'''); | 3500 }'''); |
3410 computeLibrarySourceErrors(source); | 3501 computeLibrarySourceErrors(source); |
3411 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3502 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
3412 } | 3503 } |
3413 | 3504 |
3414 void test_undefinedIdentifier_private_setter() { | 3505 void test_undefinedIdentifier_private_setter() { |
3415 addNamedSource("/lib.dart", r''' | 3506 addNamedSource( |
| 3507 "/lib.dart", |
| 3508 r''' |
3416 library lib; | 3509 library lib; |
3417 class A { | 3510 class A { |
3418 var _foo; | 3511 var _foo; |
3419 }'''); | 3512 }'''); |
3420 Source source = addSource(r''' | 3513 Source source = addSource(r''' |
3421 import 'lib.dart'; | 3514 import 'lib.dart'; |
3422 class B extends A { | 3515 class B extends A { |
3423 test() { | 3516 test() { |
3424 _foo = 42; | 3517 _foo = 42; |
3425 } | 3518 } |
3426 }'''); | 3519 }'''); |
3427 computeLibrarySourceErrors(source); | 3520 computeLibrarySourceErrors(source); |
3428 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | 3521 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); |
3429 } | 3522 } |
3430 | 3523 |
3431 void test_undefinedNamedParameter() { | 3524 void test_undefinedNamedParameter() { |
3432 Source source = addSource(r''' | 3525 Source source = addSource(r''' |
3433 f({a, b}) {} | 3526 f({a, b}) {} |
3434 main() { | 3527 main() { |
3435 f(c: 1); | 3528 f(c: 1); |
3436 }'''); | 3529 }'''); |
3437 computeLibrarySourceErrors(source); | 3530 computeLibrarySourceErrors(source); |
3438 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); | 3531 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); |
3439 // no verify(), 'c' is not resolved | 3532 // no verify(), 'c' is not resolved |
3440 } | 3533 } |
3441 | 3534 |
3442 void test_undefinedSetter() { | 3535 void test_undefinedSetter() { |
3443 Source source1 = addNamedSource("lib.dart", ""); | 3536 Source source1 = addNamedSource("/lib.dart", ""); |
3444 Source source2 = addNamedSource("lib2.dart", r''' | 3537 Source source2 = addNamedSource( |
| 3538 "/lib2.dart", |
| 3539 r''' |
3445 import 'lib.dart' as lib; | 3540 import 'lib.dart' as lib; |
3446 void f() { | 3541 void f() { |
3447 lib.gg = null; | 3542 lib.gg = null; |
3448 }'''); | 3543 }'''); |
3449 computeLibrarySourceErrors(source1); | 3544 computeLibrarySourceErrors(source1); |
3450 computeLibrarySourceErrors(source2); | 3545 computeLibrarySourceErrors(source2); |
3451 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); | 3546 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); |
3452 } | 3547 } |
3453 | 3548 |
3454 void test_undefinedStaticMethodOrGetter_getter() { | 3549 void test_undefinedStaticMethodOrGetter_getter() { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3512 | 3607 |
3513 void test_voidReturnForGetter() { | 3608 void test_voidReturnForGetter() { |
3514 Source source = addSource(r''' | 3609 Source source = addSource(r''' |
3515 class S { | 3610 class S { |
3516 void get value {} | 3611 void get value {} |
3517 }'''); | 3612 }'''); |
3518 computeLibrarySourceErrors(source); | 3613 computeLibrarySourceErrors(source); |
3519 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); | 3614 assertErrors(source, [StaticWarningCode.VOID_RETURN_FOR_GETTER]); |
3520 } | 3615 } |
3521 } | 3616 } |
OLD | NEW |