OLD | NEW |
| (Empty) |
1 // This code was auto-generated, is not intended to be edited, and is subject to | |
2 // significant change. Please see the README file for more information. | |
3 library engine.resolver_test; | |
4 import 'package:analyzer_experimental/src/generated/java_core.dart'; | |
5 import 'package:analyzer_experimental/src/generated/java_junit.dart'; | |
6 import 'package:analyzer_experimental/src/generated/source_io.dart'; | |
7 import 'package:analyzer_experimental/src/generated/error.dart'; | |
8 import 'package:analyzer_experimental/src/generated/scanner.dart'; | |
9 import 'package:analyzer_experimental/src/generated/ast.dart'; | |
10 import 'package:analyzer_experimental/src/generated/parser.dart' show ParserErro
rCode; | |
11 import 'package:analyzer_experimental/src/generated/element.dart'; | |
12 import 'package:analyzer_experimental/src/generated/resolver.dart'; | |
13 import 'package:analyzer_experimental/src/generated/engine.dart'; | |
14 import 'package:analyzer_experimental/src/generated/java_engine_io.dart'; | |
15 import 'package:analyzer_experimental/src/generated/sdk.dart' show DartSdk; | |
16 import 'package:analyzer_experimental/src/generated/sdk_io.dart' show DirectoryB
asedDartSdk; | |
17 import 'package:unittest/unittest.dart' as _ut; | |
18 import 'test_support.dart'; | |
19 import 'ast_test.dart' show ASTFactory; | |
20 import 'element_test.dart' show ElementFactory; | |
21 class TypePropagationTest extends ResolverTestCase { | |
22 void fail_functionExpression_asInvocationArgument_functionExpressionInvocation
() { | |
23 String code = EngineTestCase.createSource([ | |
24 "main() {", | |
25 " (f(String value)) {} ((v) {", | |
26 " v;", | |
27 " });", | |
28 "}"]); | |
29 Source source = addSource(code); | |
30 LibraryElement library = resolve(source); | |
31 assertNoErrors(source); | |
32 verify([source]); | |
33 CompilationUnit unit = resolveCompilationUnit(source, library); | |
34 Type2 dynamicType = typeProvider.dynamicType; | |
35 Type2 stringType = typeProvider.stringType; | |
36 FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", Forma
lParameter); | |
37 JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType); | |
38 JUnitTestCase.assertSame(dynamicType, vParameter.identifier.staticType); | |
39 SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", Sim
pleIdentifier); | |
40 JUnitTestCase.assertSame(stringType, vIdentifier.propagatedType); | |
41 JUnitTestCase.assertSame(dynamicType, vIdentifier.staticType); | |
42 } | |
43 void fail_propagatedReturnType_functionExpression() { | |
44 String code = EngineTestCase.createSource(["main() {", " var v = (() {retur
n 42;})();", "}"]); | |
45 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.intT
ype); | |
46 } | |
47 void test_as() { | |
48 Source source = addSource(EngineTestCase.createSource([ | |
49 "class A {", | |
50 " bool get g => true;", | |
51 "}", | |
52 "A f(var p) {", | |
53 " if ((p as A).g) {", | |
54 " return p;", | |
55 " } else {", | |
56 " return null;", | |
57 " }", | |
58 "}"])); | |
59 LibraryElement library = resolve(source); | |
60 assertNoErrors(source); | |
61 verify([source]); | |
62 CompilationUnit unit = resolveCompilationUnit(source, library); | |
63 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
64 InterfaceType typeA = classA.element.type; | |
65 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
66 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
67 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
68 ReturnStatement statement = ((ifStatement.thenStatement as Block)).statement
s[0] as ReturnStatement; | |
69 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
70 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
71 } | |
72 void test_assert() { | |
73 Source source = addSource(EngineTestCase.createSource([ | |
74 "class A {}", | |
75 "A f(var p) {", | |
76 " assert (p is A);", | |
77 " return p;", | |
78 "}"])); | |
79 LibraryElement library = resolve(source); | |
80 assertNoErrors(source); | |
81 verify([source]); | |
82 CompilationUnit unit = resolveCompilationUnit(source, library); | |
83 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
84 InterfaceType typeA = classA.element.type; | |
85 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
86 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
87 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
88 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
89 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
90 } | |
91 void test_assignment() { | |
92 Source source = addSource(EngineTestCase.createSource(["f() {", " var v;",
" v = 0;", " return v;", "}"])); | |
93 LibraryElement library = resolve(source); | |
94 assertNoErrors(source); | |
95 verify([source]); | |
96 CompilationUnit unit = resolveCompilationUnit(source, library); | |
97 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
98 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
99 ReturnStatement statement = body.block.statements[2] as ReturnStatement; | |
100 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
101 JUnitTestCase.assertSame(typeProvider.intType, variableName.propagatedType); | |
102 } | |
103 void test_assignment_afterInitializer() { | |
104 Source source = addSource(EngineTestCase.createSource(["f() {", " var v = 0
;", " v = 1.0;", " return v;", "}"])); | |
105 LibraryElement library = resolve(source); | |
106 assertNoErrors(source); | |
107 verify([source]); | |
108 CompilationUnit unit = resolveCompilationUnit(source, library); | |
109 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
110 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
111 ReturnStatement statement = body.block.statements[2] as ReturnStatement; | |
112 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
113 JUnitTestCase.assertSame(typeProvider.doubleType, variableName.propagatedTyp
e); | |
114 } | |
115 void test_forEach() { | |
116 String code = EngineTestCase.createSource([ | |
117 "f(List<String> p) {", | |
118 " for (var e in p) {", | |
119 " e;", | |
120 " }", | |
121 "}"]); | |
122 Source source = addSource(code); | |
123 LibraryElement library = resolve(source); | |
124 assertNoErrors(source); | |
125 verify([source]); | |
126 CompilationUnit unit = resolveCompilationUnit(source, library); | |
127 InterfaceType stringType = typeProvider.stringType; | |
128 { | |
129 SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "e in",
SimpleIdentifier); | |
130 JUnitTestCase.assertSame(stringType, identifier.propagatedType); | |
131 } | |
132 { | |
133 SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "e;", Si
mpleIdentifier); | |
134 JUnitTestCase.assertSame(stringType, identifier.propagatedType); | |
135 } | |
136 } | |
137 void test_functionExpression_asInvocationArgument() { | |
138 String code = EngineTestCase.createSource([ | |
139 "class MyMap<K, V> {", | |
140 " forEach(f(K key, V value)) {}", | |
141 "}", | |
142 "f(MyMap<int, String> m) {", | |
143 " m.forEach((k, v) {", | |
144 " k;", | |
145 " v;", | |
146 " });", | |
147 "}"]); | |
148 Source source = addSource(code); | |
149 LibraryElement library = resolve(source); | |
150 assertNoErrors(source); | |
151 verify([source]); | |
152 CompilationUnit unit = resolveCompilationUnit(source, library); | |
153 Type2 intType = typeProvider.intType; | |
154 FormalParameter kParameter = EngineTestCase.findNode(unit, code, "k, ", Simp
leFormalParameter); | |
155 JUnitTestCase.assertSame(intType, kParameter.identifier.propagatedType); | |
156 SimpleIdentifier kIdentifier = EngineTestCase.findNode(unit, code, "k;", Sim
pleIdentifier); | |
157 JUnitTestCase.assertSame(intType, kIdentifier.propagatedType); | |
158 JUnitTestCase.assertSame(typeProvider.dynamicType, kIdentifier.staticType); | |
159 Type2 stringType = typeProvider.stringType; | |
160 FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", Simpl
eFormalParameter); | |
161 JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType); | |
162 SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", Sim
pleIdentifier); | |
163 JUnitTestCase.assertSame(stringType, vIdentifier.propagatedType); | |
164 JUnitTestCase.assertSame(typeProvider.dynamicType, vIdentifier.staticType); | |
165 } | |
166 void test_functionExpression_asInvocationArgument_fromInferredInvocation() { | |
167 String code = EngineTestCase.createSource([ | |
168 "class MyMap<K, V> {", | |
169 " forEach(f(K key, V value)) {}", | |
170 "}", | |
171 "f(MyMap<int, String> m) {", | |
172 " var m2 = m;", | |
173 " m2.forEach((k, v) {});", | |
174 "}"]); | |
175 Source source = addSource(code); | |
176 LibraryElement library = resolve(source); | |
177 assertNoErrors(source); | |
178 verify([source]); | |
179 CompilationUnit unit = resolveCompilationUnit(source, library); | |
180 Type2 intType = typeProvider.intType; | |
181 FormalParameter kParameter = EngineTestCase.findNode(unit, code, "k, ", Simp
leFormalParameter); | |
182 JUnitTestCase.assertSame(intType, kParameter.identifier.propagatedType); | |
183 Type2 stringType = typeProvider.stringType; | |
184 FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", Simpl
eFormalParameter); | |
185 JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType); | |
186 } | |
187 void test_functionExpression_asInvocationArgument_keepIfLessSpecific() { | |
188 String code = EngineTestCase.createSource([ | |
189 "class MyList {", | |
190 " forEach(f(Object value)) {}", | |
191 "}", | |
192 "f(MyList list) {", | |
193 " list.forEach((int v) {", | |
194 " v;", | |
195 " });", | |
196 "}"]); | |
197 Source source = addSource(code); | |
198 LibraryElement library = resolve(source); | |
199 assertNoErrors(source); | |
200 verify([source]); | |
201 CompilationUnit unit = resolveCompilationUnit(source, library); | |
202 Type2 intType = typeProvider.intType; | |
203 FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", Simpl
eFormalParameter); | |
204 JUnitTestCase.assertSame(null, vParameter.identifier.propagatedType); | |
205 JUnitTestCase.assertSame(intType, vParameter.identifier.staticType); | |
206 SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", Sim
pleIdentifier); | |
207 JUnitTestCase.assertSame(intType, vIdentifier.staticType); | |
208 JUnitTestCase.assertSame(null, vIdentifier.propagatedType); | |
209 } | |
210 void test_functionExpression_asInvocationArgument_replaceIfMoreSpecific() { | |
211 String code = EngineTestCase.createSource([ | |
212 "class MyList<E> {", | |
213 " forEach(f(E value)) {}", | |
214 "}", | |
215 "f(MyList<String> list) {", | |
216 " list.forEach((Object v) {", | |
217 " v;", | |
218 " });", | |
219 "}"]); | |
220 Source source = addSource(code); | |
221 LibraryElement library = resolve(source); | |
222 assertNoErrors(source); | |
223 verify([source]); | |
224 CompilationUnit unit = resolveCompilationUnit(source, library); | |
225 Type2 stringType = typeProvider.stringType; | |
226 FormalParameter vParameter = EngineTestCase.findNode(unit, code, "v)", Simpl
eFormalParameter); | |
227 JUnitTestCase.assertSame(stringType, vParameter.identifier.propagatedType); | |
228 JUnitTestCase.assertSame(typeProvider.objectType, vParameter.identifier.stat
icType); | |
229 SimpleIdentifier vIdentifier = EngineTestCase.findNode(unit, code, "v;", Sim
pleIdentifier); | |
230 JUnitTestCase.assertSame(stringType, vIdentifier.propagatedType); | |
231 } | |
232 void test_Future_then() { | |
233 String code = EngineTestCase.createSource([ | |
234 "import 'dart:async';", | |
235 "main(Future<int> firstFuture) {", | |
236 " firstFuture.then((p1) {", | |
237 " return 1.0;", | |
238 " }).then((p2) {", | |
239 " return new Future<String>.value('str');", | |
240 " }).then((p3) {", | |
241 " });", | |
242 "}"]); | |
243 Source source = addSource(code); | |
244 LibraryElement library = resolve(source); | |
245 assertNoErrors(source); | |
246 verify([source]); | |
247 CompilationUnit unit = resolveCompilationUnit(source, library); | |
248 FormalParameter p1 = EngineTestCase.findNode(unit, code, "p1) {", SimpleForm
alParameter); | |
249 JUnitTestCase.assertSame(typeProvider.intType, p1.identifier.propagatedType)
; | |
250 FormalParameter p2 = EngineTestCase.findNode(unit, code, "p2) {", SimpleForm
alParameter); | |
251 JUnitTestCase.assertSame(typeProvider.doubleType, p2.identifier.propagatedTy
pe); | |
252 FormalParameter p3 = EngineTestCase.findNode(unit, code, "p3) {", SimpleForm
alParameter); | |
253 JUnitTestCase.assertSame(typeProvider.stringType, p3.identifier.propagatedTy
pe); | |
254 } | |
255 void test_initializer() { | |
256 Source source = addSource(EngineTestCase.createSource(["f() {", " var v = 0
;", " return v;", "}"])); | |
257 LibraryElement library = resolve(source); | |
258 assertNoErrors(source); | |
259 verify([source]); | |
260 CompilationUnit unit = resolveCompilationUnit(source, library); | |
261 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
262 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
263 NodeList<Statement> statements = body.block.statements; | |
264 { | |
265 VariableDeclarationStatement statement = statements[0] as VariableDeclarat
ionStatement; | |
266 SimpleIdentifier variableName = statement.variables.variables[0].name; | |
267 JUnitTestCase.assertSame(typeProvider.dynamicType, variableName.staticType
); | |
268 JUnitTestCase.assertSame(typeProvider.intType, variableName.propagatedType
); | |
269 } | |
270 { | |
271 ReturnStatement statement = statements[1] as ReturnStatement; | |
272 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
273 JUnitTestCase.assertSame(typeProvider.intType, variableName.propagatedType
); | |
274 } | |
275 } | |
276 void test_initializer_dereference() { | |
277 Source source = addSource(EngineTestCase.createSource(["f() {", " var v = '
String';", " v.", "}"])); | |
278 LibraryElement library = resolve(source); | |
279 CompilationUnit unit = resolveCompilationUnit(source, library); | |
280 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
281 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
282 ExpressionStatement statement = body.block.statements[1] as ExpressionStatem
ent; | |
283 PrefixedIdentifier invocation = statement.expression as PrefixedIdentifier; | |
284 SimpleIdentifier variableName = invocation.prefix; | |
285 JUnitTestCase.assertSame(typeProvider.stringType, variableName.propagatedTyp
e); | |
286 } | |
287 void test_is_conditional() { | |
288 Source source = addSource(EngineTestCase.createSource([ | |
289 "class A {}", | |
290 "A f(var p) {", | |
291 " return (p is A) ? p : null;", | |
292 "}"])); | |
293 LibraryElement library = resolve(source); | |
294 assertNoErrors(source); | |
295 verify([source]); | |
296 CompilationUnit unit = resolveCompilationUnit(source, library); | |
297 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
298 InterfaceType typeA = classA.element.type; | |
299 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
300 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
301 ReturnStatement statement = body.block.statements[0] as ReturnStatement; | |
302 ConditionalExpression conditional = statement.expression as ConditionalExpre
ssion; | |
303 SimpleIdentifier variableName = conditional.thenExpression as SimpleIdentifi
er; | |
304 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
305 } | |
306 void test_is_if() { | |
307 Source source = addSource(EngineTestCase.createSource([ | |
308 "class A {}", | |
309 "A f(var p) {", | |
310 " if (p is A) {", | |
311 " return p;", | |
312 " } else {", | |
313 " return null;", | |
314 " }", | |
315 "}"])); | |
316 LibraryElement library = resolve(source); | |
317 assertNoErrors(source); | |
318 verify([source]); | |
319 CompilationUnit unit = resolveCompilationUnit(source, library); | |
320 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
321 InterfaceType typeA = classA.element.type; | |
322 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
323 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
324 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
325 ReturnStatement statement = ((ifStatement.thenStatement as Block)).statement
s[0] as ReturnStatement; | |
326 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
327 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
328 } | |
329 void test_is_if_lessSpecific() { | |
330 Source source = addSource(EngineTestCase.createSource([ | |
331 "class A {}", | |
332 "A f(A p) {", | |
333 " if (p is String) {", | |
334 " return p;", | |
335 " } else {", | |
336 " return null;", | |
337 " }", | |
338 "}"])); | |
339 LibraryElement library = resolve(source); | |
340 assertNoErrors(source); | |
341 verify([source]); | |
342 CompilationUnit unit = resolveCompilationUnit(source, library); | |
343 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
344 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
345 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
346 ReturnStatement statement = ((ifStatement.thenStatement as Block)).statement
s[0] as ReturnStatement; | |
347 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
348 JUnitTestCase.assertSame(null, variableName.propagatedType); | |
349 } | |
350 void test_is_if_logicalAnd() { | |
351 Source source = addSource(EngineTestCase.createSource([ | |
352 "class A {}", | |
353 "A f(var p) {", | |
354 " if (p is A && p != null) {", | |
355 " return p;", | |
356 " } else {", | |
357 " return null;", | |
358 " }", | |
359 "}"])); | |
360 LibraryElement library = resolve(source); | |
361 assertNoErrors(source); | |
362 verify([source]); | |
363 CompilationUnit unit = resolveCompilationUnit(source, library); | |
364 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
365 InterfaceType typeA = classA.element.type; | |
366 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
367 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
368 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
369 ReturnStatement statement = ((ifStatement.thenStatement as Block)).statement
s[0] as ReturnStatement; | |
370 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
371 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
372 } | |
373 void test_is_postConditional() { | |
374 Source source = addSource(EngineTestCase.createSource([ | |
375 "class A {}", | |
376 "A f(var p) {", | |
377 " A a = (p is A) ? p : throw null;", | |
378 " return p;", | |
379 "}"])); | |
380 LibraryElement library = resolve(source); | |
381 assertNoErrors(source); | |
382 verify([source]); | |
383 CompilationUnit unit = resolveCompilationUnit(source, library); | |
384 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
385 InterfaceType typeA = classA.element.type; | |
386 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
387 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
388 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
389 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
390 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
391 } | |
392 void test_is_postIf() { | |
393 Source source = addSource(EngineTestCase.createSource([ | |
394 "class A {}", | |
395 "A f(var p) {", | |
396 " if (p is A) {", | |
397 " A a = p;", | |
398 " } else {", | |
399 " return null;", | |
400 " }", | |
401 " return p;", | |
402 "}"])); | |
403 LibraryElement library = resolve(source); | |
404 assertNoErrors(source); | |
405 verify([source]); | |
406 CompilationUnit unit = resolveCompilationUnit(source, library); | |
407 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
408 InterfaceType typeA = classA.element.type; | |
409 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
410 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
411 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
412 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
413 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
414 } | |
415 void test_is_subclass() { | |
416 Source source = addSource(EngineTestCase.createSource([ | |
417 "class A {}", | |
418 "class B extends A {", | |
419 " B m() => this;", | |
420 "}", | |
421 "A f(A p) {", | |
422 " if (p is B) {", | |
423 " return p.m();", | |
424 " }", | |
425 "}"])); | |
426 LibraryElement library = resolve(source); | |
427 assertNoErrors(source); | |
428 CompilationUnit unit = resolveCompilationUnit(source, library); | |
429 FunctionDeclaration function = unit.declarations[2] as FunctionDeclaration; | |
430 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
431 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
432 ReturnStatement statement = ((ifStatement.thenStatement as Block)).statement
s[0] as ReturnStatement; | |
433 MethodInvocation invocation = statement.expression as MethodInvocation; | |
434 JUnitTestCase.assertNotNull(invocation.methodName.propagatedElement); | |
435 } | |
436 void test_is_while() { | |
437 Source source = addSource(EngineTestCase.createSource([ | |
438 "class A {}", | |
439 "A f(var p) {", | |
440 " while (p is A) {", | |
441 " return p;", | |
442 " }", | |
443 "}"])); | |
444 LibraryElement library = resolve(source); | |
445 assertNoErrors(source); | |
446 verify([source]); | |
447 CompilationUnit unit = resolveCompilationUnit(source, library); | |
448 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
449 InterfaceType typeA = classA.element.type; | |
450 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
451 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
452 WhileStatement whileStatement = body.block.statements[0] as WhileStatement; | |
453 ReturnStatement statement = ((whileStatement.body as Block)).statements[0] a
s ReturnStatement; | |
454 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
455 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
456 } | |
457 void test_isNot_conditional() { | |
458 Source source = addSource(EngineTestCase.createSource([ | |
459 "class A {}", | |
460 "A f(var p) {", | |
461 " return (p is! A) ? null : p;", | |
462 "}"])); | |
463 LibraryElement library = resolve(source); | |
464 assertNoErrors(source); | |
465 verify([source]); | |
466 CompilationUnit unit = resolveCompilationUnit(source, library); | |
467 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
468 InterfaceType typeA = classA.element.type; | |
469 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
470 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
471 ReturnStatement statement = body.block.statements[0] as ReturnStatement; | |
472 ConditionalExpression conditional = statement.expression as ConditionalExpre
ssion; | |
473 SimpleIdentifier variableName = conditional.elseExpression as SimpleIdentifi
er; | |
474 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
475 } | |
476 void test_isNot_if() { | |
477 Source source = addSource(EngineTestCase.createSource([ | |
478 "class A {}", | |
479 "A f(var p) {", | |
480 " if (p is! A) {", | |
481 " return null;", | |
482 " } else {", | |
483 " return p;", | |
484 " }", | |
485 "}"])); | |
486 LibraryElement library = resolve(source); | |
487 assertNoErrors(source); | |
488 verify([source]); | |
489 CompilationUnit unit = resolveCompilationUnit(source, library); | |
490 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
491 InterfaceType typeA = classA.element.type; | |
492 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
493 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
494 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
495 ReturnStatement statement = ((ifStatement.elseStatement as Block)).statement
s[0] as ReturnStatement; | |
496 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
497 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
498 } | |
499 void test_isNot_if_logicalOr() { | |
500 Source source = addSource(EngineTestCase.createSource([ | |
501 "class A {}", | |
502 "A f(var p) {", | |
503 " if (p is! A || null == p) {", | |
504 " return null;", | |
505 " } else {", | |
506 " return p;", | |
507 " }", | |
508 "}"])); | |
509 LibraryElement library = resolve(source); | |
510 assertNoErrors(source); | |
511 CompilationUnit unit = resolveCompilationUnit(source, library); | |
512 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
513 InterfaceType typeA = classA.element.type; | |
514 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
515 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
516 IfStatement ifStatement = body.block.statements[0] as IfStatement; | |
517 ReturnStatement statement = ((ifStatement.elseStatement as Block)).statement
s[0] as ReturnStatement; | |
518 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
519 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
520 } | |
521 void test_isNot_postConditional() { | |
522 Source source = addSource(EngineTestCase.createSource([ | |
523 "class A {}", | |
524 "A f(var p) {", | |
525 " A a = (p is! A) ? throw null : p;", | |
526 " return p;", | |
527 "}"])); | |
528 LibraryElement library = resolve(source); | |
529 assertNoErrors(source); | |
530 verify([source]); | |
531 CompilationUnit unit = resolveCompilationUnit(source, library); | |
532 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
533 InterfaceType typeA = classA.element.type; | |
534 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
535 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
536 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
537 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
538 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
539 } | |
540 void test_isNot_postIf() { | |
541 Source source = addSource(EngineTestCase.createSource([ | |
542 "class A {}", | |
543 "A f(var p) {", | |
544 " if (p is! A) {", | |
545 " return null;", | |
546 " }", | |
547 " return p;", | |
548 "}"])); | |
549 LibraryElement library = resolve(source); | |
550 assertNoErrors(source); | |
551 verify([source]); | |
552 CompilationUnit unit = resolveCompilationUnit(source, library); | |
553 ClassDeclaration classA = unit.declarations[0] as ClassDeclaration; | |
554 InterfaceType typeA = classA.element.type; | |
555 FunctionDeclaration function = unit.declarations[1] as FunctionDeclaration; | |
556 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
557 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
558 SimpleIdentifier variableName = statement.expression as SimpleIdentifier; | |
559 JUnitTestCase.assertSame(typeA, variableName.propagatedType); | |
560 } | |
561 void test_listLiteral_different() { | |
562 Source source = addSource(EngineTestCase.createSource(["f() {", " var v = [
0, '1', 2];", " return v[2];", "}"])); | |
563 LibraryElement library = resolve(source); | |
564 assertNoErrors(source); | |
565 verify([source]); | |
566 CompilationUnit unit = resolveCompilationUnit(source, library); | |
567 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
568 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
569 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
570 IndexExpression indexExpression = statement.expression as IndexExpression; | |
571 JUnitTestCase.assertNull(indexExpression.propagatedType); | |
572 } | |
573 void test_listLiteral_same() { | |
574 Source source = addSource(EngineTestCase.createSource(["f() {", " var v = [
0, 1, 2];", " return v[2];", "}"])); | |
575 LibraryElement library = resolve(source); | |
576 assertNoErrors(source); | |
577 verify([source]); | |
578 CompilationUnit unit = resolveCompilationUnit(source, library); | |
579 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
580 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
581 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
582 IndexExpression indexExpression = statement.expression as IndexExpression; | |
583 JUnitTestCase.assertSame(typeProvider.intType, indexExpression.propagatedTyp
e); | |
584 } | |
585 void test_mapLiteral_different() { | |
586 Source source = addSource(EngineTestCase.createSource([ | |
587 "f() {", | |
588 " var v = {'0' : 0, 1 : '1', '2' : 2};", | |
589 " return v;", | |
590 "}"])); | |
591 LibraryElement library = resolve(source); | |
592 assertNoErrors(source); | |
593 verify([source]); | |
594 CompilationUnit unit = resolveCompilationUnit(source, library); | |
595 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
596 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
597 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
598 SimpleIdentifier identifier = statement.expression as SimpleIdentifier; | |
599 InterfaceType propagatedType = identifier.propagatedType as InterfaceType; | |
600 JUnitTestCase.assertSame(typeProvider.mapType.element, propagatedType.elemen
t); | |
601 List<Type2> typeArguments = propagatedType.typeArguments; | |
602 EngineTestCase.assertLength(2, typeArguments); | |
603 JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[0]); | |
604 JUnitTestCase.assertSame(typeProvider.dynamicType, typeArguments[1]); | |
605 } | |
606 void test_mapLiteral_same() { | |
607 Source source = addSource(EngineTestCase.createSource([ | |
608 "f() {", | |
609 " var v = {'a' : 0, 'b' : 1, 'c' : 2};", | |
610 " return v;", | |
611 "}"])); | |
612 LibraryElement library = resolve(source); | |
613 assertNoErrors(source); | |
614 verify([source]); | |
615 CompilationUnit unit = resolveCompilationUnit(source, library); | |
616 FunctionDeclaration function = unit.declarations[0] as FunctionDeclaration; | |
617 BlockFunctionBody body = function.functionExpression.body as BlockFunctionBo
dy; | |
618 ReturnStatement statement = body.block.statements[1] as ReturnStatement; | |
619 SimpleIdentifier identifier = statement.expression as SimpleIdentifier; | |
620 InterfaceType propagatedType = identifier.propagatedType as InterfaceType; | |
621 JUnitTestCase.assertSame(typeProvider.mapType.element, propagatedType.elemen
t); | |
622 List<Type2> typeArguments = propagatedType.typeArguments; | |
623 EngineTestCase.assertLength(2, typeArguments); | |
624 JUnitTestCase.assertSame(typeProvider.stringType, typeArguments[0]); | |
625 JUnitTestCase.assertSame(typeProvider.intType, typeArguments[1]); | |
626 } | |
627 void test_propagatedReturnType_function_hasReturnType_returnsNull() { | |
628 String code = EngineTestCase.createSource(["String f() => null;", "main() {"
, " var v = f();", "}"]); | |
629 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.stri
ngType); | |
630 } | |
631 void test_propagatedReturnType_function_lessSpecificStaticReturnType() { | |
632 String code = EngineTestCase.createSource(["Object f() => 42;", "main() {",
" var v = f();", "}"]); | |
633 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.intT
ype); | |
634 } | |
635 void test_propagatedReturnType_function_moreSpecificStaticReturnType() { | |
636 String code = EngineTestCase.createSource([ | |
637 "int f(v) => (v as num);", | |
638 "main() {", | |
639 " var v = f(3);", | |
640 "}"]); | |
641 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.intT
ype); | |
642 } | |
643 void test_propagatedReturnType_function_noReturnTypeName_blockBody_multipleRet
urns() { | |
644 String code = EngineTestCase.createSource([ | |
645 "f() {", | |
646 " if (true) return 0;", | |
647 " return 1.0;", | |
648 "}", | |
649 "main() {", | |
650 " var v = f();", | |
651 "}"]); | |
652 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.numT
ype); | |
653 } | |
654 void test_propagatedReturnType_function_noReturnTypeName_blockBody_oneReturn()
{ | |
655 String code = EngineTestCase.createSource([ | |
656 "f() {", | |
657 " var z = 42;", | |
658 " return z;", | |
659 "}", | |
660 "main() {", | |
661 " var v = f();", | |
662 "}"]); | |
663 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.intT
ype); | |
664 } | |
665 void test_propagatedReturnType_function_noReturnTypeName_expressionBody() { | |
666 String code = EngineTestCase.createSource(["f() => 42;", "main() {", " var
v = f();", "}"]); | |
667 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.intT
ype); | |
668 } | |
669 void test_propagatedReturnType_localFunction() { | |
670 String code = EngineTestCase.createSource(["main() {", " f() => 42;", " va
r v = f();", "}"]); | |
671 check_propagatedReturnType(code, typeProvider.dynamicType, typeProvider.intT
ype); | |
672 } | |
673 void test_query() { | |
674 Source source = addSource(EngineTestCase.createSource([ | |
675 "import 'dart:html';", | |
676 "", | |
677 "main() {", | |
678 " var v1 = query('a');", | |
679 " var v2 = query('A');", | |
680 " var v3 = query('body:active');", | |
681 " var v4 = query('button[foo=\"bar\"]');", | |
682 " var v5 = query('div.class');", | |
683 " var v6 = query('input#id');", | |
684 " var v7 = query('select#id');", | |
685 " // invocation of method", | |
686 " var m1 = document.query('div');", | |
687 " // unsupported currently", | |
688 " var b1 = query('noSuchTag');", | |
689 " var b2 = query('DART_EDITOR_NO_SUCH_TYPE');", | |
690 " var b3 = query('body div');", | |
691 " return [v1, v2, v3, v4, v5, v6, v7, m1, b1, b2, b3];", | |
692 "}"])); | |
693 LibraryElement library = resolve(source); | |
694 assertNoErrors(source); | |
695 verify([source]); | |
696 CompilationUnit unit = resolveCompilationUnit(source, library); | |
697 FunctionDeclaration main = unit.declarations[0] as FunctionDeclaration; | |
698 BlockFunctionBody body = main.functionExpression.body as BlockFunctionBody; | |
699 ReturnStatement statement = body.block.statements[11] as ReturnStatement; | |
700 NodeList<Expression> elements = ((statement.expression as ListLiteral)).elem
ents; | |
701 JUnitTestCase.assertEquals("AnchorElement", elements[0].propagatedType.name)
; | |
702 JUnitTestCase.assertEquals("AnchorElement", elements[1].propagatedType.name)
; | |
703 JUnitTestCase.assertEquals("BodyElement", elements[2].propagatedType.name); | |
704 JUnitTestCase.assertEquals("ButtonElement", elements[3].propagatedType.name)
; | |
705 JUnitTestCase.assertEquals("DivElement", elements[4].propagatedType.name); | |
706 JUnitTestCase.assertEquals("InputElement", elements[5].propagatedType.name); | |
707 JUnitTestCase.assertEquals("SelectElement", elements[6].propagatedType.name)
; | |
708 JUnitTestCase.assertEquals("DivElement", elements[7].propagatedType.name); | |
709 JUnitTestCase.assertEquals("Element", elements[8].propagatedType.name); | |
710 JUnitTestCase.assertEquals("Element", elements[9].propagatedType.name); | |
711 JUnitTestCase.assertEquals("Element", elements[10].propagatedType.name); | |
712 } | |
713 | |
714 /** | |
715 * @param code the code that assigns the value to the variable "v", no matter
how. We check that | |
716 * "v" has expected static and propagated type. | |
717 */ | |
718 void check_propagatedReturnType(String code, Type2 expectedStaticType, Type2 e
xpectedPropagatedType) { | |
719 Source source = addSource(code); | |
720 LibraryElement library = resolve(source); | |
721 assertNoErrors(source); | |
722 verify([source]); | |
723 CompilationUnit unit = resolveCompilationUnit(source, library); | |
724 SimpleIdentifier identifier = EngineTestCase.findNode(unit, code, "v = ", Si
mpleIdentifier); | |
725 JUnitTestCase.assertSame(expectedStaticType, identifier.staticType); | |
726 JUnitTestCase.assertSame(expectedPropagatedType, identifier.propagatedType); | |
727 } | |
728 static dartSuite() { | |
729 _ut.group('TypePropagationTest', () { | |
730 _ut.test('test_Future_then', () { | |
731 final __test = new TypePropagationTest(); | |
732 runJUnitTest(__test, __test.test_Future_then); | |
733 }); | |
734 _ut.test('test_as', () { | |
735 final __test = new TypePropagationTest(); | |
736 runJUnitTest(__test, __test.test_as); | |
737 }); | |
738 _ut.test('test_assert', () { | |
739 final __test = new TypePropagationTest(); | |
740 runJUnitTest(__test, __test.test_assert); | |
741 }); | |
742 _ut.test('test_assignment', () { | |
743 final __test = new TypePropagationTest(); | |
744 runJUnitTest(__test, __test.test_assignment); | |
745 }); | |
746 _ut.test('test_assignment_afterInitializer', () { | |
747 final __test = new TypePropagationTest(); | |
748 runJUnitTest(__test, __test.test_assignment_afterInitializer); | |
749 }); | |
750 _ut.test('test_forEach', () { | |
751 final __test = new TypePropagationTest(); | |
752 runJUnitTest(__test, __test.test_forEach); | |
753 }); | |
754 _ut.test('test_functionExpression_asInvocationArgument', () { | |
755 final __test = new TypePropagationTest(); | |
756 runJUnitTest(__test, __test.test_functionExpression_asInvocationArgument
); | |
757 }); | |
758 _ut.test('test_functionExpression_asInvocationArgument_fromInferredInvocat
ion', () { | |
759 final __test = new TypePropagationTest(); | |
760 runJUnitTest(__test, __test.test_functionExpression_asInvocationArgument
_fromInferredInvocation); | |
761 }); | |
762 _ut.test('test_functionExpression_asInvocationArgument_keepIfLessSpecific'
, () { | |
763 final __test = new TypePropagationTest(); | |
764 runJUnitTest(__test, __test.test_functionExpression_asInvocationArgument
_keepIfLessSpecific); | |
765 }); | |
766 _ut.test('test_functionExpression_asInvocationArgument_replaceIfMoreSpecif
ic', () { | |
767 final __test = new TypePropagationTest(); | |
768 runJUnitTest(__test, __test.test_functionExpression_asInvocationArgument
_replaceIfMoreSpecific); | |
769 }); | |
770 _ut.test('test_initializer', () { | |
771 final __test = new TypePropagationTest(); | |
772 runJUnitTest(__test, __test.test_initializer); | |
773 }); | |
774 _ut.test('test_initializer_dereference', () { | |
775 final __test = new TypePropagationTest(); | |
776 runJUnitTest(__test, __test.test_initializer_dereference); | |
777 }); | |
778 _ut.test('test_isNot_conditional', () { | |
779 final __test = new TypePropagationTest(); | |
780 runJUnitTest(__test, __test.test_isNot_conditional); | |
781 }); | |
782 _ut.test('test_isNot_if', () { | |
783 final __test = new TypePropagationTest(); | |
784 runJUnitTest(__test, __test.test_isNot_if); | |
785 }); | |
786 _ut.test('test_isNot_if_logicalOr', () { | |
787 final __test = new TypePropagationTest(); | |
788 runJUnitTest(__test, __test.test_isNot_if_logicalOr); | |
789 }); | |
790 _ut.test('test_isNot_postConditional', () { | |
791 final __test = new TypePropagationTest(); | |
792 runJUnitTest(__test, __test.test_isNot_postConditional); | |
793 }); | |
794 _ut.test('test_isNot_postIf', () { | |
795 final __test = new TypePropagationTest(); | |
796 runJUnitTest(__test, __test.test_isNot_postIf); | |
797 }); | |
798 _ut.test('test_is_conditional', () { | |
799 final __test = new TypePropagationTest(); | |
800 runJUnitTest(__test, __test.test_is_conditional); | |
801 }); | |
802 _ut.test('test_is_if', () { | |
803 final __test = new TypePropagationTest(); | |
804 runJUnitTest(__test, __test.test_is_if); | |
805 }); | |
806 _ut.test('test_is_if_lessSpecific', () { | |
807 final __test = new TypePropagationTest(); | |
808 runJUnitTest(__test, __test.test_is_if_lessSpecific); | |
809 }); | |
810 _ut.test('test_is_if_logicalAnd', () { | |
811 final __test = new TypePropagationTest(); | |
812 runJUnitTest(__test, __test.test_is_if_logicalAnd); | |
813 }); | |
814 _ut.test('test_is_postConditional', () { | |
815 final __test = new TypePropagationTest(); | |
816 runJUnitTest(__test, __test.test_is_postConditional); | |
817 }); | |
818 _ut.test('test_is_postIf', () { | |
819 final __test = new TypePropagationTest(); | |
820 runJUnitTest(__test, __test.test_is_postIf); | |
821 }); | |
822 _ut.test('test_is_subclass', () { | |
823 final __test = new TypePropagationTest(); | |
824 runJUnitTest(__test, __test.test_is_subclass); | |
825 }); | |
826 _ut.test('test_is_while', () { | |
827 final __test = new TypePropagationTest(); | |
828 runJUnitTest(__test, __test.test_is_while); | |
829 }); | |
830 _ut.test('test_listLiteral_different', () { | |
831 final __test = new TypePropagationTest(); | |
832 runJUnitTest(__test, __test.test_listLiteral_different); | |
833 }); | |
834 _ut.test('test_listLiteral_same', () { | |
835 final __test = new TypePropagationTest(); | |
836 runJUnitTest(__test, __test.test_listLiteral_same); | |
837 }); | |
838 _ut.test('test_mapLiteral_different', () { | |
839 final __test = new TypePropagationTest(); | |
840 runJUnitTest(__test, __test.test_mapLiteral_different); | |
841 }); | |
842 _ut.test('test_mapLiteral_same', () { | |
843 final __test = new TypePropagationTest(); | |
844 runJUnitTest(__test, __test.test_mapLiteral_same); | |
845 }); | |
846 _ut.test('test_propagatedReturnType_function_hasReturnType_returnsNull', (
) { | |
847 final __test = new TypePropagationTest(); | |
848 runJUnitTest(__test, __test.test_propagatedReturnType_function_hasReturn
Type_returnsNull); | |
849 }); | |
850 _ut.test('test_propagatedReturnType_function_lessSpecificStaticReturnType'
, () { | |
851 final __test = new TypePropagationTest(); | |
852 runJUnitTest(__test, __test.test_propagatedReturnType_function_lessSpeci
ficStaticReturnType); | |
853 }); | |
854 _ut.test('test_propagatedReturnType_function_moreSpecificStaticReturnType'
, () { | |
855 final __test = new TypePropagationTest(); | |
856 runJUnitTest(__test, __test.test_propagatedReturnType_function_moreSpeci
ficStaticReturnType); | |
857 }); | |
858 _ut.test('test_propagatedReturnType_function_noReturnTypeName_blockBody_mu
ltipleReturns', () { | |
859 final __test = new TypePropagationTest(); | |
860 runJUnitTest(__test, __test.test_propagatedReturnType_function_noReturnT
ypeName_blockBody_multipleReturns); | |
861 }); | |
862 _ut.test('test_propagatedReturnType_function_noReturnTypeName_blockBody_on
eReturn', () { | |
863 final __test = new TypePropagationTest(); | |
864 runJUnitTest(__test, __test.test_propagatedReturnType_function_noReturnT
ypeName_blockBody_oneReturn); | |
865 }); | |
866 _ut.test('test_propagatedReturnType_function_noReturnTypeName_expressionBo
dy', () { | |
867 final __test = new TypePropagationTest(); | |
868 runJUnitTest(__test, __test.test_propagatedReturnType_function_noReturnT
ypeName_expressionBody); | |
869 }); | |
870 _ut.test('test_propagatedReturnType_localFunction', () { | |
871 final __test = new TypePropagationTest(); | |
872 runJUnitTest(__test, __test.test_propagatedReturnType_localFunction); | |
873 }); | |
874 _ut.test('test_query', () { | |
875 final __test = new TypePropagationTest(); | |
876 runJUnitTest(__test, __test.test_query); | |
877 }); | |
878 }); | |
879 } | |
880 } | |
881 class NonErrorResolverTest extends ResolverTestCase { | |
882 void test_ambiguousExport() { | |
883 Source source = addSource(EngineTestCase.createSource([ | |
884 "library L;", | |
885 "export 'lib1.dart';", | |
886 "export 'lib2.dart';"])); | |
887 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s M {}"])); | |
888 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
889 resolve(source); | |
890 assertNoErrors(source); | |
891 verify([source]); | |
892 } | |
893 void test_ambiguousExport_combinators_hide() { | |
894 Source source = addSource(EngineTestCase.createSource([ | |
895 "library L;", | |
896 "export 'lib1.dart';", | |
897 "export 'lib2.dart' hide B;"])); | |
898 addSource2("/lib1.dart", EngineTestCase.createSource(["library L1;", "class
A {}", "class B {}"])); | |
899 addSource2("/lib2.dart", EngineTestCase.createSource(["library L2;", "class
B {}", "class C {}"])); | |
900 resolve(source); | |
901 assertNoErrors(source); | |
902 verify([source]); | |
903 } | |
904 void test_ambiguousExport_combinators_show() { | |
905 Source source = addSource(EngineTestCase.createSource([ | |
906 "library L;", | |
907 "export 'lib1.dart';", | |
908 "export 'lib2.dart' show C;"])); | |
909 addSource2("/lib1.dart", EngineTestCase.createSource(["library L1;", "class
A {}", "class B {}"])); | |
910 addSource2("/lib2.dart", EngineTestCase.createSource(["library L2;", "class
B {}", "class C {}"])); | |
911 resolve(source); | |
912 assertNoErrors(source); | |
913 verify([source]); | |
914 } | |
915 void test_argumentDefinitionTestNonParameter_formalParameter() { | |
916 Source source = addSource(EngineTestCase.createSource(["f(var v) {", " retu
rn ?v;", "}"])); | |
917 resolve(source); | |
918 assertErrors(source, [ParserErrorCode.DEPRECATED_ARGUMENT_DEFINITION_TEST]); | |
919 verify([source]); | |
920 } | |
921 void test_argumentDefinitionTestNonParameter_namedParameter() { | |
922 Source source = addSource(EngineTestCase.createSource(["f({var v : 0}) {", "
return ?v;", "}"])); | |
923 resolve(source); | |
924 assertErrors(source, [ParserErrorCode.DEPRECATED_ARGUMENT_DEFINITION_TEST]); | |
925 verify([source]); | |
926 } | |
927 void test_argumentDefinitionTestNonParameter_optionalParameter() { | |
928 Source source = addSource(EngineTestCase.createSource(["f([var v]) {", " re
turn ?v;", "}"])); | |
929 resolve(source); | |
930 assertErrors(source, [ParserErrorCode.DEPRECATED_ARGUMENT_DEFINITION_TEST]); | |
931 verify([source]); | |
932 } | |
933 void test_argumentTypeNotAssignable_classWithCall_Function() { | |
934 Source source = addSource(EngineTestCase.createSource([ | |
935 " caller(Function callee) {", | |
936 " callee();", | |
937 " }", | |
938 "", | |
939 " class CallMeBack {", | |
940 " call() => 0;", | |
941 " }", | |
942 "", | |
943 " main() {", | |
944 " caller(new CallMeBack());", | |
945 " }"])); | |
946 resolve(source); | |
947 assertNoErrors(source); | |
948 verify([source]); | |
949 } | |
950 void test_argumentTypeNotAssignable_fieldFormalParameterElement_member() { | |
951 Source source = addSource(EngineTestCase.createSource([ | |
952 "class ObjectSink<T> {", | |
953 " void sink(T object) {", | |
954 " new TimestampedObject<T>(object);", | |
955 " }", | |
956 "}", | |
957 "class TimestampedObject<E> {", | |
958 " E object2;", | |
959 " TimestampedObject(this.object2);", | |
960 "}"])); | |
961 resolve(source); | |
962 assertNoErrors(source); | |
963 verify([source]); | |
964 } | |
965 void test_argumentTypeNotAssignable_invocation_functionParameter_generic() { | |
966 Source source = addSource(EngineTestCase.createSource([ | |
967 "class A<K> {", | |
968 " m(f(K k), K v) {", | |
969 " f(v);", | |
970 " }", | |
971 "}"])); | |
972 resolve(source); | |
973 assertNoErrors(source); | |
974 verify([source]); | |
975 } | |
976 void test_argumentTypeNotAssignable_invocation_typedef_generic() { | |
977 Source source = addSource(EngineTestCase.createSource(["typedef A<T>(T p);",
"f(A<int> a) {", " a(1);", "}"])); | |
978 resolve(source); | |
979 assertNoErrors(source); | |
980 verify([source]); | |
981 } | |
982 void test_argumentTypeNotAssignable_Object_Function() { | |
983 Source source = addSource(EngineTestCase.createSource([ | |
984 "main() {", | |
985 " process(() {});", | |
986 "}", | |
987 "process(Object x) {}"])); | |
988 resolve(source); | |
989 assertNoErrors(source); | |
990 verify([source]); | |
991 } | |
992 void test_argumentTypeNotAssignable_typedef_local() { | |
993 Source source = addSource(EngineTestCase.createSource([ | |
994 "typedef A(int p1, String p2);", | |
995 "A getA() => null;", | |
996 "f() {", | |
997 " A a = getA();", | |
998 " a(1, '2');", | |
999 "}"])); | |
1000 resolve(source); | |
1001 assertNoErrors(source); | |
1002 verify([source]); | |
1003 } | |
1004 void test_argumentTypeNotAssignable_typedef_parameter() { | |
1005 Source source = addSource(EngineTestCase.createSource([ | |
1006 "typedef A(int p1, String p2);", | |
1007 "f(A a) {", | |
1008 " a(1, '2');", | |
1009 "}"])); | |
1010 resolve(source); | |
1011 assertNoErrors(source); | |
1012 verify([source]); | |
1013 } | |
1014 void test_assignmentToFinal_prefixNegate() { | |
1015 Source source = addSource(EngineTestCase.createSource(["f() {", " final x =
0;", " -x;", "}"])); | |
1016 resolve(source); | |
1017 assertNoErrors(source); | |
1018 verify([source]); | |
1019 } | |
1020 void test_assignmentToFinals_importWithPrefix() { | |
1021 Source source = addSource(EngineTestCase.createSource([ | |
1022 "library lib;", | |
1023 "import 'lib1.dart' as foo;", | |
1024 "main() {", | |
1025 " foo.x = true;", | |
1026 "}"])); | |
1027 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "bool
x = false;"])); | |
1028 resolve(source); | |
1029 assertNoErrors(source); | |
1030 verify([source]); | |
1031 } | |
1032 void test_breakWithoutLabelInSwitch() { | |
1033 Source source = addSource(EngineTestCase.createSource([ | |
1034 "class A {", | |
1035 " void m(int i) {", | |
1036 " switch (i) {", | |
1037 " case 0:", | |
1038 " break;", | |
1039 " }", | |
1040 " }", | |
1041 "}"])); | |
1042 resolve(source); | |
1043 assertNoErrors(source); | |
1044 verify([source]); | |
1045 } | |
1046 void test_builtInIdentifierAsType_dynamic() { | |
1047 Source source = addSource(EngineTestCase.createSource(["f() {", " dynamic x
;", "}"])); | |
1048 resolve(source); | |
1049 assertNoErrors(source); | |
1050 verify([source]); | |
1051 } | |
1052 void test_caseBlockNotTerminated() { | |
1053 Source source = addSource(EngineTestCase.createSource([ | |
1054 "f(int p) {", | |
1055 " for (int i = 0; i < 10; i++) {", | |
1056 " switch (p) {", | |
1057 " case 0:", | |
1058 " break;", | |
1059 " case 1:", | |
1060 " continue;", | |
1061 " case 2:", | |
1062 " return;", | |
1063 " case 3:", | |
1064 " throw new Object();", | |
1065 " case 4:", | |
1066 " case 5:", | |
1067 " return;", | |
1068 " case 6:", | |
1069 " default:", | |
1070 " return;", | |
1071 " }", | |
1072 " }", | |
1073 "}"])); | |
1074 resolve(source); | |
1075 assertNoErrors(source); | |
1076 verify([source]); | |
1077 } | |
1078 void test_caseBlockNotTerminated_lastCase() { | |
1079 Source source = addSource(EngineTestCase.createSource([ | |
1080 "f(int p) {", | |
1081 " switch (p) {", | |
1082 " case 0:", | |
1083 " p = p + 1;", | |
1084 " }", | |
1085 "}"])); | |
1086 resolve(source); | |
1087 assertNoErrors(source); | |
1088 verify([source]); | |
1089 } | |
1090 void test_caseExpressionTypeImplementsEquals_int() { | |
1091 Source source = addSource(EngineTestCase.createSource([ | |
1092 "f(int i) {", | |
1093 " switch(i) {", | |
1094 " case(1) : return 1;", | |
1095 " default: return 0;", | |
1096 " }", | |
1097 "}"])); | |
1098 resolve(source); | |
1099 assertNoErrors(source); | |
1100 verify([source]); | |
1101 } | |
1102 void test_caseExpressionTypeImplementsEquals_Object() { | |
1103 Source source = addSource(EngineTestCase.createSource([ | |
1104 "class IntWrapper {", | |
1105 " final int value;", | |
1106 " const IntWrapper(this.value);", | |
1107 "}", | |
1108 "", | |
1109 "f(IntWrapper intWrapper) {", | |
1110 " switch(intWrapper) {", | |
1111 " case(const IntWrapper(1)) : return 1;", | |
1112 " default: return 0;", | |
1113 " }", | |
1114 "}"])); | |
1115 resolve(source); | |
1116 assertNoErrors(source); | |
1117 verify([source]); | |
1118 } | |
1119 void test_caseExpressionTypeImplementsEquals_String() { | |
1120 Source source = addSource(EngineTestCase.createSource([ | |
1121 "f(String s) {", | |
1122 " switch(s) {", | |
1123 " case('1') : return 1;", | |
1124 " default: return 0;", | |
1125 " }", | |
1126 "}"])); | |
1127 resolve(source); | |
1128 assertNoErrors(source); | |
1129 verify([source]); | |
1130 } | |
1131 void test_concreteClassWithAbstractMember() { | |
1132 Source source = addSource(EngineTestCase.createSource(["abstract class A {",
" m();", "}"])); | |
1133 resolve(source); | |
1134 assertNoErrors(source); | |
1135 verify([source]); | |
1136 } | |
1137 void test_conflictingInstanceGetterAndSuperclassMember_instance() { | |
1138 Source source = addSource(EngineTestCase.createSource([ | |
1139 "class A {", | |
1140 " get v => 0;", | |
1141 "}", | |
1142 "class B extends A {", | |
1143 " get v => 1;", | |
1144 "}"])); | |
1145 resolve(source); | |
1146 assertNoErrors(source); | |
1147 verify([source]); | |
1148 } | |
1149 void test_conflictingStaticGetterAndInstanceSetter_thisClass() { | |
1150 Source source = addSource(EngineTestCase.createSource([ | |
1151 "class A {", | |
1152 " static get x => 0;", | |
1153 " static set x(int p) {}", | |
1154 "}"])); | |
1155 resolve(source); | |
1156 assertNoErrors(source); | |
1157 verify([source]); | |
1158 } | |
1159 void test_conflictingStaticSetterAndInstanceMember_thisClass_method() { | |
1160 Source source = addSource(EngineTestCase.createSource([ | |
1161 "class A {", | |
1162 " static x() {}", | |
1163 " static set x(int p) {}", | |
1164 "}"])); | |
1165 resolve(source); | |
1166 assertNoErrors(source); | |
1167 verify([source]); | |
1168 } | |
1169 void test_constConstructorWithNonConstSuper_redirectingFactory() { | |
1170 Source source = addSource(EngineTestCase.createSource([ | |
1171 "class A {", | |
1172 " A();", | |
1173 "}", | |
1174 "class B implements C {", | |
1175 " const B();", | |
1176 "}", | |
1177 "class C extends A {", | |
1178 " const factory C() = B;", | |
1179 "}"])); | |
1180 resolve(source); | |
1181 assertNoErrors(source); | |
1182 verify([source]); | |
1183 } | |
1184 void test_constConstructorWithNonFinalField_finalInstanceVar() { | |
1185 Source source = addSource(EngineTestCase.createSource(["class A {", " final
int x = 0;", " const A();", "}"])); | |
1186 resolve(source); | |
1187 assertNoErrors(source); | |
1188 verify([source]); | |
1189 } | |
1190 void test_constConstructorWithNonFinalField_mixin() { | |
1191 Source source = addSource(EngineTestCase.createSource([ | |
1192 "class A {", | |
1193 " a() {}", | |
1194 "}", | |
1195 "class B extends Object with A {", | |
1196 " const B();", | |
1197 "}"])); | |
1198 resolve(source); | |
1199 assertNoErrors(source); | |
1200 verify([source]); | |
1201 } | |
1202 void test_constConstructorWithNonFinalField_static() { | |
1203 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c int x;", " const A();", "}"])); | |
1204 resolve(source); | |
1205 assertNoErrors(source); | |
1206 verify([source]); | |
1207 } | |
1208 void test_constConstructorWithNonFinalField_syntheticField() { | |
1209 Source source = addSource(EngineTestCase.createSource([ | |
1210 "class A {", | |
1211 " const A();", | |
1212 " set x(value) {}", | |
1213 " get x {return 0;}", | |
1214 "}"])); | |
1215 resolve(source); | |
1216 assertNoErrors(source); | |
1217 verify([source]); | |
1218 } | |
1219 void test_constEval_propertyExtraction_fieldStatic_targetType() { | |
1220 addSource2("/math.dart", EngineTestCase.createSource(["library math;", "cons
t PI = 3.14;"])); | |
1221 Source source = addSource(EngineTestCase.createSource(["import 'math.dart' a
s math;", "const C = math.PI;"])); | |
1222 resolve(source); | |
1223 assertNoErrors(source); | |
1224 verify([source]); | |
1225 } | |
1226 void test_constEval_propertyExtraction_methodStatic_targetType() { | |
1227 Source source = addSource(EngineTestCase.createSource([ | |
1228 "class A {", | |
1229 " const A();", | |
1230 " static m() {}", | |
1231 "}", | |
1232 "const C = A.m;"])); | |
1233 resolve(source); | |
1234 assertNoErrors(source); | |
1235 verify([source]); | |
1236 } | |
1237 void test_constEval_symbol() { | |
1238 addSource2("/math.dart", EngineTestCase.createSource(["library math;", "cons
t PI = 3.14;"])); | |
1239 Source source = addSource(EngineTestCase.createSource(["const C = #foo;", "f
oo() {}"])); | |
1240 resolve(source); | |
1241 assertNoErrors(source); | |
1242 verify([source]); | |
1243 } | |
1244 void test_constEvalTypeBoolNumString_equal() { | |
1245 Source source = addSource(EngineTestCase.createSource([ | |
1246 "class A {", | |
1247 " const A();", | |
1248 "}", | |
1249 "class B {", | |
1250 " final v;", | |
1251 " const B.a1(bool p) : v = p == true;", | |
1252 " const B.a2(bool p) : v = p == false;", | |
1253 " const B.a3(bool p) : v = p == 0;", | |
1254 " const B.a4(bool p) : v = p == 0.0;", | |
1255 " const B.a5(bool p) : v = p == '';", | |
1256 " const B.b1(int p) : v = p == true;", | |
1257 " const B.b2(int p) : v = p == false;", | |
1258 " const B.b3(int p) : v = p == 0;", | |
1259 " const B.b4(int p) : v = p == 0.0;", | |
1260 " const B.b5(int p) : v = p == '';", | |
1261 " const B.c1(String p) : v = p == true;", | |
1262 " const B.c2(String p) : v = p == false;", | |
1263 " const B.c3(String p) : v = p == 0;", | |
1264 " const B.c4(String p) : v = p == 0.0;", | |
1265 " const B.c5(String p) : v = p == '';", | |
1266 " const B.n1(num p) : v = p == null;", | |
1267 " const B.n2(num p) : v = null == p;", | |
1268 "}"])); | |
1269 resolve(source); | |
1270 assertNoErrors(source); | |
1271 } | |
1272 void test_constEvalTypeBoolNumString_notEqual() { | |
1273 Source source = addSource(EngineTestCase.createSource([ | |
1274 "class A {", | |
1275 " const A();", | |
1276 "}", | |
1277 "class B {", | |
1278 " final v;", | |
1279 " const B.a1(bool p) : v = p != true;", | |
1280 " const B.a2(bool p) : v = p != false;", | |
1281 " const B.a3(bool p) : v = p != 0;", | |
1282 " const B.a4(bool p) : v = p != 0.0;", | |
1283 " const B.a5(bool p) : v = p != '';", | |
1284 " const B.b1(int p) : v = p != true;", | |
1285 " const B.b2(int p) : v = p != false;", | |
1286 " const B.b3(int p) : v = p != 0;", | |
1287 " const B.b4(int p) : v = p != 0.0;", | |
1288 " const B.b5(int p) : v = p != '';", | |
1289 " const B.c1(String p) : v = p != true;", | |
1290 " const B.c2(String p) : v = p != false;", | |
1291 " const B.c3(String p) : v = p != 0;", | |
1292 " const B.c4(String p) : v = p != 0.0;", | |
1293 " const B.c5(String p) : v = p != '';", | |
1294 " const B.n1(num p) : v = p != null;", | |
1295 " const B.n2(num p) : v = null != p;", | |
1296 "}"])); | |
1297 resolve(source); | |
1298 assertNoErrors(source); | |
1299 verify([source]); | |
1300 } | |
1301 void test_constNotInitialized_field() { | |
1302 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c const int x = 0;", "}"])); | |
1303 resolve(source); | |
1304 assertNoErrors(source); | |
1305 verify([source]); | |
1306 } | |
1307 void test_constNotInitialized_local() { | |
1308 Source source = addSource(EngineTestCase.createSource(["main() {", " const
int x = 0;", "}"])); | |
1309 resolve(source); | |
1310 assertNoErrors(source); | |
1311 verify([source]); | |
1312 } | |
1313 void test_constructorDeclaration_scope_signature() { | |
1314 Source source = addSource(EngineTestCase.createSource([ | |
1315 "const app = 0;", | |
1316 "class A {", | |
1317 " A(@app int app) {}", | |
1318 "}"])); | |
1319 resolve(source); | |
1320 assertNoErrors(source); | |
1321 verify([source]); | |
1322 } | |
1323 void test_constWithNonConstantArgument_literals() { | |
1324 Source source = addSource(EngineTestCase.createSource([ | |
1325 "class A {", | |
1326 " const A(a, b, c, d);", | |
1327 "}", | |
1328 "f() { return const A(true, 0, 1.0, '2'); }"])); | |
1329 resolve(source); | |
1330 assertNoErrors(source); | |
1331 verify([source]); | |
1332 } | |
1333 void test_constWithTypeParameters_direct() { | |
1334 Source source = addSource(EngineTestCase.createSource([ | |
1335 "class A<T> {", | |
1336 " static const V = const A<int>();", | |
1337 " const A();", | |
1338 "}"])); | |
1339 resolve(source); | |
1340 assertNoErrors(source); | |
1341 verify([source]); | |
1342 } | |
1343 void test_constWithUndefinedConstructor() { | |
1344 Source source = addSource(EngineTestCase.createSource([ | |
1345 "class A {", | |
1346 " const A.name();", | |
1347 "}", | |
1348 "f() {", | |
1349 " return const A.name();", | |
1350 "}"])); | |
1351 resolve(source); | |
1352 assertNoErrors(source); | |
1353 verify([source]); | |
1354 } | |
1355 void test_constWithUndefinedConstructorDefault() { | |
1356 Source source = addSource(EngineTestCase.createSource([ | |
1357 "class A {", | |
1358 " const A();", | |
1359 "}", | |
1360 "f() {", | |
1361 " return const A();", | |
1362 "}"])); | |
1363 resolve(source); | |
1364 assertNoErrors(source); | |
1365 verify([source]); | |
1366 } | |
1367 void test_defaultValueInFunctionTypeAlias() { | |
1368 Source source = addSource(EngineTestCase.createSource(["typedef F([x]);"])); | |
1369 resolve(source); | |
1370 assertNoErrors(source); | |
1371 verify([source]); | |
1372 } | |
1373 void test_defaultValueInFunctionTypedParameter_named() { | |
1374 Source source = addSource(EngineTestCase.createSource(["f(g({p})) {}"])); | |
1375 resolve(source); | |
1376 assertNoErrors(source); | |
1377 verify([source]); | |
1378 } | |
1379 void test_defaultValueInFunctionTypedParameter_optional() { | |
1380 Source source = addSource(EngineTestCase.createSource(["f(g([p])) {}"])); | |
1381 resolve(source); | |
1382 assertNoErrors(source); | |
1383 verify([source]); | |
1384 } | |
1385 void test_duplicateDefinition_emptyName() { | |
1386 Source source = addSource(EngineTestCase.createSource([ | |
1387 "Map _globalMap = {", | |
1388 " 'a' : () {},", | |
1389 " 'b' : () {}", | |
1390 "};"])); | |
1391 resolve(source); | |
1392 assertNoErrors(source); | |
1393 verify([source]); | |
1394 } | |
1395 void test_duplicateDefinition_getter() { | |
1396 Source source = addSource(EngineTestCase.createSource(["bool get a => true;"
])); | |
1397 resolve(source); | |
1398 assertNoErrors(source); | |
1399 verify([source]); | |
1400 } | |
1401 void test_dynamicIdentifier() { | |
1402 Source source = addSource(EngineTestCase.createSource(["main() {", " var v
= dynamic;", "}"])); | |
1403 resolve(source); | |
1404 assertNoErrors(source); | |
1405 verify([source]); | |
1406 } | |
1407 void test_expectedOneListTypeArgument() { | |
1408 Source source = addSource(EngineTestCase.createSource(["main() {", " <int>
[];", "}"])); | |
1409 resolve(source); | |
1410 assertNoErrors(source); | |
1411 verify([source]); | |
1412 } | |
1413 void test_expectedTwoMapTypeArguments() { | |
1414 Source source = addSource(EngineTestCase.createSource(["main() {", " <int,
int> {};", "}"])); | |
1415 resolve(source); | |
1416 assertNoErrors(source); | |
1417 verify([source]); | |
1418 } | |
1419 void test_exportOfNonLibrary_libraryDeclared() { | |
1420 Source source = addSource(EngineTestCase.createSource(["library L;", "export
'lib1.dart';"])); | |
1421 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;"])); | |
1422 resolve(source); | |
1423 assertNoErrors(source); | |
1424 verify([source]); | |
1425 } | |
1426 void test_exportOfNonLibrary_libraryNotDeclared() { | |
1427 Source source = addSource(EngineTestCase.createSource(["library L;", "export
'lib1.dart';"])); | |
1428 addSource2("/lib1.dart", EngineTestCase.createSource([""])); | |
1429 resolve(source); | |
1430 assertNoErrors(source); | |
1431 verify([source]); | |
1432 } | |
1433 void test_extraPositionalArguments_function() { | |
1434 Source source = addSource(EngineTestCase.createSource(["f(p1, p2) {}", "main
() {", " f(1, 2);", "}"])); | |
1435 resolve(source); | |
1436 assertNoErrors(source); | |
1437 verify([source]); | |
1438 } | |
1439 void test_extraPositionalArguments_Function() { | |
1440 Source source = addSource(EngineTestCase.createSource(["f(Function a) {", "
a(1, 2);", "}"])); | |
1441 resolve(source); | |
1442 assertNoErrors(source); | |
1443 verify([source]); | |
1444 } | |
1445 void test_extraPositionalArguments_typedef_local() { | |
1446 Source source = addSource(EngineTestCase.createSource([ | |
1447 "typedef A(p1, p2);", | |
1448 "A getA() => null;", | |
1449 "f() {", | |
1450 " A a = getA();", | |
1451 " a(1, 2);", | |
1452 "}"])); | |
1453 resolve(source); | |
1454 assertNoErrors(source); | |
1455 verify([source]); | |
1456 } | |
1457 void test_extraPositionalArguments_typedef_parameter() { | |
1458 Source source = addSource(EngineTestCase.createSource(["typedef A(p1, p2);",
"f(A a) {", " a(1, 2);", "}"])); | |
1459 resolve(source); | |
1460 assertNoErrors(source); | |
1461 verify([source]); | |
1462 } | |
1463 void test_fieldInitializedByMultipleInitializers() { | |
1464 Source source = addSource(EngineTestCase.createSource([ | |
1465 "class A {", | |
1466 " int x;", | |
1467 " int y;", | |
1468 " A() : x = 0, y = 0 {}", | |
1469 "}"])); | |
1470 resolve(source); | |
1471 assertNoErrors(source); | |
1472 verify([source]); | |
1473 } | |
1474 void test_fieldInitializedInInitializerAndDeclaration_fieldNotFinal() { | |
1475 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
= 0;", " A() : x = 1 {}", "}"])); | |
1476 resolve(source); | |
1477 assertNoErrors(source); | |
1478 verify([source]); | |
1479 } | |
1480 void test_fieldInitializedInInitializerAndDeclaration_finalFieldNotSet() { | |
1481 Source source = addSource(EngineTestCase.createSource(["class A {", " final
int x;", " A() : x = 1 {}", "}"])); | |
1482 resolve(source); | |
1483 assertNoErrors(source); | |
1484 verify([source]); | |
1485 } | |
1486 void test_fieldInitializerOutsideConstructor() { | |
1487 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A(this.x) {}", "}"])); | |
1488 resolve(source); | |
1489 assertNoErrors(source); | |
1490 verify([source]); | |
1491 } | |
1492 void test_fieldInitializerOutsideConstructor_defaultParameters() { | |
1493 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A([this.x]) {}", "}"])); | |
1494 resolve(source); | |
1495 assertNoErrors(source); | |
1496 verify([source]); | |
1497 } | |
1498 void test_fieldInitializerRedirectingConstructor_super() { | |
1499 Source source = addSource(EngineTestCase.createSource([ | |
1500 "class A {", | |
1501 " A() {}", | |
1502 "}", | |
1503 "class B extends A {", | |
1504 " int x;", | |
1505 " B(this.x) : super();", | |
1506 "}"])); | |
1507 resolve(source); | |
1508 assertNoErrors(source); | |
1509 verify([source]); | |
1510 } | |
1511 void test_finalInitializedInDeclarationAndConstructor_initializer() { | |
1512 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x;", " A() : x = 1 {}", "}"])); | |
1513 resolve(source); | |
1514 assertNoErrors(source); | |
1515 verify([source]); | |
1516 } | |
1517 void test_finalInitializedInDeclarationAndConstructor_initializingFormal() { | |
1518 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x;", " A(this.x) {}", "}"])); | |
1519 resolve(source); | |
1520 assertNoErrors(source); | |
1521 verify([source]); | |
1522 } | |
1523 void test_finalNotInitialized_atDeclaration() { | |
1524 Source source = addSource(EngineTestCase.createSource(["class A {", " final
int x = 0;", " A() {}", "}"])); | |
1525 resolve(source); | |
1526 assertNoErrors(source); | |
1527 verify([source]); | |
1528 } | |
1529 void test_finalNotInitialized_fieldFormal() { | |
1530 Source source = addSource(EngineTestCase.createSource(["class A {", " final
int x = 0;", " A() {}", "}"])); | |
1531 resolve(source); | |
1532 assertNoErrors(source); | |
1533 verify([source]); | |
1534 } | |
1535 void test_finalNotInitialized_functionTypedFieldFormal() { | |
1536 Source source = addSource(EngineTestCase.createSource([ | |
1537 "class A {", | |
1538 " final Function x;", | |
1539 " A(int this.x(int p)) {}", | |
1540 "}"])); | |
1541 resolve(source); | |
1542 assertNoErrors(source); | |
1543 verify([source]); | |
1544 } | |
1545 void test_finalNotInitialized_hasNativeClause_hasConstructor() { | |
1546 Source source = addSource(EngineTestCase.createSource([ | |
1547 "class A native 'something' {", | |
1548 " final int x;", | |
1549 " A() {}", | |
1550 "}"])); | |
1551 resolve(source); | |
1552 assertErrors(source, [ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE]); | |
1553 verify([source]); | |
1554 } | |
1555 void test_finalNotInitialized_hasNativeClause_noConstructor() { | |
1556 Source source = addSource(EngineTestCase.createSource(["class A native 'some
thing' {", " final int x;", "}"])); | |
1557 resolve(source); | |
1558 assertErrors(source, [ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE]); | |
1559 verify([source]); | |
1560 } | |
1561 void test_finalNotInitialized_initializer() { | |
1562 Source source = addSource(EngineTestCase.createSource(["class A {", " final
int x;", " A() : x = 0 {}", "}"])); | |
1563 resolve(source); | |
1564 assertNoErrors(source); | |
1565 verify([source]); | |
1566 } | |
1567 void test_finalNotInitialized_redirectingConstructor() { | |
1568 Source source = addSource(EngineTestCase.createSource([ | |
1569 "class A {", | |
1570 " final int x;", | |
1571 " A(this.x);", | |
1572 " A.named() : this (42);", | |
1573 "}"])); | |
1574 resolve(source); | |
1575 assertNoErrors(source); | |
1576 verify([source]); | |
1577 } | |
1578 void test_functionDeclaration_scope_returnType() { | |
1579 Source source = addSource(EngineTestCase.createSource(["int f(int) {}"])); | |
1580 resolve(source); | |
1581 assertNoErrors(source); | |
1582 verify([source]); | |
1583 } | |
1584 void test_functionDeclaration_scope_signature() { | |
1585 Source source = addSource(EngineTestCase.createSource(["const app = 0;", "f(
@app int app) {}"])); | |
1586 resolve(source); | |
1587 assertNoErrors(source); | |
1588 verify([source]); | |
1589 } | |
1590 void test_functionTypeAlias_scope_returnType() { | |
1591 Source source = addSource(EngineTestCase.createSource(["typedef int f(int);"
])); | |
1592 resolve(source); | |
1593 assertNoErrors(source); | |
1594 verify([source]); | |
1595 } | |
1596 void test_functionTypeAlias_scope_signature() { | |
1597 Source source = addSource(EngineTestCase.createSource(["const app = 0;", "ty
pedef int f(@app int app);"])); | |
1598 resolve(source); | |
1599 assertNoErrors(source); | |
1600 verify([source]); | |
1601 } | |
1602 void test_functionWithoutCall() { | |
1603 Source source = addSource(EngineTestCase.createSource([ | |
1604 "abstract class A implements Function {", | |
1605 "}", | |
1606 "class B implements A {", | |
1607 " void call() {}", | |
1608 "}", | |
1609 "class C extends A {", | |
1610 " void call() {}", | |
1611 "}", | |
1612 "class D extends C {", | |
1613 "}"])); | |
1614 resolve(source); | |
1615 assertNoErrors(source); | |
1616 verify([source]); | |
1617 } | |
1618 void test_implicitThisReferenceInInitializer_constructorName() { | |
1619 Source source = addSource(EngineTestCase.createSource([ | |
1620 "class A {", | |
1621 " A.named() {}", | |
1622 "}", | |
1623 "class B {", | |
1624 " var v;", | |
1625 " B() : v = new A.named();", | |
1626 "}"])); | |
1627 resolve(source); | |
1628 assertNoErrors(source); | |
1629 verify([source]); | |
1630 } | |
1631 void test_implicitThisReferenceInInitializer_prefixedIdentifier() { | |
1632 Source source = addSource(EngineTestCase.createSource([ | |
1633 "class A {", | |
1634 " var f;", | |
1635 "}", | |
1636 "class B {", | |
1637 " var v;", | |
1638 " B(A a) : v = a.f;", | |
1639 "}"])); | |
1640 resolve(source); | |
1641 assertNoErrors(source); | |
1642 verify([source]); | |
1643 } | |
1644 void test_implicitThisReferenceInInitializer_qualifiedMethodInvocation() { | |
1645 Source source = addSource(EngineTestCase.createSource([ | |
1646 "class A {", | |
1647 " f() {}", | |
1648 "}", | |
1649 "class B {", | |
1650 " var v;", | |
1651 " B() : v = new A().f();", | |
1652 "}"])); | |
1653 resolve(source); | |
1654 assertNoErrors(source); | |
1655 verify([source]); | |
1656 } | |
1657 void test_implicitThisReferenceInInitializer_qualifiedPropertyAccess() { | |
1658 Source source = addSource(EngineTestCase.createSource([ | |
1659 "class A {", | |
1660 " var f;", | |
1661 "}", | |
1662 "class B {", | |
1663 " var v;", | |
1664 " B() : v = new A().f;", | |
1665 "}"])); | |
1666 resolve(source); | |
1667 assertNoErrors(source); | |
1668 verify([source]); | |
1669 } | |
1670 void test_implicitThisReferenceInInitializer_staticField_thisClass() { | |
1671 Source source = addSource(EngineTestCase.createSource([ | |
1672 "class A {", | |
1673 " var v;", | |
1674 " A() : v = f;", | |
1675 " static var f;", | |
1676 "}"])); | |
1677 resolve(source); | |
1678 assertNoErrors(source); | |
1679 verify([source]); | |
1680 } | |
1681 void test_implicitThisReferenceInInitializer_staticGetter() { | |
1682 Source source = addSource(EngineTestCase.createSource([ | |
1683 "class A {", | |
1684 " var v;", | |
1685 " A() : v = f;", | |
1686 " static get f => 42;", | |
1687 "}"])); | |
1688 resolve(source); | |
1689 assertNoErrors(source); | |
1690 verify([source]); | |
1691 } | |
1692 void test_implicitThisReferenceInInitializer_staticMethod() { | |
1693 Source source = addSource(EngineTestCase.createSource([ | |
1694 "class A {", | |
1695 " var v;", | |
1696 " A() : v = f();", | |
1697 " static f() => 42;", | |
1698 "}"])); | |
1699 resolve(source); | |
1700 assertNoErrors(source); | |
1701 verify([source]); | |
1702 } | |
1703 void test_implicitThisReferenceInInitializer_topLevelField() { | |
1704 Source source = addSource(EngineTestCase.createSource([ | |
1705 "class A {", | |
1706 " var v;", | |
1707 " A() : v = f;", | |
1708 "}", | |
1709 "var f = 42;"])); | |
1710 resolve(source); | |
1711 assertNoErrors(source); | |
1712 verify([source]); | |
1713 } | |
1714 void test_implicitThisReferenceInInitializer_topLevelFunction() { | |
1715 Source source = addSource(EngineTestCase.createSource([ | |
1716 "class A {", | |
1717 " var v;", | |
1718 " A() : v = f();", | |
1719 "}", | |
1720 "f() => 42;"])); | |
1721 resolve(source); | |
1722 assertNoErrors(source); | |
1723 verify([source]); | |
1724 } | |
1725 void test_implicitThisReferenceInInitializer_topLevelGetter() { | |
1726 Source source = addSource(EngineTestCase.createSource([ | |
1727 "class A {", | |
1728 " var v;", | |
1729 " A() : v = f;", | |
1730 "}", | |
1731 "get f => 42;"])); | |
1732 resolve(source); | |
1733 assertNoErrors(source); | |
1734 verify([source]); | |
1735 } | |
1736 void test_implicitThisReferenceInInitializer_typeParameter() { | |
1737 Source source = addSource(EngineTestCase.createSource(["class A<T> {", " va
r v;", " A(p) : v = (p is T);", "}"])); | |
1738 resolve(source); | |
1739 assertNoErrors(source); | |
1740 verify([source]); | |
1741 } | |
1742 void test_importDuplicatedLibraryName() { | |
1743 Source source = addSource(EngineTestCase.createSource([ | |
1744 "library test;", | |
1745 "import 'lib.dart';", | |
1746 "import 'lib.dart';"])); | |
1747 addSource2("/lib.dart", "library lib;"); | |
1748 resolve(source); | |
1749 assertErrors(source, [ | |
1750 HintCode.UNUSED_IMPORT, | |
1751 HintCode.UNUSED_IMPORT, | |
1752 HintCode.DUPLICATE_IMPORT]); | |
1753 verify([source]); | |
1754 } | |
1755 void test_importOfNonLibrary_libraryDeclared() { | |
1756 Source source = addSource(EngineTestCase.createSource(["library lib;", "impo
rt 'part.dart';", "A a;"])); | |
1757 addSource2("/part.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}"])); | |
1758 resolve(source); | |
1759 assertNoErrors(source); | |
1760 verify([source]); | |
1761 } | |
1762 void test_importOfNonLibrary_libraryNotDeclared() { | |
1763 Source source = addSource(EngineTestCase.createSource(["library lib;", "impo
rt 'part.dart';", "A a;"])); | |
1764 addSource2("/part.dart", EngineTestCase.createSource(["class A {}"])); | |
1765 resolve(source); | |
1766 assertNoErrors(source); | |
1767 verify([source]); | |
1768 } | |
1769 void test_importPrefixes_withFirstLetterDifference() { | |
1770 Source source = addSource(EngineTestCase.createSource([ | |
1771 "library L;", | |
1772 "import 'lib1.dart' as math;", | |
1773 "import 'lib2.dart' as path;", | |
1774 "main() {", | |
1775 " math.test1();", | |
1776 " path.test2();", | |
1777 "}"])); | |
1778 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "test
1() {}"])); | |
1779 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "test
2() {}"])); | |
1780 resolve(source); | |
1781 assertNoErrors(source); | |
1782 verify([source]); | |
1783 } | |
1784 void test_inconsistentCaseExpressionTypes() { | |
1785 Source source = addSource(EngineTestCase.createSource([ | |
1786 "f(var p) {", | |
1787 " switch (p) {", | |
1788 " case 1:", | |
1789 " break;", | |
1790 " case 2:", | |
1791 " break;", | |
1792 " }", | |
1793 "}"])); | |
1794 resolve(source); | |
1795 assertNoErrors(source); | |
1796 verify([source]); | |
1797 } | |
1798 void test_inconsistentMethodInheritance_accessors_typeParameter2() { | |
1799 Source source = addSource(EngineTestCase.createSource([ | |
1800 "abstract class A<E> {", | |
1801 " E get x {return 1;}", | |
1802 "}", | |
1803 "class B<E> {", | |
1804 " E get x {return 1;}", | |
1805 "}", | |
1806 "class C<E> extends A<E> implements B<E> {", | |
1807 "}"])); | |
1808 resolve(source); | |
1809 assertNoErrors(source); | |
1810 verify([source]); | |
1811 } | |
1812 void test_inconsistentMethodInheritance_accessors_typeParameters_diamond() { | |
1813 Source source = addSource(EngineTestCase.createSource([ | |
1814 "abstract class F<E> extends B<E> {}", | |
1815 "class D<E> extends F<E> {", | |
1816 " external E get g;", | |
1817 "}", | |
1818 "abstract class C<E> {", | |
1819 " E get g;", | |
1820 "}", | |
1821 "abstract class B<E> implements C<E> {", | |
1822 " E get g { return null; }", | |
1823 "}", | |
1824 "class A<E> extends B<E> implements D<E> {", | |
1825 "}"])); | |
1826 resolve(source); | |
1827 assertNoErrors(source); | |
1828 verify([source]); | |
1829 } | |
1830 void test_inconsistentMethodInheritance_accessors_typeParameters1() { | |
1831 Source source = addSource(EngineTestCase.createSource([ | |
1832 "abstract class A<E> {", | |
1833 " E get x;", | |
1834 "}", | |
1835 "abstract class B<E> {", | |
1836 " E get x;", | |
1837 "}", | |
1838 "class C<E> implements A<E>, B<E> {", | |
1839 " E get x => 1;", | |
1840 "}"])); | |
1841 resolve(source); | |
1842 assertNoErrors(source); | |
1843 verify([source]); | |
1844 } | |
1845 void test_inconsistentMethodInheritance_methods_typeParameter2() { | |
1846 Source source = addSource(EngineTestCase.createSource([ | |
1847 "class A<E> {", | |
1848 " x(E e) {}", | |
1849 "}", | |
1850 "class B<E> {", | |
1851 " x(E e) {}", | |
1852 "}", | |
1853 "class C<E> extends A<E> implements B<E> {", | |
1854 " x(E e) {}", | |
1855 "}"])); | |
1856 resolve(source); | |
1857 assertNoErrors(source); | |
1858 verify([source]); | |
1859 } | |
1860 void test_inconsistentMethodInheritance_methods_typeParameters1() { | |
1861 Source source = addSource(EngineTestCase.createSource([ | |
1862 "class A<E> {", | |
1863 " x(E e) {}", | |
1864 "}", | |
1865 "class B<E> {", | |
1866 " x(E e) {}", | |
1867 "}", | |
1868 "class C<E> implements A<E>, B<E> {", | |
1869 " x(E e) {}", | |
1870 "}"])); | |
1871 resolve(source); | |
1872 assertNoErrors(source); | |
1873 verify([source]); | |
1874 } | |
1875 void test_inconsistentMethodInheritance_simple() { | |
1876 Source source = addSource(EngineTestCase.createSource([ | |
1877 "abstract class A {", | |
1878 " x();", | |
1879 "}", | |
1880 "abstract class B {", | |
1881 " x();", | |
1882 "}", | |
1883 "class C implements A, B {", | |
1884 " x() {}", | |
1885 "}"])); | |
1886 resolve(source); | |
1887 assertNoErrors(source); | |
1888 verify([source]); | |
1889 } | |
1890 void test_initializingFormalForNonExistantField() { | |
1891 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A(this.x) {}", "}"])); | |
1892 resolve(source); | |
1893 assertNoErrors(source); | |
1894 verify([source]); | |
1895 } | |
1896 void test_instanceAccessToStaticMember_fromComment() { | |
1897 Source source = addSource(EngineTestCase.createSource([ | |
1898 "class A {", | |
1899 " static m() {}", | |
1900 "}", | |
1901 "/// [A.m]", | |
1902 "main() {", | |
1903 "}"])); | |
1904 resolve(source); | |
1905 assertNoErrors(source); | |
1906 verify([source]); | |
1907 } | |
1908 void test_instanceAccessToStaticMember_topLevel() { | |
1909 Source source = addSource(EngineTestCase.createSource(["m() {}", "main() {",
" m();", "}"])); | |
1910 resolve(source); | |
1911 assertNoErrors(source); | |
1912 verify([source]); | |
1913 } | |
1914 void test_instanceMemberAccessFromStatic_fromComment() { | |
1915 Source source = addSource(EngineTestCase.createSource([ | |
1916 "class A {", | |
1917 " m() {}", | |
1918 " /// [m]", | |
1919 " static foo() {", | |
1920 " }", | |
1921 "}"])); | |
1922 resolve(source); | |
1923 assertNoErrors(source); | |
1924 verify([source]); | |
1925 } | |
1926 void test_instanceMethodNameCollidesWithSuperclassStatic_field() { | |
1927 Source source = addSource(EngineTestCase.createSource([ | |
1928 "import 'lib.dart';", | |
1929 "class B extends A {", | |
1930 " _m() {}", | |
1931 "}"])); | |
1932 addSource2("/lib.dart", EngineTestCase.createSource(["library L;", "class A
{", " static var _m;", "}"])); | |
1933 resolve(source); | |
1934 assertNoErrors(source); | |
1935 verify([source]); | |
1936 } | |
1937 void test_instanceMethodNameCollidesWithSuperclassStatic_method() { | |
1938 Source source = addSource(EngineTestCase.createSource([ | |
1939 "import 'lib.dart';", | |
1940 "class B extends A {", | |
1941 " _m() {}", | |
1942 "}"])); | |
1943 addSource2("/lib.dart", EngineTestCase.createSource(["library L;", "class A
{", " static _m() {}", "}"])); | |
1944 resolve(source); | |
1945 assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]); | |
1946 verify([source]); | |
1947 } | |
1948 void test_invalidAnnotation_constantVariable() { | |
1949 Source source = addSource(EngineTestCase.createSource(["const C = 0;", "@C",
"main() {", "}"])); | |
1950 resolve(source); | |
1951 assertNoErrors(source); | |
1952 verify([source]); | |
1953 } | |
1954 void test_invalidAnnotation_importWithPrefix_constantVariable() { | |
1955 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "const
C = 0;"])); | |
1956 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "@p.C", "main() {", "}"])); | |
1957 resolve(source); | |
1958 assertNoErrors(source); | |
1959 verify([source]); | |
1960 } | |
1961 void test_invalidAnnotation_importWithPrefix_constConstructor() { | |
1962 addSource2("/lib.dart", EngineTestCase.createSource([ | |
1963 "library lib;", | |
1964 "class A {", | |
1965 " const A.named(int p);", | |
1966 "}"])); | |
1967 Source source = addSource(EngineTestCase.createSource([ | |
1968 "import 'lib.dart' as p;", | |
1969 "@p.A.named(42)", | |
1970 "main() {", | |
1971 "}"])); | |
1972 resolve(source); | |
1973 assertNoErrors(source); | |
1974 verify([source]); | |
1975 } | |
1976 void test_invalidAssignment() { | |
1977 Source source = addSource(EngineTestCase.createSource(["f() {", " var x;",
" var y;", " x = y;", "}"])); | |
1978 resolve(source); | |
1979 assertNoErrors(source); | |
1980 verify([source]); | |
1981 } | |
1982 void test_invalidAssignment_compoundAssignment() { | |
1983 Source source = addSource(EngineTestCase.createSource([ | |
1984 "class byte {", | |
1985 " int _value;", | |
1986 " byte(this._value);", | |
1987 " byte operator +(int val) {}", | |
1988 "}", | |
1989 "", | |
1990 "void main() {", | |
1991 " byte b = new byte(52);", | |
1992 " b += 3;", | |
1993 "}"])); | |
1994 resolve(source); | |
1995 assertNoErrors(source); | |
1996 verify([source]); | |
1997 } | |
1998 void test_invalidAssignment_defaultValue_named() { | |
1999 Source source = addSource(EngineTestCase.createSource(["f({String x: '0'}) {
", "}"])); | |
2000 resolve(source); | |
2001 assertNoErrors(source); | |
2002 verify([source]); | |
2003 } | |
2004 void test_invalidAssignment_defaultValue_optional() { | |
2005 Source source = addSource(EngineTestCase.createSource(["f([String x = '0'])
{", "}"])); | |
2006 resolve(source); | |
2007 assertNoErrors(source); | |
2008 verify([source]); | |
2009 } | |
2010 void test_invalidAssignment_toDynamic() { | |
2011 Source source = addSource(EngineTestCase.createSource(["f() {", " var g;",
" g = () => 0;", "}"])); | |
2012 resolve(source); | |
2013 assertNoErrors(source); | |
2014 verify([source]); | |
2015 } | |
2016 void test_invalidFactoryNameNotAClass() { | |
2017 Source source = addSource(EngineTestCase.createSource(["class A {", " facto
ry A() {}", "}"])); | |
2018 resolve(source); | |
2019 assertNoErrors(source); | |
2020 verify([source]); | |
2021 } | |
2022 void test_invalidMethodOverrideNamedParamType() { | |
2023 Source source = addSource(EngineTestCase.createSource([ | |
2024 "class A {", | |
2025 " m({int a}) {}", | |
2026 "}", | |
2027 "class B implements A {", | |
2028 " m({int a, int b}) {}", | |
2029 "}"])); | |
2030 resolve(source); | |
2031 assertNoErrors(source); | |
2032 verify([source]); | |
2033 } | |
2034 void test_invalidOverrideDifferentDefaultValues_named() { | |
2035 Source source = addSource(EngineTestCase.createSource([ | |
2036 "class A {", | |
2037 " m({int p : 0}) {}", | |
2038 "}", | |
2039 "class B extends A {", | |
2040 " m({int p : 0}) {}", | |
2041 "}"])); | |
2042 resolve(source); | |
2043 assertNoErrors(source); | |
2044 verify([source]); | |
2045 } | |
2046 void test_invalidOverrideDifferentDefaultValues_positional() { | |
2047 Source source = addSource(EngineTestCase.createSource([ | |
2048 "class A {", | |
2049 " m([int p = 0]) {}", | |
2050 "}", | |
2051 "class B extends A {", | |
2052 " m([int p = 0]) {}", | |
2053 "}"])); | |
2054 resolve(source); | |
2055 assertNoErrors(source); | |
2056 verify([source]); | |
2057 } | |
2058 void test_invalidOverrideDifferentDefaultValues_positional_changedOrder() { | |
2059 Source source = addSource(EngineTestCase.createSource([ | |
2060 "class A {", | |
2061 " m([int a = 0, String b = '0']) {}", | |
2062 "}", | |
2063 "class B extends A {", | |
2064 " m([int b = 0, String a = '0']) {}", | |
2065 "}"])); | |
2066 resolve(source); | |
2067 assertNoErrors(source); | |
2068 verify([source]); | |
2069 } | |
2070 void test_invalidOverrideNamed_unorderedNamedParameter() { | |
2071 Source source = addSource(EngineTestCase.createSource([ | |
2072 "class A {", | |
2073 " m({a, b}) {}", | |
2074 "}", | |
2075 "class B extends A {", | |
2076 " m({b, a}) {}", | |
2077 "}"])); | |
2078 resolve(source); | |
2079 assertNoErrors(source); | |
2080 verify([source]); | |
2081 } | |
2082 void test_invalidOverrideRequired_less() { | |
2083 Source source = addSource(EngineTestCase.createSource([ | |
2084 "class A {", | |
2085 " m(a, b) {}", | |
2086 "}", | |
2087 "class B extends A {", | |
2088 " m(a, [b]) {}", | |
2089 "}"])); | |
2090 resolve(source); | |
2091 assertNoErrors(source); | |
2092 verify([source]); | |
2093 } | |
2094 void test_invalidOverrideRequired_same() { | |
2095 Source source = addSource(EngineTestCase.createSource([ | |
2096 "class A {", | |
2097 " m(a) {}", | |
2098 "}", | |
2099 "class B extends A {", | |
2100 " m(a) {}", | |
2101 "}"])); | |
2102 resolve(source); | |
2103 assertNoErrors(source); | |
2104 verify([source]); | |
2105 } | |
2106 void test_invalidOverrideReturnType_returnType_interface() { | |
2107 Source source = addSource2("/test.dart", EngineTestCase.createSource([ | |
2108 "abstract class A {", | |
2109 " num m();", | |
2110 "}", | |
2111 "class B implements A {", | |
2112 " int m() { return 1; }", | |
2113 "}"])); | |
2114 resolve(source); | |
2115 assertNoErrors(source); | |
2116 verify([source]); | |
2117 } | |
2118 void test_invalidOverrideReturnType_returnType_interface2() { | |
2119 Source source = addSource2("/test.dart", EngineTestCase.createSource([ | |
2120 "abstract class A {", | |
2121 " num m();", | |
2122 "}", | |
2123 "abstract class B implements A {", | |
2124 "}", | |
2125 "class C implements B {", | |
2126 " int m() { return 1; }", | |
2127 "}"])); | |
2128 resolve(source); | |
2129 assertNoErrors(source); | |
2130 verify([source]); | |
2131 } | |
2132 void test_invalidOverrideReturnType_returnType_mixin() { | |
2133 Source source = addSource2("/test.dart", EngineTestCase.createSource([ | |
2134 "class A {", | |
2135 " num m() { return 0; }", | |
2136 "}", | |
2137 "class B extends Object with A {", | |
2138 " int m() { return 1; }", | |
2139 "}"])); | |
2140 resolve(source); | |
2141 assertNoErrors(source); | |
2142 verify([source]); | |
2143 } | |
2144 void test_invalidOverrideReturnType_returnType_parameterizedTypes() { | |
2145 Source source = addSource(EngineTestCase.createSource([ | |
2146 "abstract class A<E> {", | |
2147 " List<E> m();", | |
2148 "}", | |
2149 "class B extends A<dynamic> {", | |
2150 " List<dynamic> m() { return new List<dynamic>(); }", | |
2151 "}"])); | |
2152 resolve(source); | |
2153 assertNoErrors(source); | |
2154 verify([source]); | |
2155 } | |
2156 void test_invalidOverrideReturnType_returnType_sameType() { | |
2157 Source source = addSource2("/test.dart", EngineTestCase.createSource([ | |
2158 "class A {", | |
2159 " int m() { return 0; }", | |
2160 "}", | |
2161 "class B extends A {", | |
2162 " int m() { return 1; }", | |
2163 "}"])); | |
2164 resolve(source); | |
2165 assertNoErrors(source); | |
2166 verify([source]); | |
2167 } | |
2168 void test_invalidOverrideReturnType_returnType_superclass() { | |
2169 Source source = addSource2("/test.dart", EngineTestCase.createSource([ | |
2170 "class A {", | |
2171 " num m() { return 0; }", | |
2172 "}", | |
2173 "class B extends A {", | |
2174 " int m() { return 1; }", | |
2175 "}"])); | |
2176 resolve(source); | |
2177 assertNoErrors(source); | |
2178 verify([source]); | |
2179 } | |
2180 void test_invalidOverrideReturnType_returnType_superclass2() { | |
2181 Source source = addSource2("/test.dart", EngineTestCase.createSource([ | |
2182 "class A {", | |
2183 " num m() { return 0; }", | |
2184 "}", | |
2185 "class B extends A {", | |
2186 "}", | |
2187 "class C extends B {", | |
2188 " int m() { return 1; }", | |
2189 "}"])); | |
2190 resolve(source); | |
2191 assertNoErrors(source); | |
2192 verify([source]); | |
2193 } | |
2194 void test_invalidOverrideReturnType_returnType_void() { | |
2195 Source source = addSource(EngineTestCase.createSource([ | |
2196 "class A {", | |
2197 " void m() {}", | |
2198 "}", | |
2199 "class B extends A {", | |
2200 " int m() {}", | |
2201 "}"])); | |
2202 resolve(source); | |
2203 assertNoErrors(source); | |
2204 verify([source]); | |
2205 } | |
2206 void test_invalidReferenceToThis_constructor() { | |
2207 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
", " var v = this;", " }", "}"])); | |
2208 resolve(source); | |
2209 assertNoErrors(source); | |
2210 verify([source]); | |
2211 } | |
2212 void test_invalidReferenceToThis_instanceMethod() { | |
2213 Source source = addSource(EngineTestCase.createSource(["class A {", " m() {
", " var v = this;", " }", "}"])); | |
2214 resolve(source); | |
2215 assertNoErrors(source); | |
2216 verify([source]); | |
2217 } | |
2218 void test_invalidTypeArgumentForKey() { | |
2219 Source source = addSource(EngineTestCase.createSource([ | |
2220 "class A {", | |
2221 " m() {", | |
2222 " return const <int, int>{};", | |
2223 " }", | |
2224 "}"])); | |
2225 resolve(source); | |
2226 assertNoErrors(source); | |
2227 verify([source]); | |
2228 } | |
2229 void test_invalidTypeArgumentInConstList() { | |
2230 Source source = addSource(EngineTestCase.createSource([ | |
2231 "class A<E> {", | |
2232 " m() {", | |
2233 " return <E>[];", | |
2234 " }", | |
2235 "}"])); | |
2236 resolve(source); | |
2237 assertNoErrors(source); | |
2238 verify([source]); | |
2239 } | |
2240 void test_invalidTypeArgumentInConstMap() { | |
2241 Source source = addSource(EngineTestCase.createSource([ | |
2242 "class A<E> {", | |
2243 " m() {", | |
2244 " return <String, E>{};", | |
2245 " }", | |
2246 "}"])); | |
2247 resolve(source); | |
2248 assertNoErrors(source); | |
2249 verify([source]); | |
2250 } | |
2251 void test_invocationOfNonFunction_dynamic() { | |
2252 Source source = addSource(EngineTestCase.createSource([ | |
2253 "class A {", | |
2254 " var f;", | |
2255 "}", | |
2256 "class B extends A {", | |
2257 " g() {", | |
2258 " f();", | |
2259 " }", | |
2260 "}"])); | |
2261 resolve(source); | |
2262 assertNoErrors(source); | |
2263 verify([source]); | |
2264 } | |
2265 void test_invocationOfNonFunction_getter() { | |
2266 Source source = addSource(EngineTestCase.createSource([ | |
2267 "class A {", | |
2268 " var g;", | |
2269 "}", | |
2270 "f() {", | |
2271 " A a;", | |
2272 " a.g();", | |
2273 "}"])); | |
2274 resolve(source); | |
2275 assertNoErrors(source); | |
2276 verify([source]); | |
2277 } | |
2278 void test_invocationOfNonFunction_localVariable() { | |
2279 Source source = addSource(EngineTestCase.createSource(["f() {", " var g;",
" g();", "}"])); | |
2280 resolve(source); | |
2281 assertNoErrors(source); | |
2282 verify([source]); | |
2283 } | |
2284 void test_invocationOfNonFunction_localVariable_dynamic() { | |
2285 Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {",
" var v = f;", " v();", "}"])); | |
2286 resolve(source); | |
2287 assertNoErrors(source); | |
2288 verify([source]); | |
2289 } | |
2290 void test_invocationOfNonFunction_localVariable_dynamic2() { | |
2291 Source source = addSource(EngineTestCase.createSource([ | |
2292 "f() {}", | |
2293 "main() {", | |
2294 " var v = f;", | |
2295 " v = 1;", | |
2296 " v();", | |
2297 "}"])); | |
2298 resolve(source); | |
2299 assertNoErrors(source); | |
2300 verify([source]); | |
2301 } | |
2302 void test_invocationOfNonFunction_Object() { | |
2303 Source source = addSource(EngineTestCase.createSource(["main() {", " Object
v = null;", " v();", "}"])); | |
2304 resolve(source); | |
2305 assertNoErrors(source); | |
2306 verify([source]); | |
2307 } | |
2308 void test_listElementTypeNotAssignable() { | |
2309 Source source = addSource(EngineTestCase.createSource(["var v1 = <int> [42];
", "var v2 = const <int> [42];"])); | |
2310 resolve(source); | |
2311 assertNoErrors(source); | |
2312 verify([source]); | |
2313 } | |
2314 void test_mapKeyTypeNotAssignable() { | |
2315 Source source = addSource(EngineTestCase.createSource(["var v = <String, int
> {'a' : 1};"])); | |
2316 resolve(source); | |
2317 assertNoErrors(source); | |
2318 verify([source]); | |
2319 } | |
2320 void test_memberWithClassName_setter() { | |
2321 Source source = addSource(EngineTestCase.createSource(["class A {", " set A
(v) {}", "}"])); | |
2322 resolve(source); | |
2323 assertNoErrors(source); | |
2324 verify([source]); | |
2325 } | |
2326 void test_methodDeclaration_scope_signature() { | |
2327 Source source = addSource(EngineTestCase.createSource([ | |
2328 "const app = 0;", | |
2329 "class A {", | |
2330 " foo(@app int app) {}", | |
2331 "}"])); | |
2332 resolve(source); | |
2333 assertNoErrors(source); | |
2334 verify([source]); | |
2335 } | |
2336 void test_misMatchedGetterAndSetterTypes_instance_sameTypes() { | |
2337 Source source = addSource(EngineTestCase.createSource([ | |
2338 "class C {", | |
2339 " int get x => 0;", | |
2340 " set x(int v) {}", | |
2341 "}"])); | |
2342 resolve(source); | |
2343 assertNoErrors(source); | |
2344 verify([source]); | |
2345 } | |
2346 void test_misMatchedGetterAndSetterTypes_instance_unspecifiedGetter() { | |
2347 Source source = addSource(EngineTestCase.createSource(["class C {", " get x
=> 0;", " set x(String v) {}", "}"])); | |
2348 resolve(source); | |
2349 assertNoErrors(source); | |
2350 verify([source]); | |
2351 } | |
2352 void test_misMatchedGetterAndSetterTypes_instance_unspecifiedSetter() { | |
2353 Source source = addSource(EngineTestCase.createSource(["class C {", " int g
et x => 0;", " set x(v) {}", "}"])); | |
2354 resolve(source); | |
2355 assertNoErrors(source); | |
2356 verify([source]); | |
2357 } | |
2358 void test_misMatchedGetterAndSetterTypes_topLevel_sameTypes() { | |
2359 Source source = addSource(EngineTestCase.createSource(["int get x => 0;", "s
et x(int v) {}"])); | |
2360 resolve(source); | |
2361 assertNoErrors(source); | |
2362 verify([source]); | |
2363 } | |
2364 void test_misMatchedGetterAndSetterTypes_topLevel_unspecifiedGetter() { | |
2365 Source source = addSource(EngineTestCase.createSource(["get x => 0;", "set x
(String v) {}"])); | |
2366 resolve(source); | |
2367 assertNoErrors(source); | |
2368 verify([source]); | |
2369 } | |
2370 void test_misMatchedGetterAndSetterTypes_topLevel_unspecifiedSetter() { | |
2371 Source source = addSource(EngineTestCase.createSource(["int get x => 0;", "s
et x(v) {}"])); | |
2372 resolve(source); | |
2373 assertNoErrors(source); | |
2374 verify([source]); | |
2375 } | |
2376 void test_mixedReturnTypes_differentScopes() { | |
2377 Source source = addSource(EngineTestCase.createSource([ | |
2378 "class C {", | |
2379 " m(int x) {", | |
2380 " f(int y) {", | |
2381 " return;", | |
2382 " }", | |
2383 " f(x);", | |
2384 " return 0;", | |
2385 " }", | |
2386 "}"])); | |
2387 resolve(source); | |
2388 assertNoErrors(source); | |
2389 verify([source]); | |
2390 } | |
2391 void test_mixedReturnTypes_sameKind() { | |
2392 Source source = addSource(EngineTestCase.createSource([ | |
2393 "class C {", | |
2394 " m(int x) {", | |
2395 " if (x < 0) {", | |
2396 " return 1;", | |
2397 " }", | |
2398 " return 0;", | |
2399 " }", | |
2400 "}"])); | |
2401 resolve(source); | |
2402 assertNoErrors(source); | |
2403 verify([source]); | |
2404 } | |
2405 void test_mixinDeclaresConstructor() { | |
2406 Source source = addSource(EngineTestCase.createSource([ | |
2407 "class A {", | |
2408 " m() {}", | |
2409 "}", | |
2410 "class B extends Object with A {}"])); | |
2411 resolve(source); | |
2412 assertNoErrors(source); | |
2413 verify([source]); | |
2414 } | |
2415 void test_mixinDeclaresConstructor_factory() { | |
2416 Source source = addSource(EngineTestCase.createSource([ | |
2417 "class A {", | |
2418 " factory A() {}", | |
2419 "}", | |
2420 "class B extends Object with A {}"])); | |
2421 resolve(source); | |
2422 assertNoErrors(source); | |
2423 verify([source]); | |
2424 } | |
2425 void test_mixinInheritsFromNotObject_classDeclaration_mixTypeAlias() { | |
2426 Source source = addSource(EngineTestCase.createSource([ | |
2427 "class A {}", | |
2428 "class B = Object with A;", | |
2429 "class C extends Object with B {}"])); | |
2430 resolve(source); | |
2431 assertNoErrors(source); | |
2432 verify([source]); | |
2433 } | |
2434 void test_mixinInheritsFromNotObject_typedef_mixTypeAlias() { | |
2435 Source source = addSource(EngineTestCase.createSource([ | |
2436 "class A {}", | |
2437 "class B = Object with A;", | |
2438 "class C = Object with B;"])); | |
2439 resolve(source); | |
2440 assertNoErrors(source); | |
2441 verify([source]); | |
2442 } | |
2443 void test_multipleSuperInitializers_no() { | |
2444 Source source = addSource(EngineTestCase.createSource(["class A {}", "class
B extends A {", " B() {}", "}"])); | |
2445 resolve(source); | |
2446 assertNoErrors(source); | |
2447 verify([source]); | |
2448 } | |
2449 void test_multipleSuperInitializers_single() { | |
2450 Source source = addSource(EngineTestCase.createSource([ | |
2451 "class A {}", | |
2452 "class B extends A {", | |
2453 " B() : super() {}", | |
2454 "}"])); | |
2455 resolve(source); | |
2456 assertNoErrors(source); | |
2457 verify([source]); | |
2458 } | |
2459 void test_newWithAbstractClass_factory() { | |
2460 Source source = addSource(EngineTestCase.createSource([ | |
2461 "abstract class A {", | |
2462 " factory A() { return new B(); }", | |
2463 "}", | |
2464 "class B implements A {", | |
2465 " B() {}", | |
2466 "}", | |
2467 "A f() {", | |
2468 " return new A();", | |
2469 "}"])); | |
2470 resolve(source); | |
2471 assertNoErrors(source); | |
2472 verify([source]); | |
2473 } | |
2474 void test_newWithUndefinedConstructor() { | |
2475 Source source = addSource(EngineTestCase.createSource([ | |
2476 "class A {", | |
2477 " A.name() {}", | |
2478 "}", | |
2479 "f() {", | |
2480 " new A.name();", | |
2481 "}"])); | |
2482 resolve(source); | |
2483 assertNoErrors(source); | |
2484 verify([source]); | |
2485 } | |
2486 void test_newWithUndefinedConstructorDefault() { | |
2487 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
}", "}", "f() {", " new A();", "}"])); | |
2488 resolve(source); | |
2489 assertNoErrors(source); | |
2490 verify([source]); | |
2491 } | |
2492 void test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_
accessor() { | |
2493 Source source = addSource(EngineTestCase.createSource([ | |
2494 "class A {", | |
2495 " int get g => 0;", | |
2496 "}", | |
2497 "abstract class B extends A {", | |
2498 " int get g;", | |
2499 "}", | |
2500 "class C extends B {", | |
2501 "}"])); | |
2502 resolve(source); | |
2503 assertNoErrors(source); | |
2504 verify([source]); | |
2505 } | |
2506 void test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_
method() { | |
2507 Source source = addSource(EngineTestCase.createSource([ | |
2508 "class A {", | |
2509 " m(p) {}", | |
2510 "}", | |
2511 "abstract class B extends A {", | |
2512 " m(p);", | |
2513 "}", | |
2514 "class C extends B {", | |
2515 "}"])); | |
2516 resolve(source); | |
2517 assertNoErrors(source); | |
2518 verify([source]); | |
2519 } | |
2520 void test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_accessor() { | |
2521 Source source = addSource(EngineTestCase.createSource([ | |
2522 "abstract class A {", | |
2523 " int get g;", | |
2524 "}", | |
2525 "class B extends A {", | |
2526 " noSuchMethod(v) => '';", | |
2527 "}"])); | |
2528 resolve(source); | |
2529 assertNoErrors(source); | |
2530 verify([source]); | |
2531 } | |
2532 void test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_method() { | |
2533 Source source = addSource(EngineTestCase.createSource([ | |
2534 "abstract class A {", | |
2535 " m(p);", | |
2536 "}", | |
2537 "class B extends A {", | |
2538 " noSuchMethod(v) => '';", | |
2539 "}"])); | |
2540 resolve(source); | |
2541 assertNoErrors(source); | |
2542 verify([source]); | |
2543 } | |
2544 void test_nonBoolExpression_functionType() { | |
2545 Source source = addSource(EngineTestCase.createSource([ | |
2546 "bool makeAssertion() => true;", | |
2547 "f() {", | |
2548 " assert(makeAssertion);", | |
2549 "}"])); | |
2550 resolve(source); | |
2551 assertNoErrors(source); | |
2552 verify([source]); | |
2553 } | |
2554 void test_nonBoolExpression_interfaceType() { | |
2555 Source source = addSource(EngineTestCase.createSource(["f() {", " assert(tr
ue);", "}"])); | |
2556 resolve(source); | |
2557 assertNoErrors(source); | |
2558 verify([source]); | |
2559 } | |
2560 void test_nonConstantDefaultValue_function_named() { | |
2561 Source source = addSource(EngineTestCase.createSource(["f({x : 2 + 3}) {}"])
); | |
2562 resolve(source); | |
2563 assertNoErrors(source); | |
2564 verify([source]); | |
2565 } | |
2566 void test_nonConstantDefaultValue_function_positional() { | |
2567 Source source = addSource(EngineTestCase.createSource(["f([x = 2 + 3]) {}"])
); | |
2568 resolve(source); | |
2569 assertNoErrors(source); | |
2570 verify([source]); | |
2571 } | |
2572 void test_nonConstantDefaultValue_inConstructor_named() { | |
2573 Source source = addSource(EngineTestCase.createSource(["class A {", " A({x
: 2 + 3}) {}", "}"])); | |
2574 resolve(source); | |
2575 assertNoErrors(source); | |
2576 verify([source]); | |
2577 } | |
2578 void test_nonConstantDefaultValue_inConstructor_positional() { | |
2579 Source source = addSource(EngineTestCase.createSource(["class A {", " A([x
= 2 + 3]) {}", "}"])); | |
2580 resolve(source); | |
2581 assertNoErrors(source); | |
2582 verify([source]); | |
2583 } | |
2584 void test_nonConstantDefaultValue_method_named() { | |
2585 Source source = addSource(EngineTestCase.createSource(["class A {", " m({x
: 2 + 3}) {}", "}"])); | |
2586 resolve(source); | |
2587 assertNoErrors(source); | |
2588 verify([source]); | |
2589 } | |
2590 void test_nonConstantDefaultValue_method_positional() { | |
2591 Source source = addSource(EngineTestCase.createSource(["class A {", " m([x
= 2 + 3]) {}", "}"])); | |
2592 resolve(source); | |
2593 assertNoErrors(source); | |
2594 verify([source]); | |
2595 } | |
2596 void test_nonConstantValueInInitializer_namedArgument() { | |
2597 Source source = addSource(EngineTestCase.createSource([ | |
2598 "class A {", | |
2599 " final a;", | |
2600 " const A({this.a});", | |
2601 "}", | |
2602 "class B extends A {", | |
2603 " const B({b}) : super(a: b);", | |
2604 "}"])); | |
2605 resolve(source); | |
2606 assertNoErrors(source); | |
2607 verify([source]); | |
2608 } | |
2609 void test_nonConstCaseExpression() { | |
2610 Source source = addSource(EngineTestCase.createSource([ | |
2611 "f(Type t) {", | |
2612 " switch (t) {", | |
2613 " case bool:", | |
2614 " case int:", | |
2615 " return true;", | |
2616 " default:", | |
2617 " return false;", | |
2618 " }", | |
2619 "}"])); | |
2620 resolve(source); | |
2621 assertNoErrors(source); | |
2622 verify([source]); | |
2623 } | |
2624 void test_nonConstMapAsExpressionStatement_const() { | |
2625 Source source = addSource(EngineTestCase.createSource(["f() {", " const {'a
' : 0, 'b' : 1};", "}"])); | |
2626 resolve(source); | |
2627 assertNoErrors(source); | |
2628 verify([source]); | |
2629 } | |
2630 void test_nonConstMapAsExpressionStatement_notExpressionStatement() { | |
2631 Source source = addSource(EngineTestCase.createSource(["f() {", " var m = {
'a' : 0, 'b' : 1};", "}"])); | |
2632 resolve(source); | |
2633 assertNoErrors(source); | |
2634 verify([source]); | |
2635 } | |
2636 void test_nonConstMapAsExpressionStatement_typeArguments() { | |
2637 Source source = addSource(EngineTestCase.createSource(["f() {", " <String,
int> {'a' : 0, 'b' : 1};", "}"])); | |
2638 resolve(source); | |
2639 assertNoErrors(source); | |
2640 verify([source]); | |
2641 } | |
2642 void test_nonConstValueInInitializer_binary_bool() { | |
2643 Source source = addSource(EngineTestCase.createSource([ | |
2644 "class A {", | |
2645 " final v;", | |
2646 " const A.a1(bool p) : v = p && true;", | |
2647 " const A.a2(bool p) : v = true && p;", | |
2648 " const A.b1(bool p) : v = p || true;", | |
2649 " const A.b2(bool p) : v = true || p;", | |
2650 "}"])); | |
2651 resolve(source); | |
2652 assertErrors(source, [HintCode.DEAD_CODE]); | |
2653 verify([source]); | |
2654 } | |
2655 void test_nonConstValueInInitializer_binary_dynamic() { | |
2656 Source source = addSource(EngineTestCase.createSource([ | |
2657 "class A {", | |
2658 " final v;", | |
2659 " const A.a1(p) : v = p + 5;", | |
2660 " const A.a2(p) : v = 5 + p;", | |
2661 " const A.b1(p) : v = p - 5;", | |
2662 " const A.b2(p) : v = 5 - p;", | |
2663 " const A.c1(p) : v = p * 5;", | |
2664 " const A.c2(p) : v = 5 * p;", | |
2665 " const A.d1(p) : v = p / 5;", | |
2666 " const A.d2(p) : v = 5 / p;", | |
2667 " const A.e1(p) : v = p ~/ 5;", | |
2668 " const A.e2(p) : v = 5 ~/ p;", | |
2669 " const A.f1(p) : v = p > 5;", | |
2670 " const A.f2(p) : v = 5 > p;", | |
2671 " const A.g1(p) : v = p < 5;", | |
2672 " const A.g2(p) : v = 5 < p;", | |
2673 " const A.h1(p) : v = p >= 5;", | |
2674 " const A.h2(p) : v = 5 >= p;", | |
2675 " const A.i1(p) : v = p <= 5;", | |
2676 " const A.i2(p) : v = 5 <= p;", | |
2677 " const A.j1(p) : v = p % 5;", | |
2678 " const A.j2(p) : v = 5 % p;", | |
2679 "}"])); | |
2680 resolve(source); | |
2681 assertNoErrors(source); | |
2682 } | |
2683 void test_nonConstValueInInitializer_binary_int() { | |
2684 Source source = addSource(EngineTestCase.createSource([ | |
2685 "class A {", | |
2686 " final v;", | |
2687 " const A.a1(int p) : v = p ^ 5;", | |
2688 " const A.a2(int p) : v = 5 ^ p;", | |
2689 " const A.b1(int p) : v = p & 5;", | |
2690 " const A.b2(int p) : v = 5 & p;", | |
2691 " const A.c1(int p) : v = p | 5;", | |
2692 " const A.c2(int p) : v = 5 | p;", | |
2693 " const A.d1(int p) : v = p >> 5;", | |
2694 " const A.d2(int p) : v = 5 >> p;", | |
2695 " const A.e1(int p) : v = p << 5;", | |
2696 " const A.e2(int p) : v = 5 << p;", | |
2697 "}"])); | |
2698 resolve(source); | |
2699 assertNoErrors(source); | |
2700 verify([source]); | |
2701 } | |
2702 void test_nonConstValueInInitializer_binary_num() { | |
2703 Source source = addSource(EngineTestCase.createSource([ | |
2704 "class A {", | |
2705 " final v;", | |
2706 " const A.a1(num p) : v = p + 5;", | |
2707 " const A.a2(num p) : v = 5 + p;", | |
2708 " const A.b1(num p) : v = p - 5;", | |
2709 " const A.b2(num p) : v = 5 - p;", | |
2710 " const A.c1(num p) : v = p * 5;", | |
2711 " const A.c2(num p) : v = 5 * p;", | |
2712 " const A.d1(num p) : v = p / 5;", | |
2713 " const A.d2(num p) : v = 5 / p;", | |
2714 " const A.e1(num p) : v = p ~/ 5;", | |
2715 " const A.e2(num p) : v = 5 ~/ p;", | |
2716 " const A.f1(num p) : v = p > 5;", | |
2717 " const A.f2(num p) : v = 5 > p;", | |
2718 " const A.g1(num p) : v = p < 5;", | |
2719 " const A.g2(num p) : v = 5 < p;", | |
2720 " const A.h1(num p) : v = p >= 5;", | |
2721 " const A.h2(num p) : v = 5 >= p;", | |
2722 " const A.i1(num p) : v = p <= 5;", | |
2723 " const A.i2(num p) : v = 5 <= p;", | |
2724 " const A.j1(num p) : v = p % 5;", | |
2725 " const A.j2(num p) : v = 5 % p;", | |
2726 "}"])); | |
2727 resolve(source); | |
2728 assertNoErrors(source); | |
2729 verify([source]); | |
2730 } | |
2731 void test_nonConstValueInInitializer_field() { | |
2732 Source source = addSource(EngineTestCase.createSource([ | |
2733 "class A {", | |
2734 " final int a;", | |
2735 " const A() : a = 5;", | |
2736 "}"])); | |
2737 resolve(source); | |
2738 assertNoErrors(source); | |
2739 verify([source]); | |
2740 } | |
2741 void test_nonConstValueInInitializer_redirecting() { | |
2742 Source source = addSource(EngineTestCase.createSource([ | |
2743 "class A {", | |
2744 " const A.named(p);", | |
2745 " const A() : this.named(42);", | |
2746 "}"])); | |
2747 resolve(source); | |
2748 assertNoErrors(source); | |
2749 verify([source]); | |
2750 } | |
2751 void test_nonConstValueInInitializer_super() { | |
2752 Source source = addSource(EngineTestCase.createSource([ | |
2753 "class A {", | |
2754 " const A(p);", | |
2755 "}", | |
2756 "class B extends A {", | |
2757 " const B() : super(42);", | |
2758 "}"])); | |
2759 resolve(source); | |
2760 assertNoErrors(source); | |
2761 verify([source]); | |
2762 } | |
2763 void test_nonConstValueInInitializer_unary() { | |
2764 Source source = addSource(EngineTestCase.createSource([ | |
2765 "class A {", | |
2766 " final v;", | |
2767 " const A.a(bool p) : v = !p;", | |
2768 " const A.b(int p) : v = ~p;", | |
2769 " const A.c(num p) : v = -p;", | |
2770 "}"])); | |
2771 resolve(source); | |
2772 assertNoErrors(source); | |
2773 verify([source]); | |
2774 } | |
2775 void test_nonGenerativeConstructor() { | |
2776 Source source = addSource(EngineTestCase.createSource([ | |
2777 "class A {", | |
2778 " A.named() {}", | |
2779 " factory A() {}", | |
2780 "}", | |
2781 "class B extends A {", | |
2782 " B() : super.named();", | |
2783 "}"])); | |
2784 resolve(source); | |
2785 assertNoErrors(source); | |
2786 verify([source]); | |
2787 } | |
2788 void test_nonTypeInCatchClause_isClass() { | |
2789 Source source = addSource(EngineTestCase.createSource([ | |
2790 "f() {", | |
2791 " try {", | |
2792 " } on String catch (e) {", | |
2793 " }", | |
2794 "}"])); | |
2795 resolve(source); | |
2796 assertNoErrors(source); | |
2797 verify([source]); | |
2798 } | |
2799 void test_nonTypeInCatchClause_isFunctionTypeAlias() { | |
2800 Source source = addSource(EngineTestCase.createSource([ | |
2801 "typedef F();", | |
2802 "f() {", | |
2803 " try {", | |
2804 " } on F catch (e) {", | |
2805 " }", | |
2806 "}"])); | |
2807 resolve(source); | |
2808 assertNoErrors(source); | |
2809 verify([source]); | |
2810 } | |
2811 void test_nonTypeInCatchClause_isTypeParameter() { | |
2812 Source source = addSource(EngineTestCase.createSource([ | |
2813 "class A<T> {", | |
2814 " f() {", | |
2815 " try {", | |
2816 " } on T catch (e) {", | |
2817 " }", | |
2818 " }", | |
2819 "}"])); | |
2820 resolve(source); | |
2821 assertNoErrors(source); | |
2822 verify([source]); | |
2823 } | |
2824 void test_nonTypeInCatchClause_noType() { | |
2825 Source source = addSource(EngineTestCase.createSource(["f() {", " try {", "
} catch (e) {", " }", "}"])); | |
2826 resolve(source); | |
2827 assertNoErrors(source); | |
2828 verify([source]); | |
2829 } | |
2830 void test_nonVoidReturnForOperator_no() { | |
2831 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor []=(a, b) {}", "}"])); | |
2832 resolve(source); | |
2833 assertNoErrors(source); | |
2834 verify([source]); | |
2835 } | |
2836 void test_nonVoidReturnForOperator_void() { | |
2837 Source source = addSource(EngineTestCase.createSource(["class A {", " void
operator []=(a, b) {}", "}"])); | |
2838 resolve(source); | |
2839 assertNoErrors(source); | |
2840 verify([source]); | |
2841 } | |
2842 void test_nonVoidReturnForSetter_function_no() { | |
2843 Source source = addSource("set x(v) {}"); | |
2844 resolve(source); | |
2845 assertNoErrors(source); | |
2846 verify([source]); | |
2847 } | |
2848 void test_nonVoidReturnForSetter_function_void() { | |
2849 Source source = addSource("void set x(v) {}"); | |
2850 resolve(source); | |
2851 assertNoErrors(source); | |
2852 verify([source]); | |
2853 } | |
2854 void test_nonVoidReturnForSetter_method_no() { | |
2855 Source source = addSource(EngineTestCase.createSource(["class A {", " set x
(v) {}", "}"])); | |
2856 resolve(source); | |
2857 assertNoErrors(source); | |
2858 verify([source]); | |
2859 } | |
2860 void test_nonVoidReturnForSetter_method_void() { | |
2861 Source source = addSource(EngineTestCase.createSource(["class A {", " void
set x(v) {}", "}"])); | |
2862 resolve(source); | |
2863 assertNoErrors(source); | |
2864 verify([source]); | |
2865 } | |
2866 void test_null_callMethod() { | |
2867 Source source = addSource(EngineTestCase.createSource(["main() {", " null.m
();", "}"])); | |
2868 resolve(source); | |
2869 assertNoErrors(source); | |
2870 } | |
2871 void test_null_callOperator() { | |
2872 Source source = addSource(EngineTestCase.createSource([ | |
2873 "main() {", | |
2874 " null + 5;", | |
2875 " null == 5;", | |
2876 " null[0];", | |
2877 "}"])); | |
2878 resolve(source); | |
2879 assertNoErrors(source); | |
2880 } | |
2881 void test_optionalParameterInOperator_required() { | |
2882 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor +(p) {}", "}"])); | |
2883 resolve(source); | |
2884 assertNoErrors(source); | |
2885 verify([source]); | |
2886 } | |
2887 void test_prefixCollidesWithTopLevelMembers() { | |
2888 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A {}"])); | |
2889 Source source = addSource(EngineTestCase.createSource([ | |
2890 "import 'lib.dart' as p;", | |
2891 "typedef P();", | |
2892 "p2() {}", | |
2893 "var p3;", | |
2894 "class p4 {}", | |
2895 "p.A a;"])); | |
2896 resolve(source); | |
2897 assertNoErrors(source); | |
2898 verify([source]); | |
2899 } | |
2900 void test_propagateTypeArgs_intoBounds() { | |
2901 Source source = addSource(EngineTestCase.createSource([ | |
2902 "abstract class A<E> {}", | |
2903 "abstract class B<F> implements A<F>{}", | |
2904 "abstract class C<G, H extends A<G>> {}", | |
2905 "class D<I> extends C<I, B<I>> {}"])); | |
2906 resolve(source); | |
2907 assertNoErrors(source); | |
2908 verify([source]); | |
2909 } | |
2910 void test_propagateTypeArgs_intoSupertype() { | |
2911 Source source = addSource(EngineTestCase.createSource([ | |
2912 "class A<T> {", | |
2913 " A(T p);", | |
2914 " A.named(T p);", | |
2915 "}", | |
2916 "class B<S> extends A<S> {", | |
2917 " B(S p) : super(p);", | |
2918 " B.named(S p) : super.named(p);", | |
2919 "}"])); | |
2920 resolve(source); | |
2921 assertNoErrors(source); | |
2922 verify([source]); | |
2923 } | |
2924 void test_proxy_annotation_prefixed() { | |
2925 Source source = addSource(EngineTestCase.createSource([ | |
2926 "library L;", | |
2927 "import 'meta.dart';", | |
2928 "@proxy", | |
2929 "class A {}", | |
2930 "f(A a) {", | |
2931 " a.m();", | |
2932 " var x = a.g;", | |
2933 " a.s = 1;", | |
2934 " var y = a + a;", | |
2935 " a++;", | |
2936 " ++a;", | |
2937 "}"])); | |
2938 addSource2("/meta.dart", EngineTestCase.createSource([ | |
2939 "library meta;", | |
2940 "const proxy = const _Proxy();", | |
2941 "class _Proxy { const _Proxy(); }"])); | |
2942 resolve(source); | |
2943 assertNoErrors(source); | |
2944 } | |
2945 void test_proxy_annotation_prefixed2() { | |
2946 Source source = addSource(EngineTestCase.createSource([ | |
2947 "library L;", | |
2948 "import 'meta.dart';", | |
2949 "@proxy", | |
2950 "class A {}", | |
2951 "class B {", | |
2952 " f(A a) {", | |
2953 " a.m();", | |
2954 " var x = a.g;", | |
2955 " a.s = 1;", | |
2956 " var y = a + a;", | |
2957 " a++;", | |
2958 " ++a;", | |
2959 " }", | |
2960 "}"])); | |
2961 addSource2("/meta.dart", EngineTestCase.createSource([ | |
2962 "library meta;", | |
2963 "const proxy = const _Proxy();", | |
2964 "class _Proxy { const _Proxy(); }"])); | |
2965 resolve(source); | |
2966 assertNoErrors(source); | |
2967 } | |
2968 void test_proxy_annotation_prefixed3() { | |
2969 Source source = addSource(EngineTestCase.createSource([ | |
2970 "library L;", | |
2971 "import 'meta.dart';", | |
2972 "class B {", | |
2973 " f(A a) {", | |
2974 " a.m();", | |
2975 " var x = a.g;", | |
2976 " a.s = 1;", | |
2977 " var y = a + a;", | |
2978 " a++;", | |
2979 " ++a;", | |
2980 " }", | |
2981 "}", | |
2982 "@proxy", | |
2983 "class A {}"])); | |
2984 addSource2("/meta.dart", EngineTestCase.createSource([ | |
2985 "library meta;", | |
2986 "const proxy = const _Proxy();", | |
2987 "class _Proxy { const _Proxy(); }"])); | |
2988 resolve(source); | |
2989 assertNoErrors(source); | |
2990 } | |
2991 void test_proxy_annotation_simple() { | |
2992 Source source = addSource(EngineTestCase.createSource([ | |
2993 "library L;", | |
2994 "import 'meta.dart';", | |
2995 "@proxy", | |
2996 "class B {", | |
2997 " m() {", | |
2998 " n();", | |
2999 " var x = g;", | |
3000 " s = 1;", | |
3001 " var y = this + this;", | |
3002 " }", | |
3003 "}"])); | |
3004 addSource2("/meta.dart", EngineTestCase.createSource([ | |
3005 "library meta;", | |
3006 "const proxy = const _Proxy();", | |
3007 "class _Proxy { const _Proxy(); }"])); | |
3008 resolve(source); | |
3009 assertNoErrors(source); | |
3010 } | |
3011 void test_recursiveConstructorRedirect() { | |
3012 Source source = addSource(EngineTestCase.createSource([ | |
3013 "class A {", | |
3014 " A.a() : this.b();", | |
3015 " A.b() : this.c();", | |
3016 " A.c() {}", | |
3017 "}"])); | |
3018 resolve(source); | |
3019 assertNoErrors(source); | |
3020 verify([source]); | |
3021 } | |
3022 void test_recursiveFactoryRedirect() { | |
3023 Source source = addSource(EngineTestCase.createSource([ | |
3024 "class A {", | |
3025 " factory A() = B;", | |
3026 "}", | |
3027 "class B implements A {", | |
3028 " factory B() = C;", | |
3029 "}", | |
3030 "class C implements B {", | |
3031 " factory C() {}", | |
3032 "}"])); | |
3033 resolve(source); | |
3034 assertNoErrors(source); | |
3035 verify([source]); | |
3036 } | |
3037 void test_redirectToInvalidFunctionType() { | |
3038 Source source = addSource(EngineTestCase.createSource([ | |
3039 "class A implements B {", | |
3040 " A(int p) {}", | |
3041 "}", | |
3042 "class B {", | |
3043 " factory B(int p) = A;", | |
3044 "}"])); | |
3045 resolve(source); | |
3046 assertNoErrors(source); | |
3047 verify([source]); | |
3048 } | |
3049 void test_redirectToInvalidReturnType() { | |
3050 Source source = addSource(EngineTestCase.createSource([ | |
3051 "class A {", | |
3052 " A() {}", | |
3053 "}", | |
3054 "class B extends A {", | |
3055 " factory B() = A;", | |
3056 "}"])); | |
3057 resolve(source); | |
3058 assertNoErrors(source); | |
3059 verify([source]); | |
3060 } | |
3061 void test_redirectToNonConstConstructor() { | |
3062 Source source = addSource(EngineTestCase.createSource([ | |
3063 "class A {", | |
3064 " const A.a();", | |
3065 " const factory A.b() = A.a;", | |
3066 "}"])); | |
3067 resolve(source); | |
3068 assertNoErrors(source); | |
3069 verify([source]); | |
3070 } | |
3071 void test_referenceToDeclaredVariableInInitializer_constructorName() { | |
3072 Source source = addSource(EngineTestCase.createSource([ | |
3073 "class A {", | |
3074 " A.x() {}", | |
3075 "}", | |
3076 "f() {", | |
3077 " var x = new A.x();", | |
3078 "}"])); | |
3079 resolve(source); | |
3080 assertNoErrors(source); | |
3081 verify([source]); | |
3082 } | |
3083 void test_referenceToDeclaredVariableInInitializer_methodName() { | |
3084 Source source = addSource(EngineTestCase.createSource([ | |
3085 "class A {", | |
3086 " x() {}", | |
3087 "}", | |
3088 "f(A a) {", | |
3089 " var x = a.x();", | |
3090 "}"])); | |
3091 resolve(source); | |
3092 assertNoErrors(source); | |
3093 verify([source]); | |
3094 } | |
3095 void test_referenceToDeclaredVariableInInitializer_propertyName() { | |
3096 Source source = addSource(EngineTestCase.createSource([ | |
3097 "class A {", | |
3098 " var x;", | |
3099 "}", | |
3100 "f(A a) {", | |
3101 " var x = a.x;", | |
3102 "}"])); | |
3103 resolve(source); | |
3104 assertNoErrors(source); | |
3105 verify([source]); | |
3106 } | |
3107 void test_rethrowOutsideCatch() { | |
3108 Source source = addSource(EngineTestCase.createSource([ | |
3109 "class A {", | |
3110 " void m() {", | |
3111 " try {} catch (e) {rethrow;}", | |
3112 " }", | |
3113 "}"])); | |
3114 resolve(source); | |
3115 assertNoErrors(source); | |
3116 verify([source]); | |
3117 } | |
3118 void test_returnInGenerativeConstructor() { | |
3119 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
return; }", "}"])); | |
3120 resolve(source); | |
3121 assertNoErrors(source); | |
3122 verify([source]); | |
3123 } | |
3124 void test_returnOfInvalidType_dynamic() { | |
3125 Source source = addSource(EngineTestCase.createSource([ | |
3126 "class TypeError {}", | |
3127 "class A {", | |
3128 " static void testLogicalOp() {", | |
3129 " testOr(a, b, onTypeError) {", | |
3130 " try {", | |
3131 " return a || b;", | |
3132 " } on TypeError catch (t) {", | |
3133 " return onTypeError;", | |
3134 " }", | |
3135 " }", | |
3136 " }", | |
3137 "}"])); | |
3138 resolve(source); | |
3139 assertNoErrors(source); | |
3140 verify([source]); | |
3141 } | |
3142 void test_returnOfInvalidType_dynamicAsTypeArgument() { | |
3143 Source source = addSource(EngineTestCase.createSource([ | |
3144 "class I<T> {", | |
3145 " factory I() => new A<T>();", | |
3146 "}", | |
3147 "class A<T> implements I {", | |
3148 "}"])); | |
3149 resolve(source); | |
3150 assertNoErrors(source); | |
3151 verify([source]); | |
3152 } | |
3153 void test_returnOfInvalidType_subtype() { | |
3154 Source source = addSource(EngineTestCase.createSource([ | |
3155 "class A {}", | |
3156 "class B extends A {}", | |
3157 "A f(B b) { return b; }"])); | |
3158 resolve(source); | |
3159 assertNoErrors(source); | |
3160 verify([source]); | |
3161 } | |
3162 void test_returnOfInvalidType_supertype() { | |
3163 Source source = addSource(EngineTestCase.createSource([ | |
3164 "class A {}", | |
3165 "class B extends A {}", | |
3166 "B f(A a) { return a; }"])); | |
3167 resolve(source); | |
3168 assertNoErrors(source); | |
3169 verify([source]); | |
3170 } | |
3171 void test_returnOfInvalidType_void() { | |
3172 Source source = addSource(EngineTestCase.createSource([ | |
3173 "void f1() {}", | |
3174 "void f2() { return; }", | |
3175 "void f3() { return null; }", | |
3176 "void f4() { return g1(); }", | |
3177 "void f5() { return g2(); }", | |
3178 "g1() {}", | |
3179 "void g2() {}", | |
3180 ""])); | |
3181 resolve(source); | |
3182 assertNoErrors(source); | |
3183 verify([source]); | |
3184 } | |
3185 void test_returnWithoutValue_noReturnType() { | |
3186 Source source = addSource(EngineTestCase.createSource(["f() { return; }"])); | |
3187 resolve(source); | |
3188 assertNoErrors(source); | |
3189 verify([source]); | |
3190 } | |
3191 void test_returnWithoutValue_void() { | |
3192 Source source = addSource(EngineTestCase.createSource(["void f() { return; }
"])); | |
3193 resolve(source); | |
3194 assertNoErrors(source); | |
3195 verify([source]); | |
3196 } | |
3197 void test_staticAccessToInstanceMember_annotation() { | |
3198 Source source = addSource(EngineTestCase.createSource([ | |
3199 "class A {", | |
3200 " const A.name();", | |
3201 "}", | |
3202 "@A.name()", | |
3203 "main() {", | |
3204 "}"])); | |
3205 resolve(source); | |
3206 assertNoErrors(source); | |
3207 verify([source]); | |
3208 } | |
3209 void test_staticAccessToInstanceMember_method() { | |
3210 Source source = addSource(EngineTestCase.createSource([ | |
3211 "class A {", | |
3212 " static m() {}", | |
3213 "}", | |
3214 "main() {", | |
3215 " A.m;", | |
3216 " A.m();", | |
3217 "}"])); | |
3218 resolve(source); | |
3219 assertNoErrors(source); | |
3220 verify([source]); | |
3221 } | |
3222 void test_staticAccessToInstanceMember_propertyAccess_field() { | |
3223 Source source = addSource(EngineTestCase.createSource([ | |
3224 "class A {", | |
3225 " static var f;", | |
3226 "}", | |
3227 "main() {", | |
3228 " A.f;", | |
3229 " A.f = 1;", | |
3230 "}"])); | |
3231 resolve(source); | |
3232 assertNoErrors(source); | |
3233 verify([source]); | |
3234 } | |
3235 void test_staticAccessToInstanceMember_propertyAccess_propertyAccessor() { | |
3236 Source source = addSource(EngineTestCase.createSource([ | |
3237 "class A {", | |
3238 " static get f => 42;", | |
3239 " static set f(x) {}", | |
3240 "}", | |
3241 "main() {", | |
3242 " A.f;", | |
3243 " A.f = 1;", | |
3244 "}"])); | |
3245 resolve(source); | |
3246 assertNoErrors(source); | |
3247 verify([source]); | |
3248 } | |
3249 void test_superInInvalidContext() { | |
3250 Source source = addSource(EngineTestCase.createSource([ | |
3251 "class A {", | |
3252 " m() {}", | |
3253 "}", | |
3254 "class B extends A {", | |
3255 " B() {", | |
3256 " var v = super.m();", | |
3257 " }", | |
3258 " n() {", | |
3259 " var v = super.m();", | |
3260 " }", | |
3261 "}"])); | |
3262 resolve(source); | |
3263 assertNoErrors(source); | |
3264 verify([source]); | |
3265 } | |
3266 void test_typeAliasCannotReferenceItself_returnClass_withTypeAlias() { | |
3267 Source source = addSource(EngineTestCase.createSource(["typedef B A();", "cl
ass B {", " A a;", "}"])); | |
3268 resolve(source); | |
3269 assertNoErrors(source); | |
3270 verify([source]); | |
3271 } | |
3272 void test_typeArgumentNotMatchingBounds_const() { | |
3273 Source source = addSource(EngineTestCase.createSource([ | |
3274 "class A {}", | |
3275 "class B extends A {}", | |
3276 "class G<E extends A> {", | |
3277 " const G();", | |
3278 "}", | |
3279 "f() { return const G<B>(); }"])); | |
3280 resolve(source); | |
3281 assertNoErrors(source); | |
3282 verify([source]); | |
3283 } | |
3284 void test_typeArgumentNotMatchingBounds_new() { | |
3285 Source source = addSource(EngineTestCase.createSource([ | |
3286 "class A {}", | |
3287 "class B extends A {}", | |
3288 "class G<E extends A> {}", | |
3289 "f() { return new G<B>(); }"])); | |
3290 resolve(source); | |
3291 assertNoErrors(source); | |
3292 verify([source]); | |
3293 } | |
3294 void test_typeArgumentNotMatchingBounds_typeArgumentList_0() { | |
3295 Source source = addSource(EngineTestCase.createSource(["abstract class A<T e
xtends A>{}"])); | |
3296 resolve(source); | |
3297 assertNoErrors(source); | |
3298 verify([source]); | |
3299 } | |
3300 void test_typeArgumentNotMatchingBounds_typeArgumentList_1() { | |
3301 Source source = addSource(EngineTestCase.createSource(["abstract class A<T e
xtends A<A>>{}"])); | |
3302 resolve(source); | |
3303 assertNoErrors(source); | |
3304 verify([source]); | |
3305 } | |
3306 void test_typeArgumentNotMatchingBounds_typeArgumentList_20() { | |
3307 Source source = addSource(EngineTestCase.createSource(["abstract class A<T e
xtends A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A<A>>>>>>>>>>>>>>>>>>>>>{}"])); | |
3308 resolve(source); | |
3309 assertNoErrors(source); | |
3310 verify([source]); | |
3311 } | |
3312 void test_typePromotion_booleanAnd_useInRight() { | |
3313 Source source = addSource(EngineTestCase.createSource([ | |
3314 "main(Object p) {", | |
3315 " p is String && p.length != 0;", | |
3316 "}"])); | |
3317 resolve(source); | |
3318 assertNoErrors(source); | |
3319 verify([source]); | |
3320 } | |
3321 void test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_noAssignm
ent() { | |
3322 Source source = addSource(EngineTestCase.createSource([ | |
3323 "callMe(f()) { f(); }", | |
3324 "main(Object p) {", | |
3325 " (p is String) && callMe(() { p.length; });", | |
3326 "}"])); | |
3327 resolve(source); | |
3328 assertNoErrors(source); | |
3329 verify([source]); | |
3330 } | |
3331 void test_typePromotion_conditional_useInThen() { | |
3332 Source source = addSource(EngineTestCase.createSource(["main(Object p) {", "
p is String ? p.length : 0;", "}"])); | |
3333 resolve(source); | |
3334 assertNoErrors(source); | |
3335 verify([source]); | |
3336 } | |
3337 void test_typePromotion_conditional_useInThen_accessedInClosure_noAssignment()
{ | |
3338 Source source = addSource(EngineTestCase.createSource([ | |
3339 "callMe(f()) { f(); }", | |
3340 "main(Object p) {", | |
3341 " p is String ? callMe(() { p.length; }) : 0;", | |
3342 "}"])); | |
3343 resolve(source); | |
3344 assertNoErrors(source); | |
3345 verify([source]); | |
3346 } | |
3347 void test_typePromotion_functionType_arg_ignoreIfNotMoreSpecific() { | |
3348 Source source = addSource(EngineTestCase.createSource([ | |
3349 "typedef FuncB(B b);", | |
3350 "typedef FuncA(A a);", | |
3351 "class A {}", | |
3352 "class B {}", | |
3353 "main(FuncA f) {", | |
3354 " if (f is FuncB) {", | |
3355 " f(new A());", | |
3356 " }", | |
3357 "}"])); | |
3358 resolve(source); | |
3359 assertNoErrors(source); | |
3360 verify([source]); | |
3361 } | |
3362 void test_typePromotion_functionType_return_ignoreIfNotMoreSpecific() { | |
3363 Source source = addSource(EngineTestCase.createSource([ | |
3364 "typedef FuncDynToDyn(x);", | |
3365 "typedef void FuncDynToVoid(x);", | |
3366 "class A {}", | |
3367 "main(FuncDynToDyn f) {", | |
3368 " if (f is FuncDynToVoid) {", | |
3369 " A a = f(null);", | |
3370 " }", | |
3371 "}"])); | |
3372 resolve(source); | |
3373 assertNoErrors(source); | |
3374 verify([source]); | |
3375 } | |
3376 void test_typePromotion_functionType_return_voidToDynamic() { | |
3377 Source source = addSource(EngineTestCase.createSource([ | |
3378 "typedef FuncDynToDyn(x);", | |
3379 "typedef void FuncDynToVoid(x);", | |
3380 "class A {}", | |
3381 "main(FuncDynToVoid f) {", | |
3382 " if (f is FuncDynToDyn) {", | |
3383 " A a = f(null);", | |
3384 " }", | |
3385 "}"])); | |
3386 resolve(source); | |
3387 assertNoErrors(source); | |
3388 verify([source]); | |
3389 } | |
3390 void test_typePromotion_if_accessedInClosure_noAssignment() { | |
3391 Source source = addSource(EngineTestCase.createSource([ | |
3392 "callMe(f()) { f(); }", | |
3393 "main(Object p) {", | |
3394 " if (p is String) {", | |
3395 " callMe(() {", | |
3396 " p.length;", | |
3397 " });", | |
3398 " }", | |
3399 "}"])); | |
3400 resolve(source); | |
3401 assertNoErrors(source); | |
3402 verify([source]); | |
3403 } | |
3404 void test_typePromotion_if_hasAssignment_outsideAfter() { | |
3405 Source source = addSource(EngineTestCase.createSource([ | |
3406 "main(Object p) {", | |
3407 " if (p is String) {", | |
3408 " p.length;", | |
3409 " }", | |
3410 " p = 0;", | |
3411 "}"])); | |
3412 resolve(source); | |
3413 assertNoErrors(source); | |
3414 verify([source]); | |
3415 } | |
3416 void test_typePromotion_if_hasAssignment_outsideBefore() { | |
3417 Source source = addSource(EngineTestCase.createSource([ | |
3418 "main(Object p, Object p2) {", | |
3419 " p = p2;", | |
3420 " if (p is String) {", | |
3421 " p.length;", | |
3422 " }", | |
3423 "}"])); | |
3424 resolve(source); | |
3425 assertNoErrors(source); | |
3426 verify([source]); | |
3427 } | |
3428 void test_typePromotion_if_is_and_left() { | |
3429 Source source = addSource(EngineTestCase.createSource([ | |
3430 "bool tt() => true;", | |
3431 "main(Object p) {", | |
3432 " if (p is String && tt()) {", | |
3433 " p.length;", | |
3434 " }", | |
3435 "}"])); | |
3436 resolve(source); | |
3437 assertNoErrors(source); | |
3438 verify([source]); | |
3439 } | |
3440 void test_typePromotion_if_is_and_right() { | |
3441 Source source = addSource(EngineTestCase.createSource([ | |
3442 "bool tt() => true;", | |
3443 "main(Object p) {", | |
3444 " if (tt() && p is String) {", | |
3445 " p.length;", | |
3446 " }", | |
3447 "}"])); | |
3448 resolve(source); | |
3449 assertNoErrors(source); | |
3450 verify([source]); | |
3451 } | |
3452 void test_typePromotion_if_is_and_subThenSuper() { | |
3453 Source source = addSource(EngineTestCase.createSource([ | |
3454 "class A {", | |
3455 " var a;", | |
3456 "}", | |
3457 "class B extends A {", | |
3458 " var b;", | |
3459 "}", | |
3460 "main(Object p) {", | |
3461 " if (p is B && p is A) {", | |
3462 " p.a;", | |
3463 " p.b;", | |
3464 " }", | |
3465 "}"])); | |
3466 resolve(source); | |
3467 assertNoErrors(source); | |
3468 verify([source]); | |
3469 } | |
3470 void test_typePromotion_if_is_parenthesized() { | |
3471 Source source = addSource(EngineTestCase.createSource([ | |
3472 "main(Object p) {", | |
3473 " if ((p is String)) {", | |
3474 " p.length;", | |
3475 " }", | |
3476 "}"])); | |
3477 resolve(source); | |
3478 assertNoErrors(source); | |
3479 verify([source]); | |
3480 } | |
3481 void test_typePromotion_if_is_single() { | |
3482 Source source = addSource(EngineTestCase.createSource([ | |
3483 "main(Object p) {", | |
3484 " if (p is String) {", | |
3485 " p.length;", | |
3486 " }", | |
3487 "}"])); | |
3488 resolve(source); | |
3489 assertNoErrors(source); | |
3490 verify([source]); | |
3491 } | |
3492 void test_undefinedConstructorInInitializer_explicit_named() { | |
3493 Source source = addSource(EngineTestCase.createSource([ | |
3494 "class A {", | |
3495 " A.named() {}", | |
3496 "}", | |
3497 "class B extends A {", | |
3498 " B() : super.named();", | |
3499 "}"])); | |
3500 resolve(source); | |
3501 assertNoErrors(source); | |
3502 verify([source]); | |
3503 } | |
3504 void test_undefinedConstructorInInitializer_explicit_unnamed() { | |
3505 Source source = addSource(EngineTestCase.createSource([ | |
3506 "class A {", | |
3507 " A() {}", | |
3508 "}", | |
3509 "class B extends A {", | |
3510 " B() : super();", | |
3511 "}"])); | |
3512 resolve(source); | |
3513 assertNoErrors(source); | |
3514 verify([source]); | |
3515 } | |
3516 void test_undefinedConstructorInInitializer_hasOptionalParameters() { | |
3517 Source source = addSource(EngineTestCase.createSource([ | |
3518 "class A {", | |
3519 " A([p]) {}", | |
3520 "}", | |
3521 "class B extends A {", | |
3522 " B();", | |
3523 "}"])); | |
3524 resolve(source); | |
3525 assertNoErrors(source); | |
3526 verify([source]); | |
3527 } | |
3528 void test_undefinedConstructorInInitializer_implicit() { | |
3529 Source source = addSource(EngineTestCase.createSource([ | |
3530 "class A {", | |
3531 " A() {}", | |
3532 "}", | |
3533 "class B extends A {", | |
3534 " B();", | |
3535 "}"])); | |
3536 resolve(source); | |
3537 assertNoErrors(source); | |
3538 verify([source]); | |
3539 } | |
3540 void test_undefinedConstructorInInitializer_implicit_typeAlias() { | |
3541 Source source = addSource(EngineTestCase.createSource([ | |
3542 "class M {}", | |
3543 "class A = Object with M;", | |
3544 "class B extends A {", | |
3545 " B();", | |
3546 "}"])); | |
3547 resolve(source); | |
3548 assertNoErrors(source); | |
3549 verify([source]); | |
3550 } | |
3551 void test_undefinedConstructorInInitializer_redirecting() { | |
3552 Source source = addSource(EngineTestCase.createSource([ | |
3553 "class Foo {", | |
3554 " Foo.ctor();", | |
3555 "}", | |
3556 "class Bar extends Foo {", | |
3557 " Bar() : this.ctor();", | |
3558 " Bar.ctor() : super.ctor();", | |
3559 "}"])); | |
3560 resolve(source); | |
3561 assertNoErrors(source); | |
3562 verify([source]); | |
3563 } | |
3564 void test_undefinedGetter_typeSubstitution() { | |
3565 Source source = addSource(EngineTestCase.createSource([ | |
3566 "class A<E> {", | |
3567 " E element;", | |
3568 "}", | |
3569 "class B extends A<List> {", | |
3570 " m() {", | |
3571 " element.last;", | |
3572 " }", | |
3573 "}"])); | |
3574 resolve(source); | |
3575 assertNoErrors(source); | |
3576 verify([source]); | |
3577 } | |
3578 void test_undefinedIdentifier_hide() { | |
3579 Source source = addSource(EngineTestCase.createSource(["library L;", "export
'lib1.dart' hide a;"])); | |
3580 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;"])); | |
3581 resolve(source); | |
3582 assertNoErrors(source); | |
3583 verify([source]); | |
3584 } | |
3585 void test_undefinedIdentifier_show() { | |
3586 Source source = addSource(EngineTestCase.createSource(["library L;", "export
'lib1.dart' show a;"])); | |
3587 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;"])); | |
3588 resolve(source); | |
3589 assertNoErrors(source); | |
3590 verify([source]); | |
3591 } | |
3592 void test_undefinedMethod_functionExpression_callMethod() { | |
3593 Source source = addSource(EngineTestCase.createSource(["main() {", " (() =>
null).call();", "}"])); | |
3594 resolve(source); | |
3595 assertNoErrors(source); | |
3596 } | |
3597 void test_undefinedMethod_functionExpression_directCall() { | |
3598 Source source = addSource(EngineTestCase.createSource(["main() {", " (() =>
null)();", "}"])); | |
3599 resolve(source); | |
3600 assertNoErrors(source); | |
3601 } | |
3602 void test_undefinedOperator_index() { | |
3603 Source source = addSource(EngineTestCase.createSource([ | |
3604 "class A {", | |
3605 " operator [](a) {}", | |
3606 " operator []=(a, b) {}", | |
3607 "}", | |
3608 "f(A a) {", | |
3609 " a[0];", | |
3610 " a[0] = 1;", | |
3611 "}"])); | |
3612 resolve(source); | |
3613 assertNoErrors(source); | |
3614 verify([source]); | |
3615 } | |
3616 void test_undefinedOperator_tilde() { | |
3617 Source source = addSource(EngineTestCase.createSource(["const A = 3;", "cons
t B = ~((1 << A) - 1);"])); | |
3618 resolve(source); | |
3619 assertNoErrors(source); | |
3620 verify([source]); | |
3621 } | |
3622 void test_undefinedSetter_importWithPrefix() { | |
3623 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "set y(
int value) {}"])); | |
3624 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
x;", "main() {", " x.y = 0;", "}"])); | |
3625 resolve(source); | |
3626 assertNoErrors(source); | |
3627 verify([source]); | |
3628 } | |
3629 void test_undefinedSuperMethod_field() { | |
3630 Source source = addSource(EngineTestCase.createSource([ | |
3631 "class A {", | |
3632 " var m;", | |
3633 "}", | |
3634 "class B extends A {", | |
3635 " f() {", | |
3636 " super.m();", | |
3637 " }", | |
3638 "}"])); | |
3639 resolve(source); | |
3640 assertNoErrors(source); | |
3641 verify([source]); | |
3642 } | |
3643 void test_undefinedSuperMethod_method() { | |
3644 Source source = addSource(EngineTestCase.createSource([ | |
3645 "class A {", | |
3646 " m() {}", | |
3647 "}", | |
3648 "class B extends A {", | |
3649 " f() {", | |
3650 " super.m();", | |
3651 " }", | |
3652 "}"])); | |
3653 resolve(source); | |
3654 assertNoErrors(source); | |
3655 verify([source]); | |
3656 } | |
3657 void test_wrongNumberOfParametersForOperator_index() { | |
3658 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor []=(a, b) {}", "}"])); | |
3659 resolve(source); | |
3660 assertNoErrors(source); | |
3661 verify([source]); | |
3662 } | |
3663 void test_wrongNumberOfParametersForOperator_minus() { | |
3664 check_wrongNumberOfParametersForOperator("-", ""); | |
3665 check_wrongNumberOfParametersForOperator("-", "a"); | |
3666 } | |
3667 void test_wrongNumberOfParametersForOperator1() { | |
3668 check_wrongNumberOfParametersForOperator1("<"); | |
3669 check_wrongNumberOfParametersForOperator1(">"); | |
3670 check_wrongNumberOfParametersForOperator1("<="); | |
3671 check_wrongNumberOfParametersForOperator1(">="); | |
3672 check_wrongNumberOfParametersForOperator1("+"); | |
3673 check_wrongNumberOfParametersForOperator1("/"); | |
3674 check_wrongNumberOfParametersForOperator1("~/"); | |
3675 check_wrongNumberOfParametersForOperator1("*"); | |
3676 check_wrongNumberOfParametersForOperator1("%"); | |
3677 check_wrongNumberOfParametersForOperator1("|"); | |
3678 check_wrongNumberOfParametersForOperator1("^"); | |
3679 check_wrongNumberOfParametersForOperator1("&"); | |
3680 check_wrongNumberOfParametersForOperator1("<<"); | |
3681 check_wrongNumberOfParametersForOperator1(">>"); | |
3682 check_wrongNumberOfParametersForOperator1("[]"); | |
3683 } | |
3684 void test_wrongNumberOfParametersForSetter() { | |
3685 Source source = addSource(EngineTestCase.createSource(["class A {", " set x
(a) {}", "}"])); | |
3686 resolve(source); | |
3687 assertNoErrors(source); | |
3688 verify([source]); | |
3689 } | |
3690 void check_wrongNumberOfParametersForOperator(String name, String parameters)
{ | |
3691 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor ${name}(${parameters}) {}", "}"])); | |
3692 resolve(source); | |
3693 assertNoErrors(source); | |
3694 verify([source]); | |
3695 reset(); | |
3696 } | |
3697 void check_wrongNumberOfParametersForOperator1(String name) { | |
3698 check_wrongNumberOfParametersForOperator(name, "a"); | |
3699 } | |
3700 static dartSuite() { | |
3701 _ut.group('NonErrorResolverTest', () { | |
3702 _ut.test('test_ambiguousExport', () { | |
3703 final __test = new NonErrorResolverTest(); | |
3704 runJUnitTest(__test, __test.test_ambiguousExport); | |
3705 }); | |
3706 _ut.test('test_ambiguousExport_combinators_hide', () { | |
3707 final __test = new NonErrorResolverTest(); | |
3708 runJUnitTest(__test, __test.test_ambiguousExport_combinators_hide); | |
3709 }); | |
3710 _ut.test('test_ambiguousExport_combinators_show', () { | |
3711 final __test = new NonErrorResolverTest(); | |
3712 runJUnitTest(__test, __test.test_ambiguousExport_combinators_show); | |
3713 }); | |
3714 _ut.test('test_argumentDefinitionTestNonParameter_formalParameter', () { | |
3715 final __test = new NonErrorResolverTest(); | |
3716 runJUnitTest(__test, __test.test_argumentDefinitionTestNonParameter_form
alParameter); | |
3717 }); | |
3718 _ut.test('test_argumentDefinitionTestNonParameter_namedParameter', () { | |
3719 final __test = new NonErrorResolverTest(); | |
3720 runJUnitTest(__test, __test.test_argumentDefinitionTestNonParameter_name
dParameter); | |
3721 }); | |
3722 _ut.test('test_argumentDefinitionTestNonParameter_optionalParameter', () { | |
3723 final __test = new NonErrorResolverTest(); | |
3724 runJUnitTest(__test, __test.test_argumentDefinitionTestNonParameter_opti
onalParameter); | |
3725 }); | |
3726 _ut.test('test_argumentTypeNotAssignable_Object_Function', () { | |
3727 final __test = new NonErrorResolverTest(); | |
3728 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_Object_Functi
on); | |
3729 }); | |
3730 _ut.test('test_argumentTypeNotAssignable_classWithCall_Function', () { | |
3731 final __test = new NonErrorResolverTest(); | |
3732 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_classWithCall
_Function); | |
3733 }); | |
3734 _ut.test('test_argumentTypeNotAssignable_fieldFormalParameterElement_membe
r', () { | |
3735 final __test = new NonErrorResolverTest(); | |
3736 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_fieldFormalPa
rameterElement_member); | |
3737 }); | |
3738 _ut.test('test_argumentTypeNotAssignable_invocation_functionParameter_gene
ric', () { | |
3739 final __test = new NonErrorResolverTest(); | |
3740 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_fu
nctionParameter_generic); | |
3741 }); | |
3742 _ut.test('test_argumentTypeNotAssignable_invocation_typedef_generic', () { | |
3743 final __test = new NonErrorResolverTest(); | |
3744 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ty
pedef_generic); | |
3745 }); | |
3746 _ut.test('test_argumentTypeNotAssignable_typedef_local', () { | |
3747 final __test = new NonErrorResolverTest(); | |
3748 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_typedef_local
); | |
3749 }); | |
3750 _ut.test('test_argumentTypeNotAssignable_typedef_parameter', () { | |
3751 final __test = new NonErrorResolverTest(); | |
3752 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_typedef_param
eter); | |
3753 }); | |
3754 _ut.test('test_assignmentToFinal_prefixNegate', () { | |
3755 final __test = new NonErrorResolverTest(); | |
3756 runJUnitTest(__test, __test.test_assignmentToFinal_prefixNegate); | |
3757 }); | |
3758 _ut.test('test_assignmentToFinals_importWithPrefix', () { | |
3759 final __test = new NonErrorResolverTest(); | |
3760 runJUnitTest(__test, __test.test_assignmentToFinals_importWithPrefix); | |
3761 }); | |
3762 _ut.test('test_breakWithoutLabelInSwitch', () { | |
3763 final __test = new NonErrorResolverTest(); | |
3764 runJUnitTest(__test, __test.test_breakWithoutLabelInSwitch); | |
3765 }); | |
3766 _ut.test('test_builtInIdentifierAsType_dynamic', () { | |
3767 final __test = new NonErrorResolverTest(); | |
3768 runJUnitTest(__test, __test.test_builtInIdentifierAsType_dynamic); | |
3769 }); | |
3770 _ut.test('test_caseBlockNotTerminated', () { | |
3771 final __test = new NonErrorResolverTest(); | |
3772 runJUnitTest(__test, __test.test_caseBlockNotTerminated); | |
3773 }); | |
3774 _ut.test('test_caseBlockNotTerminated_lastCase', () { | |
3775 final __test = new NonErrorResolverTest(); | |
3776 runJUnitTest(__test, __test.test_caseBlockNotTerminated_lastCase); | |
3777 }); | |
3778 _ut.test('test_caseExpressionTypeImplementsEquals_Object', () { | |
3779 final __test = new NonErrorResolverTest(); | |
3780 runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals_Obje
ct); | |
3781 }); | |
3782 _ut.test('test_caseExpressionTypeImplementsEquals_String', () { | |
3783 final __test = new NonErrorResolverTest(); | |
3784 runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals_Stri
ng); | |
3785 }); | |
3786 _ut.test('test_caseExpressionTypeImplementsEquals_int', () { | |
3787 final __test = new NonErrorResolverTest(); | |
3788 runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals_int)
; | |
3789 }); | |
3790 _ut.test('test_concreteClassWithAbstractMember', () { | |
3791 final __test = new NonErrorResolverTest(); | |
3792 runJUnitTest(__test, __test.test_concreteClassWithAbstractMember); | |
3793 }); | |
3794 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_instance', ()
{ | |
3795 final __test = new NonErrorResolverTest(); | |
3796 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_instance); | |
3797 }); | |
3798 _ut.test('test_conflictingStaticGetterAndInstanceSetter_thisClass', () { | |
3799 final __test = new NonErrorResolverTest(); | |
3800 runJUnitTest(__test, __test.test_conflictingStaticGetterAndInstanceSette
r_thisClass); | |
3801 }); | |
3802 _ut.test('test_conflictingStaticSetterAndInstanceMember_thisClass_method',
() { | |
3803 final __test = new NonErrorResolverTest(); | |
3804 runJUnitTest(__test, __test.test_conflictingStaticSetterAndInstanceMembe
r_thisClass_method); | |
3805 }); | |
3806 _ut.test('test_constConstructorWithNonConstSuper_redirectingFactory', () { | |
3807 final __test = new NonErrorResolverTest(); | |
3808 runJUnitTest(__test, __test.test_constConstructorWithNonConstSuper_redir
ectingFactory); | |
3809 }); | |
3810 _ut.test('test_constConstructorWithNonFinalField_finalInstanceVar', () { | |
3811 final __test = new NonErrorResolverTest(); | |
3812 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_final
InstanceVar); | |
3813 }); | |
3814 _ut.test('test_constConstructorWithNonFinalField_mixin', () { | |
3815 final __test = new NonErrorResolverTest(); | |
3816 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_mixin
); | |
3817 }); | |
3818 _ut.test('test_constConstructorWithNonFinalField_static', () { | |
3819 final __test = new NonErrorResolverTest(); | |
3820 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_stati
c); | |
3821 }); | |
3822 _ut.test('test_constConstructorWithNonFinalField_syntheticField', () { | |
3823 final __test = new NonErrorResolverTest(); | |
3824 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_synth
eticField); | |
3825 }); | |
3826 _ut.test('test_constEvalTypeBoolNumString_equal', () { | |
3827 final __test = new NonErrorResolverTest(); | |
3828 runJUnitTest(__test, __test.test_constEvalTypeBoolNumString_equal); | |
3829 }); | |
3830 _ut.test('test_constEvalTypeBoolNumString_notEqual', () { | |
3831 final __test = new NonErrorResolverTest(); | |
3832 runJUnitTest(__test, __test.test_constEvalTypeBoolNumString_notEqual); | |
3833 }); | |
3834 _ut.test('test_constEval_propertyExtraction_fieldStatic_targetType', () { | |
3835 final __test = new NonErrorResolverTest(); | |
3836 runJUnitTest(__test, __test.test_constEval_propertyExtraction_fieldStati
c_targetType); | |
3837 }); | |
3838 _ut.test('test_constEval_propertyExtraction_methodStatic_targetType', () { | |
3839 final __test = new NonErrorResolverTest(); | |
3840 runJUnitTest(__test, __test.test_constEval_propertyExtraction_methodStat
ic_targetType); | |
3841 }); | |
3842 _ut.test('test_constEval_symbol', () { | |
3843 final __test = new NonErrorResolverTest(); | |
3844 runJUnitTest(__test, __test.test_constEval_symbol); | |
3845 }); | |
3846 _ut.test('test_constNotInitialized_field', () { | |
3847 final __test = new NonErrorResolverTest(); | |
3848 runJUnitTest(__test, __test.test_constNotInitialized_field); | |
3849 }); | |
3850 _ut.test('test_constNotInitialized_local', () { | |
3851 final __test = new NonErrorResolverTest(); | |
3852 runJUnitTest(__test, __test.test_constNotInitialized_local); | |
3853 }); | |
3854 _ut.test('test_constWithNonConstantArgument_literals', () { | |
3855 final __test = new NonErrorResolverTest(); | |
3856 runJUnitTest(__test, __test.test_constWithNonConstantArgument_literals); | |
3857 }); | |
3858 _ut.test('test_constWithTypeParameters_direct', () { | |
3859 final __test = new NonErrorResolverTest(); | |
3860 runJUnitTest(__test, __test.test_constWithTypeParameters_direct); | |
3861 }); | |
3862 _ut.test('test_constWithUndefinedConstructor', () { | |
3863 final __test = new NonErrorResolverTest(); | |
3864 runJUnitTest(__test, __test.test_constWithUndefinedConstructor); | |
3865 }); | |
3866 _ut.test('test_constWithUndefinedConstructorDefault', () { | |
3867 final __test = new NonErrorResolverTest(); | |
3868 runJUnitTest(__test, __test.test_constWithUndefinedConstructorDefault); | |
3869 }); | |
3870 _ut.test('test_constructorDeclaration_scope_signature', () { | |
3871 final __test = new NonErrorResolverTest(); | |
3872 runJUnitTest(__test, __test.test_constructorDeclaration_scope_signature)
; | |
3873 }); | |
3874 _ut.test('test_defaultValueInFunctionTypeAlias', () { | |
3875 final __test = new NonErrorResolverTest(); | |
3876 runJUnitTest(__test, __test.test_defaultValueInFunctionTypeAlias); | |
3877 }); | |
3878 _ut.test('test_defaultValueInFunctionTypedParameter_named', () { | |
3879 final __test = new NonErrorResolverTest(); | |
3880 runJUnitTest(__test, __test.test_defaultValueInFunctionTypedParameter_na
med); | |
3881 }); | |
3882 _ut.test('test_defaultValueInFunctionTypedParameter_optional', () { | |
3883 final __test = new NonErrorResolverTest(); | |
3884 runJUnitTest(__test, __test.test_defaultValueInFunctionTypedParameter_op
tional); | |
3885 }); | |
3886 _ut.test('test_duplicateDefinition_emptyName', () { | |
3887 final __test = new NonErrorResolverTest(); | |
3888 runJUnitTest(__test, __test.test_duplicateDefinition_emptyName); | |
3889 }); | |
3890 _ut.test('test_duplicateDefinition_getter', () { | |
3891 final __test = new NonErrorResolverTest(); | |
3892 runJUnitTest(__test, __test.test_duplicateDefinition_getter); | |
3893 }); | |
3894 _ut.test('test_dynamicIdentifier', () { | |
3895 final __test = new NonErrorResolverTest(); | |
3896 runJUnitTest(__test, __test.test_dynamicIdentifier); | |
3897 }); | |
3898 _ut.test('test_expectedOneListTypeArgument', () { | |
3899 final __test = new NonErrorResolverTest(); | |
3900 runJUnitTest(__test, __test.test_expectedOneListTypeArgument); | |
3901 }); | |
3902 _ut.test('test_expectedTwoMapTypeArguments', () { | |
3903 final __test = new NonErrorResolverTest(); | |
3904 runJUnitTest(__test, __test.test_expectedTwoMapTypeArguments); | |
3905 }); | |
3906 _ut.test('test_exportOfNonLibrary_libraryDeclared', () { | |
3907 final __test = new NonErrorResolverTest(); | |
3908 runJUnitTest(__test, __test.test_exportOfNonLibrary_libraryDeclared); | |
3909 }); | |
3910 _ut.test('test_exportOfNonLibrary_libraryNotDeclared', () { | |
3911 final __test = new NonErrorResolverTest(); | |
3912 runJUnitTest(__test, __test.test_exportOfNonLibrary_libraryNotDeclared); | |
3913 }); | |
3914 _ut.test('test_extraPositionalArguments_Function', () { | |
3915 final __test = new NonErrorResolverTest(); | |
3916 runJUnitTest(__test, __test.test_extraPositionalArguments_Function); | |
3917 }); | |
3918 _ut.test('test_extraPositionalArguments_function', () { | |
3919 final __test = new NonErrorResolverTest(); | |
3920 runJUnitTest(__test, __test.test_extraPositionalArguments_function); | |
3921 }); | |
3922 _ut.test('test_extraPositionalArguments_typedef_local', () { | |
3923 final __test = new NonErrorResolverTest(); | |
3924 runJUnitTest(__test, __test.test_extraPositionalArguments_typedef_local)
; | |
3925 }); | |
3926 _ut.test('test_extraPositionalArguments_typedef_parameter', () { | |
3927 final __test = new NonErrorResolverTest(); | |
3928 runJUnitTest(__test, __test.test_extraPositionalArguments_typedef_parame
ter); | |
3929 }); | |
3930 _ut.test('test_fieldInitializedByMultipleInitializers', () { | |
3931 final __test = new NonErrorResolverTest(); | |
3932 runJUnitTest(__test, __test.test_fieldInitializedByMultipleInitializers)
; | |
3933 }); | |
3934 _ut.test('test_fieldInitializedInInitializerAndDeclaration_fieldNotFinal',
() { | |
3935 final __test = new NonErrorResolverTest(); | |
3936 runJUnitTest(__test, __test.test_fieldInitializedInInitializerAndDeclara
tion_fieldNotFinal); | |
3937 }); | |
3938 _ut.test('test_fieldInitializedInInitializerAndDeclaration_finalFieldNotSe
t', () { | |
3939 final __test = new NonErrorResolverTest(); | |
3940 runJUnitTest(__test, __test.test_fieldInitializedInInitializerAndDeclara
tion_finalFieldNotSet); | |
3941 }); | |
3942 _ut.test('test_fieldInitializerOutsideConstructor', () { | |
3943 final __test = new NonErrorResolverTest(); | |
3944 runJUnitTest(__test, __test.test_fieldInitializerOutsideConstructor); | |
3945 }); | |
3946 _ut.test('test_fieldInitializerOutsideConstructor_defaultParameters', () { | |
3947 final __test = new NonErrorResolverTest(); | |
3948 runJUnitTest(__test, __test.test_fieldInitializerOutsideConstructor_defa
ultParameters); | |
3949 }); | |
3950 _ut.test('test_fieldInitializerRedirectingConstructor_super', () { | |
3951 final __test = new NonErrorResolverTest(); | |
3952 runJUnitTest(__test, __test.test_fieldInitializerRedirectingConstructor_
super); | |
3953 }); | |
3954 _ut.test('test_finalInitializedInDeclarationAndConstructor_initializer', (
) { | |
3955 final __test = new NonErrorResolverTest(); | |
3956 runJUnitTest(__test, __test.test_finalInitializedInDeclarationAndConstru
ctor_initializer); | |
3957 }); | |
3958 _ut.test('test_finalInitializedInDeclarationAndConstructor_initializingFor
mal', () { | |
3959 final __test = new NonErrorResolverTest(); | |
3960 runJUnitTest(__test, __test.test_finalInitializedInDeclarationAndConstru
ctor_initializingFormal); | |
3961 }); | |
3962 _ut.test('test_finalNotInitialized_atDeclaration', () { | |
3963 final __test = new NonErrorResolverTest(); | |
3964 runJUnitTest(__test, __test.test_finalNotInitialized_atDeclaration); | |
3965 }); | |
3966 _ut.test('test_finalNotInitialized_fieldFormal', () { | |
3967 final __test = new NonErrorResolverTest(); | |
3968 runJUnitTest(__test, __test.test_finalNotInitialized_fieldFormal); | |
3969 }); | |
3970 _ut.test('test_finalNotInitialized_functionTypedFieldFormal', () { | |
3971 final __test = new NonErrorResolverTest(); | |
3972 runJUnitTest(__test, __test.test_finalNotInitialized_functionTypedFieldF
ormal); | |
3973 }); | |
3974 _ut.test('test_finalNotInitialized_hasNativeClause_hasConstructor', () { | |
3975 final __test = new NonErrorResolverTest(); | |
3976 runJUnitTest(__test, __test.test_finalNotInitialized_hasNativeClause_has
Constructor); | |
3977 }); | |
3978 _ut.test('test_finalNotInitialized_hasNativeClause_noConstructor', () { | |
3979 final __test = new NonErrorResolverTest(); | |
3980 runJUnitTest(__test, __test.test_finalNotInitialized_hasNativeClause_noC
onstructor); | |
3981 }); | |
3982 _ut.test('test_finalNotInitialized_initializer', () { | |
3983 final __test = new NonErrorResolverTest(); | |
3984 runJUnitTest(__test, __test.test_finalNotInitialized_initializer); | |
3985 }); | |
3986 _ut.test('test_finalNotInitialized_redirectingConstructor', () { | |
3987 final __test = new NonErrorResolverTest(); | |
3988 runJUnitTest(__test, __test.test_finalNotInitialized_redirectingConstruc
tor); | |
3989 }); | |
3990 _ut.test('test_functionDeclaration_scope_returnType', () { | |
3991 final __test = new NonErrorResolverTest(); | |
3992 runJUnitTest(__test, __test.test_functionDeclaration_scope_returnType); | |
3993 }); | |
3994 _ut.test('test_functionDeclaration_scope_signature', () { | |
3995 final __test = new NonErrorResolverTest(); | |
3996 runJUnitTest(__test, __test.test_functionDeclaration_scope_signature); | |
3997 }); | |
3998 _ut.test('test_functionTypeAlias_scope_returnType', () { | |
3999 final __test = new NonErrorResolverTest(); | |
4000 runJUnitTest(__test, __test.test_functionTypeAlias_scope_returnType); | |
4001 }); | |
4002 _ut.test('test_functionTypeAlias_scope_signature', () { | |
4003 final __test = new NonErrorResolverTest(); | |
4004 runJUnitTest(__test, __test.test_functionTypeAlias_scope_signature); | |
4005 }); | |
4006 _ut.test('test_functionWithoutCall', () { | |
4007 final __test = new NonErrorResolverTest(); | |
4008 runJUnitTest(__test, __test.test_functionWithoutCall); | |
4009 }); | |
4010 _ut.test('test_implicitThisReferenceInInitializer_constructorName', () { | |
4011 final __test = new NonErrorResolverTest(); | |
4012 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_cons
tructorName); | |
4013 }); | |
4014 _ut.test('test_implicitThisReferenceInInitializer_prefixedIdentifier', ()
{ | |
4015 final __test = new NonErrorResolverTest(); | |
4016 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_pref
ixedIdentifier); | |
4017 }); | |
4018 _ut.test('test_implicitThisReferenceInInitializer_qualifiedMethodInvocatio
n', () { | |
4019 final __test = new NonErrorResolverTest(); | |
4020 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_qual
ifiedMethodInvocation); | |
4021 }); | |
4022 _ut.test('test_implicitThisReferenceInInitializer_qualifiedPropertyAccess'
, () { | |
4023 final __test = new NonErrorResolverTest(); | |
4024 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_qual
ifiedPropertyAccess); | |
4025 }); | |
4026 _ut.test('test_implicitThisReferenceInInitializer_staticField_thisClass',
() { | |
4027 final __test = new NonErrorResolverTest(); | |
4028 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_stat
icField_thisClass); | |
4029 }); | |
4030 _ut.test('test_implicitThisReferenceInInitializer_staticGetter', () { | |
4031 final __test = new NonErrorResolverTest(); | |
4032 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_stat
icGetter); | |
4033 }); | |
4034 _ut.test('test_implicitThisReferenceInInitializer_staticMethod', () { | |
4035 final __test = new NonErrorResolverTest(); | |
4036 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_stat
icMethod); | |
4037 }); | |
4038 _ut.test('test_implicitThisReferenceInInitializer_topLevelField', () { | |
4039 final __test = new NonErrorResolverTest(); | |
4040 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_topL
evelField); | |
4041 }); | |
4042 _ut.test('test_implicitThisReferenceInInitializer_topLevelFunction', () { | |
4043 final __test = new NonErrorResolverTest(); | |
4044 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_topL
evelFunction); | |
4045 }); | |
4046 _ut.test('test_implicitThisReferenceInInitializer_topLevelGetter', () { | |
4047 final __test = new NonErrorResolverTest(); | |
4048 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_topL
evelGetter); | |
4049 }); | |
4050 _ut.test('test_implicitThisReferenceInInitializer_typeParameter', () { | |
4051 final __test = new NonErrorResolverTest(); | |
4052 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_type
Parameter); | |
4053 }); | |
4054 _ut.test('test_importDuplicatedLibraryName', () { | |
4055 final __test = new NonErrorResolverTest(); | |
4056 runJUnitTest(__test, __test.test_importDuplicatedLibraryName); | |
4057 }); | |
4058 _ut.test('test_importOfNonLibrary_libraryDeclared', () { | |
4059 final __test = new NonErrorResolverTest(); | |
4060 runJUnitTest(__test, __test.test_importOfNonLibrary_libraryDeclared); | |
4061 }); | |
4062 _ut.test('test_importOfNonLibrary_libraryNotDeclared', () { | |
4063 final __test = new NonErrorResolverTest(); | |
4064 runJUnitTest(__test, __test.test_importOfNonLibrary_libraryNotDeclared); | |
4065 }); | |
4066 _ut.test('test_importPrefixes_withFirstLetterDifference', () { | |
4067 final __test = new NonErrorResolverTest(); | |
4068 runJUnitTest(__test, __test.test_importPrefixes_withFirstLetterDifferenc
e); | |
4069 }); | |
4070 _ut.test('test_inconsistentCaseExpressionTypes', () { | |
4071 final __test = new NonErrorResolverTest(); | |
4072 runJUnitTest(__test, __test.test_inconsistentCaseExpressionTypes); | |
4073 }); | |
4074 _ut.test('test_inconsistentMethodInheritance_accessors_typeParameter2', ()
{ | |
4075 final __test = new NonErrorResolverTest(); | |
4076 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_accessors
_typeParameter2); | |
4077 }); | |
4078 _ut.test('test_inconsistentMethodInheritance_accessors_typeParameters1', (
) { | |
4079 final __test = new NonErrorResolverTest(); | |
4080 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_accessors
_typeParameters1); | |
4081 }); | |
4082 _ut.test('test_inconsistentMethodInheritance_accessors_typeParameters_diam
ond', () { | |
4083 final __test = new NonErrorResolverTest(); | |
4084 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_accessors
_typeParameters_diamond); | |
4085 }); | |
4086 _ut.test('test_inconsistentMethodInheritance_methods_typeParameter2', () { | |
4087 final __test = new NonErrorResolverTest(); | |
4088 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_methods_t
ypeParameter2); | |
4089 }); | |
4090 _ut.test('test_inconsistentMethodInheritance_methods_typeParameters1', ()
{ | |
4091 final __test = new NonErrorResolverTest(); | |
4092 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_methods_t
ypeParameters1); | |
4093 }); | |
4094 _ut.test('test_inconsistentMethodInheritance_simple', () { | |
4095 final __test = new NonErrorResolverTest(); | |
4096 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_simple); | |
4097 }); | |
4098 _ut.test('test_initializingFormalForNonExistantField', () { | |
4099 final __test = new NonErrorResolverTest(); | |
4100 runJUnitTest(__test, __test.test_initializingFormalForNonExistantField); | |
4101 }); | |
4102 _ut.test('test_instanceAccessToStaticMember_fromComment', () { | |
4103 final __test = new NonErrorResolverTest(); | |
4104 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_fromCommen
t); | |
4105 }); | |
4106 _ut.test('test_instanceAccessToStaticMember_topLevel', () { | |
4107 final __test = new NonErrorResolverTest(); | |
4108 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_topLevel); | |
4109 }); | |
4110 _ut.test('test_instanceMemberAccessFromStatic_fromComment', () { | |
4111 final __test = new NonErrorResolverTest(); | |
4112 runJUnitTest(__test, __test.test_instanceMemberAccessFromStatic_fromComm
ent); | |
4113 }); | |
4114 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_field', () { | |
4115 final __test = new NonErrorResolverTest(); | |
4116 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_field); | |
4117 }); | |
4118 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_method', ()
{ | |
4119 final __test = new NonErrorResolverTest(); | |
4120 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_method); | |
4121 }); | |
4122 _ut.test('test_invalidAnnotation_constantVariable', () { | |
4123 final __test = new NonErrorResolverTest(); | |
4124 runJUnitTest(__test, __test.test_invalidAnnotation_constantVariable); | |
4125 }); | |
4126 _ut.test('test_invalidAnnotation_importWithPrefix_constConstructor', () { | |
4127 final __test = new NonErrorResolverTest(); | |
4128 runJUnitTest(__test, __test.test_invalidAnnotation_importWithPrefix_cons
tConstructor); | |
4129 }); | |
4130 _ut.test('test_invalidAnnotation_importWithPrefix_constantVariable', () { | |
4131 final __test = new NonErrorResolverTest(); | |
4132 runJUnitTest(__test, __test.test_invalidAnnotation_importWithPrefix_cons
tantVariable); | |
4133 }); | |
4134 _ut.test('test_invalidAssignment', () { | |
4135 final __test = new NonErrorResolverTest(); | |
4136 runJUnitTest(__test, __test.test_invalidAssignment); | |
4137 }); | |
4138 _ut.test('test_invalidAssignment_compoundAssignment', () { | |
4139 final __test = new NonErrorResolverTest(); | |
4140 runJUnitTest(__test, __test.test_invalidAssignment_compoundAssignment); | |
4141 }); | |
4142 _ut.test('test_invalidAssignment_defaultValue_named', () { | |
4143 final __test = new NonErrorResolverTest(); | |
4144 runJUnitTest(__test, __test.test_invalidAssignment_defaultValue_named); | |
4145 }); | |
4146 _ut.test('test_invalidAssignment_defaultValue_optional', () { | |
4147 final __test = new NonErrorResolverTest(); | |
4148 runJUnitTest(__test, __test.test_invalidAssignment_defaultValue_optional
); | |
4149 }); | |
4150 _ut.test('test_invalidAssignment_toDynamic', () { | |
4151 final __test = new NonErrorResolverTest(); | |
4152 runJUnitTest(__test, __test.test_invalidAssignment_toDynamic); | |
4153 }); | |
4154 _ut.test('test_invalidFactoryNameNotAClass', () { | |
4155 final __test = new NonErrorResolverTest(); | |
4156 runJUnitTest(__test, __test.test_invalidFactoryNameNotAClass); | |
4157 }); | |
4158 _ut.test('test_invalidMethodOverrideNamedParamType', () { | |
4159 final __test = new NonErrorResolverTest(); | |
4160 runJUnitTest(__test, __test.test_invalidMethodOverrideNamedParamType); | |
4161 }); | |
4162 _ut.test('test_invalidOverrideDifferentDefaultValues_named', () { | |
4163 final __test = new NonErrorResolverTest(); | |
4164 runJUnitTest(__test, __test.test_invalidOverrideDifferentDefaultValues_n
amed); | |
4165 }); | |
4166 _ut.test('test_invalidOverrideDifferentDefaultValues_positional', () { | |
4167 final __test = new NonErrorResolverTest(); | |
4168 runJUnitTest(__test, __test.test_invalidOverrideDifferentDefaultValues_p
ositional); | |
4169 }); | |
4170 _ut.test('test_invalidOverrideDifferentDefaultValues_positional_changedOrd
er', () { | |
4171 final __test = new NonErrorResolverTest(); | |
4172 runJUnitTest(__test, __test.test_invalidOverrideDifferentDefaultValues_p
ositional_changedOrder); | |
4173 }); | |
4174 _ut.test('test_invalidOverrideNamed_unorderedNamedParameter', () { | |
4175 final __test = new NonErrorResolverTest(); | |
4176 runJUnitTest(__test, __test.test_invalidOverrideNamed_unorderedNamedPara
meter); | |
4177 }); | |
4178 _ut.test('test_invalidOverrideRequired_less', () { | |
4179 final __test = new NonErrorResolverTest(); | |
4180 runJUnitTest(__test, __test.test_invalidOverrideRequired_less); | |
4181 }); | |
4182 _ut.test('test_invalidOverrideRequired_same', () { | |
4183 final __test = new NonErrorResolverTest(); | |
4184 runJUnitTest(__test, __test.test_invalidOverrideRequired_same); | |
4185 }); | |
4186 _ut.test('test_invalidOverrideReturnType_returnType_interface', () { | |
4187 final __test = new NonErrorResolverTest(); | |
4188 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_in
terface); | |
4189 }); | |
4190 _ut.test('test_invalidOverrideReturnType_returnType_interface2', () { | |
4191 final __test = new NonErrorResolverTest(); | |
4192 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_in
terface2); | |
4193 }); | |
4194 _ut.test('test_invalidOverrideReturnType_returnType_mixin', () { | |
4195 final __test = new NonErrorResolverTest(); | |
4196 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_mi
xin); | |
4197 }); | |
4198 _ut.test('test_invalidOverrideReturnType_returnType_parameterizedTypes', (
) { | |
4199 final __test = new NonErrorResolverTest(); | |
4200 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_pa
rameterizedTypes); | |
4201 }); | |
4202 _ut.test('test_invalidOverrideReturnType_returnType_sameType', () { | |
4203 final __test = new NonErrorResolverTest(); | |
4204 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_sa
meType); | |
4205 }); | |
4206 _ut.test('test_invalidOverrideReturnType_returnType_superclass', () { | |
4207 final __test = new NonErrorResolverTest(); | |
4208 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_su
perclass); | |
4209 }); | |
4210 _ut.test('test_invalidOverrideReturnType_returnType_superclass2', () { | |
4211 final __test = new NonErrorResolverTest(); | |
4212 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_su
perclass2); | |
4213 }); | |
4214 _ut.test('test_invalidOverrideReturnType_returnType_void', () { | |
4215 final __test = new NonErrorResolverTest(); | |
4216 runJUnitTest(__test, __test.test_invalidOverrideReturnType_returnType_vo
id); | |
4217 }); | |
4218 _ut.test('test_invalidReferenceToThis_constructor', () { | |
4219 final __test = new NonErrorResolverTest(); | |
4220 runJUnitTest(__test, __test.test_invalidReferenceToThis_constructor); | |
4221 }); | |
4222 _ut.test('test_invalidReferenceToThis_instanceMethod', () { | |
4223 final __test = new NonErrorResolverTest(); | |
4224 runJUnitTest(__test, __test.test_invalidReferenceToThis_instanceMethod); | |
4225 }); | |
4226 _ut.test('test_invalidTypeArgumentForKey', () { | |
4227 final __test = new NonErrorResolverTest(); | |
4228 runJUnitTest(__test, __test.test_invalidTypeArgumentForKey); | |
4229 }); | |
4230 _ut.test('test_invalidTypeArgumentInConstList', () { | |
4231 final __test = new NonErrorResolverTest(); | |
4232 runJUnitTest(__test, __test.test_invalidTypeArgumentInConstList); | |
4233 }); | |
4234 _ut.test('test_invalidTypeArgumentInConstMap', () { | |
4235 final __test = new NonErrorResolverTest(); | |
4236 runJUnitTest(__test, __test.test_invalidTypeArgumentInConstMap); | |
4237 }); | |
4238 _ut.test('test_invocationOfNonFunction_Object', () { | |
4239 final __test = new NonErrorResolverTest(); | |
4240 runJUnitTest(__test, __test.test_invocationOfNonFunction_Object); | |
4241 }); | |
4242 _ut.test('test_invocationOfNonFunction_dynamic', () { | |
4243 final __test = new NonErrorResolverTest(); | |
4244 runJUnitTest(__test, __test.test_invocationOfNonFunction_dynamic); | |
4245 }); | |
4246 _ut.test('test_invocationOfNonFunction_getter', () { | |
4247 final __test = new NonErrorResolverTest(); | |
4248 runJUnitTest(__test, __test.test_invocationOfNonFunction_getter); | |
4249 }); | |
4250 _ut.test('test_invocationOfNonFunction_localVariable', () { | |
4251 final __test = new NonErrorResolverTest(); | |
4252 runJUnitTest(__test, __test.test_invocationOfNonFunction_localVariable); | |
4253 }); | |
4254 _ut.test('test_invocationOfNonFunction_localVariable_dynamic', () { | |
4255 final __test = new NonErrorResolverTest(); | |
4256 runJUnitTest(__test, __test.test_invocationOfNonFunction_localVariable_d
ynamic); | |
4257 }); | |
4258 _ut.test('test_invocationOfNonFunction_localVariable_dynamic2', () { | |
4259 final __test = new NonErrorResolverTest(); | |
4260 runJUnitTest(__test, __test.test_invocationOfNonFunction_localVariable_d
ynamic2); | |
4261 }); | |
4262 _ut.test('test_listElementTypeNotAssignable', () { | |
4263 final __test = new NonErrorResolverTest(); | |
4264 runJUnitTest(__test, __test.test_listElementTypeNotAssignable); | |
4265 }); | |
4266 _ut.test('test_mapKeyTypeNotAssignable', () { | |
4267 final __test = new NonErrorResolverTest(); | |
4268 runJUnitTest(__test, __test.test_mapKeyTypeNotAssignable); | |
4269 }); | |
4270 _ut.test('test_memberWithClassName_setter', () { | |
4271 final __test = new NonErrorResolverTest(); | |
4272 runJUnitTest(__test, __test.test_memberWithClassName_setter); | |
4273 }); | |
4274 _ut.test('test_methodDeclaration_scope_signature', () { | |
4275 final __test = new NonErrorResolverTest(); | |
4276 runJUnitTest(__test, __test.test_methodDeclaration_scope_signature); | |
4277 }); | |
4278 _ut.test('test_misMatchedGetterAndSetterTypes_instance_sameTypes', () { | |
4279 final __test = new NonErrorResolverTest(); | |
4280 runJUnitTest(__test, __test.test_misMatchedGetterAndSetterTypes_instance
_sameTypes); | |
4281 }); | |
4282 _ut.test('test_misMatchedGetterAndSetterTypes_instance_unspecifiedGetter',
() { | |
4283 final __test = new NonErrorResolverTest(); | |
4284 runJUnitTest(__test, __test.test_misMatchedGetterAndSetterTypes_instance
_unspecifiedGetter); | |
4285 }); | |
4286 _ut.test('test_misMatchedGetterAndSetterTypes_instance_unspecifiedSetter',
() { | |
4287 final __test = new NonErrorResolverTest(); | |
4288 runJUnitTest(__test, __test.test_misMatchedGetterAndSetterTypes_instance
_unspecifiedSetter); | |
4289 }); | |
4290 _ut.test('test_misMatchedGetterAndSetterTypes_topLevel_sameTypes', () { | |
4291 final __test = new NonErrorResolverTest(); | |
4292 runJUnitTest(__test, __test.test_misMatchedGetterAndSetterTypes_topLevel
_sameTypes); | |
4293 }); | |
4294 _ut.test('test_misMatchedGetterAndSetterTypes_topLevel_unspecifiedGetter',
() { | |
4295 final __test = new NonErrorResolverTest(); | |
4296 runJUnitTest(__test, __test.test_misMatchedGetterAndSetterTypes_topLevel
_unspecifiedGetter); | |
4297 }); | |
4298 _ut.test('test_misMatchedGetterAndSetterTypes_topLevel_unspecifiedSetter',
() { | |
4299 final __test = new NonErrorResolverTest(); | |
4300 runJUnitTest(__test, __test.test_misMatchedGetterAndSetterTypes_topLevel
_unspecifiedSetter); | |
4301 }); | |
4302 _ut.test('test_mixedReturnTypes_differentScopes', () { | |
4303 final __test = new NonErrorResolverTest(); | |
4304 runJUnitTest(__test, __test.test_mixedReturnTypes_differentScopes); | |
4305 }); | |
4306 _ut.test('test_mixedReturnTypes_sameKind', () { | |
4307 final __test = new NonErrorResolverTest(); | |
4308 runJUnitTest(__test, __test.test_mixedReturnTypes_sameKind); | |
4309 }); | |
4310 _ut.test('test_mixinDeclaresConstructor', () { | |
4311 final __test = new NonErrorResolverTest(); | |
4312 runJUnitTest(__test, __test.test_mixinDeclaresConstructor); | |
4313 }); | |
4314 _ut.test('test_mixinDeclaresConstructor_factory', () { | |
4315 final __test = new NonErrorResolverTest(); | |
4316 runJUnitTest(__test, __test.test_mixinDeclaresConstructor_factory); | |
4317 }); | |
4318 _ut.test('test_mixinInheritsFromNotObject_classDeclaration_mixTypeAlias',
() { | |
4319 final __test = new NonErrorResolverTest(); | |
4320 runJUnitTest(__test, __test.test_mixinInheritsFromNotObject_classDeclara
tion_mixTypeAlias); | |
4321 }); | |
4322 _ut.test('test_mixinInheritsFromNotObject_typedef_mixTypeAlias', () { | |
4323 final __test = new NonErrorResolverTest(); | |
4324 runJUnitTest(__test, __test.test_mixinInheritsFromNotObject_typedef_mixT
ypeAlias); | |
4325 }); | |
4326 _ut.test('test_multipleSuperInitializers_no', () { | |
4327 final __test = new NonErrorResolverTest(); | |
4328 runJUnitTest(__test, __test.test_multipleSuperInitializers_no); | |
4329 }); | |
4330 _ut.test('test_multipleSuperInitializers_single', () { | |
4331 final __test = new NonErrorResolverTest(); | |
4332 runJUnitTest(__test, __test.test_multipleSuperInitializers_single); | |
4333 }); | |
4334 _ut.test('test_newWithAbstractClass_factory', () { | |
4335 final __test = new NonErrorResolverTest(); | |
4336 runJUnitTest(__test, __test.test_newWithAbstractClass_factory); | |
4337 }); | |
4338 _ut.test('test_newWithUndefinedConstructor', () { | |
4339 final __test = new NonErrorResolverTest(); | |
4340 runJUnitTest(__test, __test.test_newWithUndefinedConstructor); | |
4341 }); | |
4342 _ut.test('test_newWithUndefinedConstructorDefault', () { | |
4343 final __test = new NonErrorResolverTest(); | |
4344 runJUnitTest(__test, __test.test_newWithUndefinedConstructorDefault); | |
4345 }); | |
4346 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_abstractOverrides
Concrete_accessor', () { | |
4347 final __test = new NonErrorResolverTest(); | |
4348 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_abstractOverridesConcrete_accessor); | |
4349 }); | |
4350 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_abstractOverrides
Concrete_method', () { | |
4351 final __test = new NonErrorResolverTest(); | |
4352 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_abstractOverridesConcrete_method); | |
4353 }); | |
4354 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_acce
ssor', () { | |
4355 final __test = new NonErrorResolverTest(); | |
4356 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_noSuchMethod_accessor); | |
4357 }); | |
4358 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_meth
od', () { | |
4359 final __test = new NonErrorResolverTest(); | |
4360 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_noSuchMethod_method); | |
4361 }); | |
4362 _ut.test('test_nonBoolExpression_functionType', () { | |
4363 final __test = new NonErrorResolverTest(); | |
4364 runJUnitTest(__test, __test.test_nonBoolExpression_functionType); | |
4365 }); | |
4366 _ut.test('test_nonBoolExpression_interfaceType', () { | |
4367 final __test = new NonErrorResolverTest(); | |
4368 runJUnitTest(__test, __test.test_nonBoolExpression_interfaceType); | |
4369 }); | |
4370 _ut.test('test_nonConstCaseExpression', () { | |
4371 final __test = new NonErrorResolverTest(); | |
4372 runJUnitTest(__test, __test.test_nonConstCaseExpression); | |
4373 }); | |
4374 _ut.test('test_nonConstMapAsExpressionStatement_const', () { | |
4375 final __test = new NonErrorResolverTest(); | |
4376 runJUnitTest(__test, __test.test_nonConstMapAsExpressionStatement_const)
; | |
4377 }); | |
4378 _ut.test('test_nonConstMapAsExpressionStatement_notExpressionStatement', (
) { | |
4379 final __test = new NonErrorResolverTest(); | |
4380 runJUnitTest(__test, __test.test_nonConstMapAsExpressionStatement_notExp
ressionStatement); | |
4381 }); | |
4382 _ut.test('test_nonConstMapAsExpressionStatement_typeArguments', () { | |
4383 final __test = new NonErrorResolverTest(); | |
4384 runJUnitTest(__test, __test.test_nonConstMapAsExpressionStatement_typeAr
guments); | |
4385 }); | |
4386 _ut.test('test_nonConstValueInInitializer_binary_bool', () { | |
4387 final __test = new NonErrorResolverTest(); | |
4388 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_bool)
; | |
4389 }); | |
4390 _ut.test('test_nonConstValueInInitializer_binary_dynamic', () { | |
4391 final __test = new NonErrorResolverTest(); | |
4392 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_dynam
ic); | |
4393 }); | |
4394 _ut.test('test_nonConstValueInInitializer_binary_int', () { | |
4395 final __test = new NonErrorResolverTest(); | |
4396 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_int); | |
4397 }); | |
4398 _ut.test('test_nonConstValueInInitializer_binary_num', () { | |
4399 final __test = new NonErrorResolverTest(); | |
4400 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_num); | |
4401 }); | |
4402 _ut.test('test_nonConstValueInInitializer_field', () { | |
4403 final __test = new NonErrorResolverTest(); | |
4404 runJUnitTest(__test, __test.test_nonConstValueInInitializer_field); | |
4405 }); | |
4406 _ut.test('test_nonConstValueInInitializer_redirecting', () { | |
4407 final __test = new NonErrorResolverTest(); | |
4408 runJUnitTest(__test, __test.test_nonConstValueInInitializer_redirecting)
; | |
4409 }); | |
4410 _ut.test('test_nonConstValueInInitializer_super', () { | |
4411 final __test = new NonErrorResolverTest(); | |
4412 runJUnitTest(__test, __test.test_nonConstValueInInitializer_super); | |
4413 }); | |
4414 _ut.test('test_nonConstValueInInitializer_unary', () { | |
4415 final __test = new NonErrorResolverTest(); | |
4416 runJUnitTest(__test, __test.test_nonConstValueInInitializer_unary); | |
4417 }); | |
4418 _ut.test('test_nonConstantDefaultValue_function_named', () { | |
4419 final __test = new NonErrorResolverTest(); | |
4420 runJUnitTest(__test, __test.test_nonConstantDefaultValue_function_named)
; | |
4421 }); | |
4422 _ut.test('test_nonConstantDefaultValue_function_positional', () { | |
4423 final __test = new NonErrorResolverTest(); | |
4424 runJUnitTest(__test, __test.test_nonConstantDefaultValue_function_positi
onal); | |
4425 }); | |
4426 _ut.test('test_nonConstantDefaultValue_inConstructor_named', () { | |
4427 final __test = new NonErrorResolverTest(); | |
4428 runJUnitTest(__test, __test.test_nonConstantDefaultValue_inConstructor_n
amed); | |
4429 }); | |
4430 _ut.test('test_nonConstantDefaultValue_inConstructor_positional', () { | |
4431 final __test = new NonErrorResolverTest(); | |
4432 runJUnitTest(__test, __test.test_nonConstantDefaultValue_inConstructor_p
ositional); | |
4433 }); | |
4434 _ut.test('test_nonConstantDefaultValue_method_named', () { | |
4435 final __test = new NonErrorResolverTest(); | |
4436 runJUnitTest(__test, __test.test_nonConstantDefaultValue_method_named); | |
4437 }); | |
4438 _ut.test('test_nonConstantDefaultValue_method_positional', () { | |
4439 final __test = new NonErrorResolverTest(); | |
4440 runJUnitTest(__test, __test.test_nonConstantDefaultValue_method_position
al); | |
4441 }); | |
4442 _ut.test('test_nonConstantValueInInitializer_namedArgument', () { | |
4443 final __test = new NonErrorResolverTest(); | |
4444 runJUnitTest(__test, __test.test_nonConstantValueInInitializer_namedArgu
ment); | |
4445 }); | |
4446 _ut.test('test_nonGenerativeConstructor', () { | |
4447 final __test = new NonErrorResolverTest(); | |
4448 runJUnitTest(__test, __test.test_nonGenerativeConstructor); | |
4449 }); | |
4450 _ut.test('test_nonTypeInCatchClause_isClass', () { | |
4451 final __test = new NonErrorResolverTest(); | |
4452 runJUnitTest(__test, __test.test_nonTypeInCatchClause_isClass); | |
4453 }); | |
4454 _ut.test('test_nonTypeInCatchClause_isFunctionTypeAlias', () { | |
4455 final __test = new NonErrorResolverTest(); | |
4456 runJUnitTest(__test, __test.test_nonTypeInCatchClause_isFunctionTypeAlia
s); | |
4457 }); | |
4458 _ut.test('test_nonTypeInCatchClause_isTypeParameter', () { | |
4459 final __test = new NonErrorResolverTest(); | |
4460 runJUnitTest(__test, __test.test_nonTypeInCatchClause_isTypeParameter); | |
4461 }); | |
4462 _ut.test('test_nonTypeInCatchClause_noType', () { | |
4463 final __test = new NonErrorResolverTest(); | |
4464 runJUnitTest(__test, __test.test_nonTypeInCatchClause_noType); | |
4465 }); | |
4466 _ut.test('test_nonVoidReturnForOperator_no', () { | |
4467 final __test = new NonErrorResolverTest(); | |
4468 runJUnitTest(__test, __test.test_nonVoidReturnForOperator_no); | |
4469 }); | |
4470 _ut.test('test_nonVoidReturnForOperator_void', () { | |
4471 final __test = new NonErrorResolverTest(); | |
4472 runJUnitTest(__test, __test.test_nonVoidReturnForOperator_void); | |
4473 }); | |
4474 _ut.test('test_nonVoidReturnForSetter_function_no', () { | |
4475 final __test = new NonErrorResolverTest(); | |
4476 runJUnitTest(__test, __test.test_nonVoidReturnForSetter_function_no); | |
4477 }); | |
4478 _ut.test('test_nonVoidReturnForSetter_function_void', () { | |
4479 final __test = new NonErrorResolverTest(); | |
4480 runJUnitTest(__test, __test.test_nonVoidReturnForSetter_function_void); | |
4481 }); | |
4482 _ut.test('test_nonVoidReturnForSetter_method_no', () { | |
4483 final __test = new NonErrorResolverTest(); | |
4484 runJUnitTest(__test, __test.test_nonVoidReturnForSetter_method_no); | |
4485 }); | |
4486 _ut.test('test_nonVoidReturnForSetter_method_void', () { | |
4487 final __test = new NonErrorResolverTest(); | |
4488 runJUnitTest(__test, __test.test_nonVoidReturnForSetter_method_void); | |
4489 }); | |
4490 _ut.test('test_null_callMethod', () { | |
4491 final __test = new NonErrorResolverTest(); | |
4492 runJUnitTest(__test, __test.test_null_callMethod); | |
4493 }); | |
4494 _ut.test('test_null_callOperator', () { | |
4495 final __test = new NonErrorResolverTest(); | |
4496 runJUnitTest(__test, __test.test_null_callOperator); | |
4497 }); | |
4498 _ut.test('test_optionalParameterInOperator_required', () { | |
4499 final __test = new NonErrorResolverTest(); | |
4500 runJUnitTest(__test, __test.test_optionalParameterInOperator_required); | |
4501 }); | |
4502 _ut.test('test_prefixCollidesWithTopLevelMembers', () { | |
4503 final __test = new NonErrorResolverTest(); | |
4504 runJUnitTest(__test, __test.test_prefixCollidesWithTopLevelMembers); | |
4505 }); | |
4506 _ut.test('test_propagateTypeArgs_intoBounds', () { | |
4507 final __test = new NonErrorResolverTest(); | |
4508 runJUnitTest(__test, __test.test_propagateTypeArgs_intoBounds); | |
4509 }); | |
4510 _ut.test('test_propagateTypeArgs_intoSupertype', () { | |
4511 final __test = new NonErrorResolverTest(); | |
4512 runJUnitTest(__test, __test.test_propagateTypeArgs_intoSupertype); | |
4513 }); | |
4514 _ut.test('test_proxy_annotation_prefixed', () { | |
4515 final __test = new NonErrorResolverTest(); | |
4516 runJUnitTest(__test, __test.test_proxy_annotation_prefixed); | |
4517 }); | |
4518 _ut.test('test_proxy_annotation_prefixed2', () { | |
4519 final __test = new NonErrorResolverTest(); | |
4520 runJUnitTest(__test, __test.test_proxy_annotation_prefixed2); | |
4521 }); | |
4522 _ut.test('test_proxy_annotation_prefixed3', () { | |
4523 final __test = new NonErrorResolverTest(); | |
4524 runJUnitTest(__test, __test.test_proxy_annotation_prefixed3); | |
4525 }); | |
4526 _ut.test('test_proxy_annotation_simple', () { | |
4527 final __test = new NonErrorResolverTest(); | |
4528 runJUnitTest(__test, __test.test_proxy_annotation_simple); | |
4529 }); | |
4530 _ut.test('test_recursiveConstructorRedirect', () { | |
4531 final __test = new NonErrorResolverTest(); | |
4532 runJUnitTest(__test, __test.test_recursiveConstructorRedirect); | |
4533 }); | |
4534 _ut.test('test_recursiveFactoryRedirect', () { | |
4535 final __test = new NonErrorResolverTest(); | |
4536 runJUnitTest(__test, __test.test_recursiveFactoryRedirect); | |
4537 }); | |
4538 _ut.test('test_redirectToInvalidFunctionType', () { | |
4539 final __test = new NonErrorResolverTest(); | |
4540 runJUnitTest(__test, __test.test_redirectToInvalidFunctionType); | |
4541 }); | |
4542 _ut.test('test_redirectToInvalidReturnType', () { | |
4543 final __test = new NonErrorResolverTest(); | |
4544 runJUnitTest(__test, __test.test_redirectToInvalidReturnType); | |
4545 }); | |
4546 _ut.test('test_redirectToNonConstConstructor', () { | |
4547 final __test = new NonErrorResolverTest(); | |
4548 runJUnitTest(__test, __test.test_redirectToNonConstConstructor); | |
4549 }); | |
4550 _ut.test('test_referenceToDeclaredVariableInInitializer_constructorName',
() { | |
4551 final __test = new NonErrorResolverTest(); | |
4552 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_constructorName); | |
4553 }); | |
4554 _ut.test('test_referenceToDeclaredVariableInInitializer_methodName', () { | |
4555 final __test = new NonErrorResolverTest(); | |
4556 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_methodName); | |
4557 }); | |
4558 _ut.test('test_referenceToDeclaredVariableInInitializer_propertyName', ()
{ | |
4559 final __test = new NonErrorResolverTest(); | |
4560 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_propertyName); | |
4561 }); | |
4562 _ut.test('test_rethrowOutsideCatch', () { | |
4563 final __test = new NonErrorResolverTest(); | |
4564 runJUnitTest(__test, __test.test_rethrowOutsideCatch); | |
4565 }); | |
4566 _ut.test('test_returnInGenerativeConstructor', () { | |
4567 final __test = new NonErrorResolverTest(); | |
4568 runJUnitTest(__test, __test.test_returnInGenerativeConstructor); | |
4569 }); | |
4570 _ut.test('test_returnOfInvalidType_dynamic', () { | |
4571 final __test = new NonErrorResolverTest(); | |
4572 runJUnitTest(__test, __test.test_returnOfInvalidType_dynamic); | |
4573 }); | |
4574 _ut.test('test_returnOfInvalidType_dynamicAsTypeArgument', () { | |
4575 final __test = new NonErrorResolverTest(); | |
4576 runJUnitTest(__test, __test.test_returnOfInvalidType_dynamicAsTypeArgume
nt); | |
4577 }); | |
4578 _ut.test('test_returnOfInvalidType_subtype', () { | |
4579 final __test = new NonErrorResolverTest(); | |
4580 runJUnitTest(__test, __test.test_returnOfInvalidType_subtype); | |
4581 }); | |
4582 _ut.test('test_returnOfInvalidType_supertype', () { | |
4583 final __test = new NonErrorResolverTest(); | |
4584 runJUnitTest(__test, __test.test_returnOfInvalidType_supertype); | |
4585 }); | |
4586 _ut.test('test_returnOfInvalidType_void', () { | |
4587 final __test = new NonErrorResolverTest(); | |
4588 runJUnitTest(__test, __test.test_returnOfInvalidType_void); | |
4589 }); | |
4590 _ut.test('test_returnWithoutValue_noReturnType', () { | |
4591 final __test = new NonErrorResolverTest(); | |
4592 runJUnitTest(__test, __test.test_returnWithoutValue_noReturnType); | |
4593 }); | |
4594 _ut.test('test_returnWithoutValue_void', () { | |
4595 final __test = new NonErrorResolverTest(); | |
4596 runJUnitTest(__test, __test.test_returnWithoutValue_void); | |
4597 }); | |
4598 _ut.test('test_staticAccessToInstanceMember_annotation', () { | |
4599 final __test = new NonErrorResolverTest(); | |
4600 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_annotation
); | |
4601 }); | |
4602 _ut.test('test_staticAccessToInstanceMember_method', () { | |
4603 final __test = new NonErrorResolverTest(); | |
4604 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_method); | |
4605 }); | |
4606 _ut.test('test_staticAccessToInstanceMember_propertyAccess_field', () { | |
4607 final __test = new NonErrorResolverTest(); | |
4608 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_propertyAc
cess_field); | |
4609 }); | |
4610 _ut.test('test_staticAccessToInstanceMember_propertyAccess_propertyAccesso
r', () { | |
4611 final __test = new NonErrorResolverTest(); | |
4612 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_propertyAc
cess_propertyAccessor); | |
4613 }); | |
4614 _ut.test('test_superInInvalidContext', () { | |
4615 final __test = new NonErrorResolverTest(); | |
4616 runJUnitTest(__test, __test.test_superInInvalidContext); | |
4617 }); | |
4618 _ut.test('test_typeAliasCannotReferenceItself_returnClass_withTypeAlias',
() { | |
4619 final __test = new NonErrorResolverTest(); | |
4620 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_returnCl
ass_withTypeAlias); | |
4621 }); | |
4622 _ut.test('test_typeArgumentNotMatchingBounds_const', () { | |
4623 final __test = new NonErrorResolverTest(); | |
4624 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_const); | |
4625 }); | |
4626 _ut.test('test_typeArgumentNotMatchingBounds_new', () { | |
4627 final __test = new NonErrorResolverTest(); | |
4628 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_new); | |
4629 }); | |
4630 _ut.test('test_typeArgumentNotMatchingBounds_typeArgumentList_0', () { | |
4631 final __test = new NonErrorResolverTest(); | |
4632 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_typeArgum
entList_0); | |
4633 }); | |
4634 _ut.test('test_typeArgumentNotMatchingBounds_typeArgumentList_1', () { | |
4635 final __test = new NonErrorResolverTest(); | |
4636 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_typeArgum
entList_1); | |
4637 }); | |
4638 _ut.test('test_typeArgumentNotMatchingBounds_typeArgumentList_20', () { | |
4639 final __test = new NonErrorResolverTest(); | |
4640 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_typeArgum
entList_20); | |
4641 }); | |
4642 _ut.test('test_typePromotion_booleanAnd_useInRight', () { | |
4643 final __test = new NonErrorResolverTest(); | |
4644 runJUnitTest(__test, __test.test_typePromotion_booleanAnd_useInRight); | |
4645 }); | |
4646 _ut.test('test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_
noAssignment', () { | |
4647 final __test = new NonErrorResolverTest(); | |
4648 runJUnitTest(__test, __test.test_typePromotion_booleanAnd_useInRight_acc
essedInClosureRight_noAssignment); | |
4649 }); | |
4650 _ut.test('test_typePromotion_conditional_useInThen', () { | |
4651 final __test = new NonErrorResolverTest(); | |
4652 runJUnitTest(__test, __test.test_typePromotion_conditional_useInThen); | |
4653 }); | |
4654 _ut.test('test_typePromotion_conditional_useInThen_accessedInClosure_noAss
ignment', () { | |
4655 final __test = new NonErrorResolverTest(); | |
4656 runJUnitTest(__test, __test.test_typePromotion_conditional_useInThen_acc
essedInClosure_noAssignment); | |
4657 }); | |
4658 _ut.test('test_typePromotion_functionType_arg_ignoreIfNotMoreSpecific', ()
{ | |
4659 final __test = new NonErrorResolverTest(); | |
4660 runJUnitTest(__test, __test.test_typePromotion_functionType_arg_ignoreIf
NotMoreSpecific); | |
4661 }); | |
4662 _ut.test('test_typePromotion_functionType_return_ignoreIfNotMoreSpecific',
() { | |
4663 final __test = new NonErrorResolverTest(); | |
4664 runJUnitTest(__test, __test.test_typePromotion_functionType_return_ignor
eIfNotMoreSpecific); | |
4665 }); | |
4666 _ut.test('test_typePromotion_functionType_return_voidToDynamic', () { | |
4667 final __test = new NonErrorResolverTest(); | |
4668 runJUnitTest(__test, __test.test_typePromotion_functionType_return_voidT
oDynamic); | |
4669 }); | |
4670 _ut.test('test_typePromotion_if_accessedInClosure_noAssignment', () { | |
4671 final __test = new NonErrorResolverTest(); | |
4672 runJUnitTest(__test, __test.test_typePromotion_if_accessedInClosure_noAs
signment); | |
4673 }); | |
4674 _ut.test('test_typePromotion_if_hasAssignment_outsideAfter', () { | |
4675 final __test = new NonErrorResolverTest(); | |
4676 runJUnitTest(__test, __test.test_typePromotion_if_hasAssignment_outsideA
fter); | |
4677 }); | |
4678 _ut.test('test_typePromotion_if_hasAssignment_outsideBefore', () { | |
4679 final __test = new NonErrorResolverTest(); | |
4680 runJUnitTest(__test, __test.test_typePromotion_if_hasAssignment_outsideB
efore); | |
4681 }); | |
4682 _ut.test('test_typePromotion_if_is_and_left', () { | |
4683 final __test = new NonErrorResolverTest(); | |
4684 runJUnitTest(__test, __test.test_typePromotion_if_is_and_left); | |
4685 }); | |
4686 _ut.test('test_typePromotion_if_is_and_right', () { | |
4687 final __test = new NonErrorResolverTest(); | |
4688 runJUnitTest(__test, __test.test_typePromotion_if_is_and_right); | |
4689 }); | |
4690 _ut.test('test_typePromotion_if_is_and_subThenSuper', () { | |
4691 final __test = new NonErrorResolverTest(); | |
4692 runJUnitTest(__test, __test.test_typePromotion_if_is_and_subThenSuper); | |
4693 }); | |
4694 _ut.test('test_typePromotion_if_is_parenthesized', () { | |
4695 final __test = new NonErrorResolverTest(); | |
4696 runJUnitTest(__test, __test.test_typePromotion_if_is_parenthesized); | |
4697 }); | |
4698 _ut.test('test_typePromotion_if_is_single', () { | |
4699 final __test = new NonErrorResolverTest(); | |
4700 runJUnitTest(__test, __test.test_typePromotion_if_is_single); | |
4701 }); | |
4702 _ut.test('test_undefinedConstructorInInitializer_explicit_named', () { | |
4703 final __test = new NonErrorResolverTest(); | |
4704 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_expli
cit_named); | |
4705 }); | |
4706 _ut.test('test_undefinedConstructorInInitializer_explicit_unnamed', () { | |
4707 final __test = new NonErrorResolverTest(); | |
4708 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_expli
cit_unnamed); | |
4709 }); | |
4710 _ut.test('test_undefinedConstructorInInitializer_hasOptionalParameters', (
) { | |
4711 final __test = new NonErrorResolverTest(); | |
4712 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_hasOp
tionalParameters); | |
4713 }); | |
4714 _ut.test('test_undefinedConstructorInInitializer_implicit', () { | |
4715 final __test = new NonErrorResolverTest(); | |
4716 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_impli
cit); | |
4717 }); | |
4718 _ut.test('test_undefinedConstructorInInitializer_implicit_typeAlias', () { | |
4719 final __test = new NonErrorResolverTest(); | |
4720 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_impli
cit_typeAlias); | |
4721 }); | |
4722 _ut.test('test_undefinedConstructorInInitializer_redirecting', () { | |
4723 final __test = new NonErrorResolverTest(); | |
4724 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_redir
ecting); | |
4725 }); | |
4726 _ut.test('test_undefinedGetter_typeSubstitution', () { | |
4727 final __test = new NonErrorResolverTest(); | |
4728 runJUnitTest(__test, __test.test_undefinedGetter_typeSubstitution); | |
4729 }); | |
4730 _ut.test('test_undefinedIdentifier_hide', () { | |
4731 final __test = new NonErrorResolverTest(); | |
4732 runJUnitTest(__test, __test.test_undefinedIdentifier_hide); | |
4733 }); | |
4734 _ut.test('test_undefinedIdentifier_show', () { | |
4735 final __test = new NonErrorResolverTest(); | |
4736 runJUnitTest(__test, __test.test_undefinedIdentifier_show); | |
4737 }); | |
4738 _ut.test('test_undefinedMethod_functionExpression_callMethod', () { | |
4739 final __test = new NonErrorResolverTest(); | |
4740 runJUnitTest(__test, __test.test_undefinedMethod_functionExpression_call
Method); | |
4741 }); | |
4742 _ut.test('test_undefinedMethod_functionExpression_directCall', () { | |
4743 final __test = new NonErrorResolverTest(); | |
4744 runJUnitTest(__test, __test.test_undefinedMethod_functionExpression_dire
ctCall); | |
4745 }); | |
4746 _ut.test('test_undefinedOperator_index', () { | |
4747 final __test = new NonErrorResolverTest(); | |
4748 runJUnitTest(__test, __test.test_undefinedOperator_index); | |
4749 }); | |
4750 _ut.test('test_undefinedOperator_tilde', () { | |
4751 final __test = new NonErrorResolverTest(); | |
4752 runJUnitTest(__test, __test.test_undefinedOperator_tilde); | |
4753 }); | |
4754 _ut.test('test_undefinedSetter_importWithPrefix', () { | |
4755 final __test = new NonErrorResolverTest(); | |
4756 runJUnitTest(__test, __test.test_undefinedSetter_importWithPrefix); | |
4757 }); | |
4758 _ut.test('test_undefinedSuperMethod_field', () { | |
4759 final __test = new NonErrorResolverTest(); | |
4760 runJUnitTest(__test, __test.test_undefinedSuperMethod_field); | |
4761 }); | |
4762 _ut.test('test_undefinedSuperMethod_method', () { | |
4763 final __test = new NonErrorResolverTest(); | |
4764 runJUnitTest(__test, __test.test_undefinedSuperMethod_method); | |
4765 }); | |
4766 _ut.test('test_wrongNumberOfParametersForOperator1', () { | |
4767 final __test = new NonErrorResolverTest(); | |
4768 runJUnitTest(__test, __test.test_wrongNumberOfParametersForOperator1); | |
4769 }); | |
4770 _ut.test('test_wrongNumberOfParametersForOperator_index', () { | |
4771 final __test = new NonErrorResolverTest(); | |
4772 runJUnitTest(__test, __test.test_wrongNumberOfParametersForOperator_inde
x); | |
4773 }); | |
4774 _ut.test('test_wrongNumberOfParametersForOperator_minus', () { | |
4775 final __test = new NonErrorResolverTest(); | |
4776 runJUnitTest(__test, __test.test_wrongNumberOfParametersForOperator_minu
s); | |
4777 }); | |
4778 _ut.test('test_wrongNumberOfParametersForSetter', () { | |
4779 final __test = new NonErrorResolverTest(); | |
4780 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter); | |
4781 }); | |
4782 }); | |
4783 } | |
4784 } | |
4785 class LibraryTest extends EngineTestCase { | |
4786 | |
4787 /** | |
4788 * The error listener to which all errors will be reported. | |
4789 */ | |
4790 GatheringErrorListener _errorListener; | |
4791 | |
4792 /** | |
4793 * The source factory used to create libraries. | |
4794 */ | |
4795 SourceFactory _sourceFactory; | |
4796 | |
4797 /** | |
4798 * The analysis context to pass in to all libraries created by the tests. | |
4799 */ | |
4800 AnalysisContextImpl _analysisContext; | |
4801 | |
4802 /** | |
4803 * The library used by the tests. | |
4804 */ | |
4805 Library _library5; | |
4806 void setUp() { | |
4807 _sourceFactory = new SourceFactory.con2([new FileUriResolver()]); | |
4808 _analysisContext = new AnalysisContextImpl(); | |
4809 _analysisContext.sourceFactory = _sourceFactory; | |
4810 _errorListener = new GatheringErrorListener(); | |
4811 _library5 = library("/lib.dart"); | |
4812 } | |
4813 void test_getExplicitlyImportsCore() { | |
4814 JUnitTestCase.assertFalse(_library5.explicitlyImportsCore); | |
4815 _errorListener.assertNoErrors(); | |
4816 } | |
4817 void test_getExports() { | |
4818 EngineTestCase.assertLength(0, _library5.exports); | |
4819 _errorListener.assertNoErrors(); | |
4820 } | |
4821 void test_getImports() { | |
4822 EngineTestCase.assertLength(0, _library5.imports); | |
4823 _errorListener.assertNoErrors(); | |
4824 } | |
4825 void test_getImportsAndExports() { | |
4826 _library5.importedLibraries = <Library> [library("/imported.dart")]; | |
4827 _library5.exportedLibraries = <Library> [library("/exported.dart")]; | |
4828 EngineTestCase.assertLength(2, _library5.importsAndExports); | |
4829 _errorListener.assertNoErrors(); | |
4830 } | |
4831 void test_getLibraryScope() { | |
4832 LibraryElementImpl element = new LibraryElementImpl(_analysisContext, ASTFac
tory.libraryIdentifier2(["lib"])); | |
4833 element.definingCompilationUnit = new CompilationUnitElementImpl("lib.dart")
; | |
4834 _library5.libraryElement = element; | |
4835 JUnitTestCase.assertNotNull(_library5.libraryScope); | |
4836 _errorListener.assertNoErrors(); | |
4837 } | |
4838 void test_getLibrarySource() { | |
4839 JUnitTestCase.assertNotNull(_library5.librarySource); | |
4840 } | |
4841 void test_setExplicitlyImportsCore() { | |
4842 _library5.explicitlyImportsCore = true; | |
4843 JUnitTestCase.assertTrue(_library5.explicitlyImportsCore); | |
4844 _errorListener.assertNoErrors(); | |
4845 } | |
4846 void test_setExportedLibraries() { | |
4847 Library exportLibrary = library("/exported.dart"); | |
4848 _library5.exportedLibraries = <Library> [exportLibrary]; | |
4849 List<Library> exports = _library5.exports; | |
4850 EngineTestCase.assertLength(1, exports); | |
4851 JUnitTestCase.assertSame(exportLibrary, exports[0]); | |
4852 _errorListener.assertNoErrors(); | |
4853 } | |
4854 void test_setImportedLibraries() { | |
4855 Library importLibrary = library("/imported.dart"); | |
4856 _library5.importedLibraries = <Library> [importLibrary]; | |
4857 List<Library> imports = _library5.imports; | |
4858 EngineTestCase.assertLength(1, imports); | |
4859 JUnitTestCase.assertSame(importLibrary, imports[0]); | |
4860 _errorListener.assertNoErrors(); | |
4861 } | |
4862 void test_setLibraryElement() { | |
4863 LibraryElementImpl element = new LibraryElementImpl(_analysisContext, ASTFac
tory.libraryIdentifier2(["lib"])); | |
4864 _library5.libraryElement = element; | |
4865 JUnitTestCase.assertSame(element, _library5.libraryElement); | |
4866 } | |
4867 Library library(String definingCompilationUnitPath) => new Library(_analysisCo
ntext, _errorListener, new FileBasedSource.con1(_sourceFactory.contentCache, Fil
eUtilities2.createFile(definingCompilationUnitPath))); | |
4868 static dartSuite() { | |
4869 _ut.group('LibraryTest', () { | |
4870 _ut.test('test_getExplicitlyImportsCore', () { | |
4871 final __test = new LibraryTest(); | |
4872 runJUnitTest(__test, __test.test_getExplicitlyImportsCore); | |
4873 }); | |
4874 _ut.test('test_getExports', () { | |
4875 final __test = new LibraryTest(); | |
4876 runJUnitTest(__test, __test.test_getExports); | |
4877 }); | |
4878 _ut.test('test_getImports', () { | |
4879 final __test = new LibraryTest(); | |
4880 runJUnitTest(__test, __test.test_getImports); | |
4881 }); | |
4882 _ut.test('test_getImportsAndExports', () { | |
4883 final __test = new LibraryTest(); | |
4884 runJUnitTest(__test, __test.test_getImportsAndExports); | |
4885 }); | |
4886 _ut.test('test_getLibraryScope', () { | |
4887 final __test = new LibraryTest(); | |
4888 runJUnitTest(__test, __test.test_getLibraryScope); | |
4889 }); | |
4890 _ut.test('test_getLibrarySource', () { | |
4891 final __test = new LibraryTest(); | |
4892 runJUnitTest(__test, __test.test_getLibrarySource); | |
4893 }); | |
4894 _ut.test('test_setExplicitlyImportsCore', () { | |
4895 final __test = new LibraryTest(); | |
4896 runJUnitTest(__test, __test.test_setExplicitlyImportsCore); | |
4897 }); | |
4898 _ut.test('test_setExportedLibraries', () { | |
4899 final __test = new LibraryTest(); | |
4900 runJUnitTest(__test, __test.test_setExportedLibraries); | |
4901 }); | |
4902 _ut.test('test_setImportedLibraries', () { | |
4903 final __test = new LibraryTest(); | |
4904 runJUnitTest(__test, __test.test_setImportedLibraries); | |
4905 }); | |
4906 _ut.test('test_setLibraryElement', () { | |
4907 final __test = new LibraryTest(); | |
4908 runJUnitTest(__test, __test.test_setLibraryElement); | |
4909 }); | |
4910 }); | |
4911 } | |
4912 } | |
4913 class StaticTypeWarningCodeTest extends ResolverTestCase { | |
4914 void fail_inaccessibleSetter() { | |
4915 Source source = addSource(EngineTestCase.createSource([])); | |
4916 resolve(source); | |
4917 assertErrors(source, [StaticTypeWarningCode.INACCESSIBLE_SETTER]); | |
4918 verify([source]); | |
4919 } | |
4920 void test_expectedOneListTypeArgument() { | |
4921 Source source = addSource(EngineTestCase.createSource(["main() {", " <int,
int> [];", "}"])); | |
4922 resolve(source); | |
4923 assertErrors(source, [StaticTypeWarningCode.EXPECTED_ONE_LIST_TYPE_ARGUMENTS
]); | |
4924 verify([source]); | |
4925 } | |
4926 void test_expectedTwoMapTypeArguments_one() { | |
4927 Source source = addSource(EngineTestCase.createSource(["main() {", " <int>
{};", "}"])); | |
4928 resolve(source); | |
4929 assertErrors(source, [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]
); | |
4930 verify([source]); | |
4931 } | |
4932 void test_expectedTwoMapTypeArguments_three() { | |
4933 Source source = addSource(EngineTestCase.createSource(["main() {", " <int,
int, int> {};", "}"])); | |
4934 resolve(source); | |
4935 assertErrors(source, [StaticTypeWarningCode.EXPECTED_TWO_MAP_TYPE_ARGUMENTS]
); | |
4936 verify([source]); | |
4937 } | |
4938 void test_inconsistentMethodInheritance_paramCount() { | |
4939 Source source = addSource(EngineTestCase.createSource([ | |
4940 "abstract class A {", | |
4941 " int x();", | |
4942 "}", | |
4943 "abstract class B {", | |
4944 " int x(int y);", | |
4945 "}", | |
4946 "class C implements A, B {", | |
4947 "}"])); | |
4948 resolve(source); | |
4949 assertErrors(source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]
); | |
4950 verify([source]); | |
4951 } | |
4952 void test_inconsistentMethodInheritance_paramType() { | |
4953 Source source = addSource(EngineTestCase.createSource([ | |
4954 "abstract class A {", | |
4955 " x(int i);", | |
4956 "}", | |
4957 "abstract class B {", | |
4958 " x(String s);", | |
4959 "}", | |
4960 "abstract class C implements A, B {}"])); | |
4961 resolve(source); | |
4962 assertErrors(source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]
); | |
4963 verify([source]); | |
4964 } | |
4965 void test_inconsistentMethodInheritance_returnType() { | |
4966 Source source = addSource(EngineTestCase.createSource([ | |
4967 "abstract class A {", | |
4968 " int x();", | |
4969 "}", | |
4970 "abstract class B {", | |
4971 " String x();", | |
4972 "}", | |
4973 "abstract class C implements A, B {}"])); | |
4974 resolve(source); | |
4975 assertErrors(source, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]
); | |
4976 verify([source]); | |
4977 } | |
4978 void test_instanceAccessToStaticMember_method_invocation() { | |
4979 Source source = addSource(EngineTestCase.createSource([ | |
4980 "class A {", | |
4981 " static m() {}", | |
4982 "}", | |
4983 "main(A a) {", | |
4984 " a.m();", | |
4985 "}"])); | |
4986 resolve(source); | |
4987 assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER
]); | |
4988 verify([source]); | |
4989 } | |
4990 void test_instanceAccessToStaticMember_method_reference() { | |
4991 Source source = addSource(EngineTestCase.createSource([ | |
4992 "class A {", | |
4993 " static m() {}", | |
4994 "}", | |
4995 "main(A a) {", | |
4996 " a.m;", | |
4997 "}"])); | |
4998 resolve(source); | |
4999 assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER
]); | |
5000 verify([source]); | |
5001 } | |
5002 void test_instanceAccessToStaticMember_propertyAccess_field() { | |
5003 Source source = addSource(EngineTestCase.createSource([ | |
5004 "class A {", | |
5005 " static var f;", | |
5006 "}", | |
5007 "main(A a) {", | |
5008 " a.f;", | |
5009 "}"])); | |
5010 resolve(source); | |
5011 assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER
]); | |
5012 verify([source]); | |
5013 } | |
5014 void test_instanceAccessToStaticMember_propertyAccess_getter() { | |
5015 Source source = addSource(EngineTestCase.createSource([ | |
5016 "class A {", | |
5017 " static get f => 42;", | |
5018 "}", | |
5019 "main(A a) {", | |
5020 " a.f;", | |
5021 "}"])); | |
5022 resolve(source); | |
5023 assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER
]); | |
5024 verify([source]); | |
5025 } | |
5026 void test_instanceAccessToStaticMember_propertyAccess_setter() { | |
5027 Source source = addSource(EngineTestCase.createSource([ | |
5028 "class A {", | |
5029 " static set f(x) {}", | |
5030 "}", | |
5031 "main(A a) {", | |
5032 " a.f = 42;", | |
5033 "}"])); | |
5034 resolve(source); | |
5035 assertErrors(source, [StaticTypeWarningCode.INSTANCE_ACCESS_TO_STATIC_MEMBER
]); | |
5036 verify([source]); | |
5037 } | |
5038 void test_invalidAssignment_compoundAssignment() { | |
5039 Source source = addSource(EngineTestCase.createSource([ | |
5040 "class byte {", | |
5041 " int _value;", | |
5042 " byte(this._value);", | |
5043 " int operator +(int val) {}", | |
5044 "}", | |
5045 "", | |
5046 "void main() {", | |
5047 " byte b = new byte(52);", | |
5048 " b += 3;", | |
5049 "}"])); | |
5050 resolve(source); | |
5051 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5052 verify([source]); | |
5053 } | |
5054 void test_invalidAssignment_defaultValue_named() { | |
5055 Source source = addSource(EngineTestCase.createSource(["f({String x: 0}) {",
"}"])); | |
5056 resolve(source); | |
5057 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5058 verify([source]); | |
5059 } | |
5060 void test_invalidAssignment_defaultValue_optional() { | |
5061 Source source = addSource(EngineTestCase.createSource(["f([String x = 0]) {"
, "}"])); | |
5062 resolve(source); | |
5063 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5064 verify([source]); | |
5065 } | |
5066 void test_invalidAssignment_instanceVariable() { | |
5067 Source source = addSource(EngineTestCase.createSource([ | |
5068 "class A {", | |
5069 " int x;", | |
5070 "}", | |
5071 "f() {", | |
5072 " A a;", | |
5073 " a.x = '0';", | |
5074 "}"])); | |
5075 resolve(source); | |
5076 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5077 verify([source]); | |
5078 } | |
5079 void test_invalidAssignment_localVariable() { | |
5080 Source source = addSource(EngineTestCase.createSource(["f() {", " int x;",
" x = '0';", "}"])); | |
5081 resolve(source); | |
5082 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5083 verify([source]); | |
5084 } | |
5085 void test_invalidAssignment_staticVariable() { | |
5086 Source source = addSource(EngineTestCase.createSource([ | |
5087 "class A {", | |
5088 " static int x;", | |
5089 "}", | |
5090 "f() {", | |
5091 " A.x = '0';", | |
5092 "}"])); | |
5093 resolve(source); | |
5094 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5095 verify([source]); | |
5096 } | |
5097 void test_invalidAssignment_topLevelVariableDeclaration() { | |
5098 Source source = addSource(EngineTestCase.createSource(["int x = 'string';"])
); | |
5099 resolve(source); | |
5100 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5101 verify([source]); | |
5102 } | |
5103 void test_invalidAssignment_variableDeclaration() { | |
5104 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
= 'string';", "}"])); | |
5105 resolve(source); | |
5106 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
5107 verify([source]); | |
5108 } | |
5109 void test_invocationOfNonFunction_class() { | |
5110 Source source = addSource(EngineTestCase.createSource(["class A {", " void
m() {", " A();", " }", "}"])); | |
5111 resolve(source); | |
5112 assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); | |
5113 } | |
5114 void test_invocationOfNonFunction_localVariable() { | |
5115 Source source = addSource(EngineTestCase.createSource(["f() {", " int x;",
" return x();", "}"])); | |
5116 resolve(source); | |
5117 assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); | |
5118 verify([source]); | |
5119 } | |
5120 void test_invocationOfNonFunction_ordinaryInvocation() { | |
5121 Source source = addSource(EngineTestCase.createSource([ | |
5122 "class A {", | |
5123 " static int x;", | |
5124 "}", | |
5125 "class B {", | |
5126 " m() {", | |
5127 " A.x();", | |
5128 " }", | |
5129 "}"])); | |
5130 resolve(source); | |
5131 assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); | |
5132 } | |
5133 void test_invocationOfNonFunction_staticInvocation() { | |
5134 Source source = addSource(EngineTestCase.createSource([ | |
5135 "class A {", | |
5136 " static int get g => 0;", | |
5137 " f() {", | |
5138 " A.g();", | |
5139 " }", | |
5140 "}"])); | |
5141 resolve(source); | |
5142 assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); | |
5143 } | |
5144 void test_invocationOfNonFunction_superExpression() { | |
5145 Source source = addSource(EngineTestCase.createSource([ | |
5146 "class A {", | |
5147 " int get g => 0;", | |
5148 "}", | |
5149 "class B extends A {", | |
5150 " m() {", | |
5151 " var v = super.g();", | |
5152 " }", | |
5153 "}"])); | |
5154 resolve(source); | |
5155 assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION]); | |
5156 verify([source]); | |
5157 } | |
5158 void test_invocationOfNonFunctionExpression_literal() { | |
5159 Source source = addSource(EngineTestCase.createSource(["f() {", " 3(5);", "
}"])); | |
5160 resolve(source); | |
5161 assertErrors(source, [StaticTypeWarningCode.INVOCATION_OF_NON_FUNCTION_EXPRE
SSION]); | |
5162 verify([source]); | |
5163 } | |
5164 void test_nonBoolCondition_conditional() { | |
5165 Source source = addSource(EngineTestCase.createSource(["f() { return 3 ? 2 :
1; }"])); | |
5166 resolve(source); | |
5167 assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); | |
5168 verify([source]); | |
5169 } | |
5170 void test_nonBoolCondition_do() { | |
5171 Source source = addSource(EngineTestCase.createSource(["f() {", " do {} whi
le (3);", "}"])); | |
5172 resolve(source); | |
5173 assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); | |
5174 verify([source]); | |
5175 } | |
5176 void test_nonBoolCondition_if() { | |
5177 Source source = addSource(EngineTestCase.createSource(["f() {", " if (3) re
turn 2; else return 1;", "}"])); | |
5178 resolve(source); | |
5179 assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); | |
5180 verify([source]); | |
5181 } | |
5182 void test_nonBoolCondition_while() { | |
5183 Source source = addSource(EngineTestCase.createSource(["f() {", " while (3)
{}", "}"])); | |
5184 resolve(source); | |
5185 assertErrors(source, [StaticTypeWarningCode.NON_BOOL_CONDITION]); | |
5186 verify([source]); | |
5187 } | |
5188 void test_nonBoolExpression_functionType() { | |
5189 Source source = addSource(EngineTestCase.createSource([ | |
5190 "int makeAssertion() => 1;", | |
5191 "f() {", | |
5192 " assert(makeAssertion);", | |
5193 "}"])); | |
5194 resolve(source); | |
5195 assertErrors(source, [StaticTypeWarningCode.NON_BOOL_EXPRESSION]); | |
5196 verify([source]); | |
5197 } | |
5198 void test_nonBoolExpression_interfaceType() { | |
5199 Source source = addSource(EngineTestCase.createSource(["f() {", " assert(0)
;", "}"])); | |
5200 resolve(source); | |
5201 assertErrors(source, [StaticTypeWarningCode.NON_BOOL_EXPRESSION]); | |
5202 verify([source]); | |
5203 } | |
5204 void test_nonTypeAsTypeArgument_notAType() { | |
5205 Source source = addSource(EngineTestCase.createSource(["int A;", "class B<E>
{}", "f(B<A> b) {}"])); | |
5206 resolve(source); | |
5207 assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); | |
5208 verify([source]); | |
5209 } | |
5210 void test_nonTypeAsTypeArgument_undefinedIdentifier() { | |
5211 Source source = addSource(EngineTestCase.createSource(["class B<E> {}", "f(B
<A> b) {}"])); | |
5212 resolve(source); | |
5213 assertErrors(source, [StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT]); | |
5214 verify([source]); | |
5215 } | |
5216 void test_returnOfInvalidType_expressionFunctionBody_function() { | |
5217 Source source = addSource(EngineTestCase.createSource(["int f() => '0';"])); | |
5218 resolve(source); | |
5219 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5220 verify([source]); | |
5221 } | |
5222 void test_returnOfInvalidType_expressionFunctionBody_getter() { | |
5223 Source source = addSource(EngineTestCase.createSource(["int get g => '0';"])
); | |
5224 resolve(source); | |
5225 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5226 verify([source]); | |
5227 } | |
5228 void test_returnOfInvalidType_expressionFunctionBody_localFunction() { | |
5229 Source source = addSource(EngineTestCase.createSource([ | |
5230 "class A {", | |
5231 " String m() {", | |
5232 " int f() => '0';", | |
5233 " }", | |
5234 "}"])); | |
5235 resolve(source); | |
5236 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5237 verify([source]); | |
5238 } | |
5239 void test_returnOfInvalidType_expressionFunctionBody_method() { | |
5240 Source source = addSource(EngineTestCase.createSource(["class A {", " int f
() => '0';", "}"])); | |
5241 resolve(source); | |
5242 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5243 verify([source]); | |
5244 } | |
5245 void test_returnOfInvalidType_expressionFunctionBody_void() { | |
5246 Source source = addSource(EngineTestCase.createSource(["void f() => 42;"])); | |
5247 resolve(source); | |
5248 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5249 verify([source]); | |
5250 } | |
5251 void test_returnOfInvalidType_function() { | |
5252 Source source = addSource(EngineTestCase.createSource(["int f() { return '0'
; }"])); | |
5253 resolve(source); | |
5254 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5255 verify([source]); | |
5256 } | |
5257 void test_returnOfInvalidType_getter() { | |
5258 Source source = addSource(EngineTestCase.createSource(["int get g { return '
0'; }"])); | |
5259 resolve(source); | |
5260 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5261 verify([source]); | |
5262 } | |
5263 void test_returnOfInvalidType_localFunction() { | |
5264 Source source = addSource(EngineTestCase.createSource([ | |
5265 "class A {", | |
5266 " String m() {", | |
5267 " int f() { return '0'; }", | |
5268 " }", | |
5269 "}"])); | |
5270 resolve(source); | |
5271 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5272 verify([source]); | |
5273 } | |
5274 void test_returnOfInvalidType_method() { | |
5275 Source source = addSource(EngineTestCase.createSource(["class A {", " int f
() { return '0'; }", "}"])); | |
5276 resolve(source); | |
5277 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5278 verify([source]); | |
5279 } | |
5280 void test_returnOfInvalidType_void() { | |
5281 Source source = addSource(EngineTestCase.createSource(["void f() { return 42
; }"])); | |
5282 resolve(source); | |
5283 assertErrors(source, [StaticTypeWarningCode.RETURN_OF_INVALID_TYPE]); | |
5284 verify([source]); | |
5285 } | |
5286 void test_typeArgumentNotMatchingBounds_classTypeAlias() { | |
5287 Source source = addSource(EngineTestCase.createSource([ | |
5288 "class A {}", | |
5289 "class B {}", | |
5290 "class C {}", | |
5291 "class G<E extends A> {}", | |
5292 "class D = G<B> with C;"])); | |
5293 resolve(source); | |
5294 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5295 verify([source]); | |
5296 } | |
5297 void test_typeArgumentNotMatchingBounds_extends() { | |
5298 Source source = addSource(EngineTestCase.createSource([ | |
5299 "class A {}", | |
5300 "class B {}", | |
5301 "class G<E extends A> {}", | |
5302 "class C extends G<B>{}"])); | |
5303 resolve(source); | |
5304 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5305 verify([source]); | |
5306 } | |
5307 void test_typeArgumentNotMatchingBounds_fieldFormalParameter() { | |
5308 Source source = addSource(EngineTestCase.createSource([ | |
5309 "class A {}", | |
5310 "class B {}", | |
5311 "class G<E extends A> {}", | |
5312 "class C {", | |
5313 " var f;", | |
5314 " C(G<B> this.f) {}", | |
5315 "}"])); | |
5316 resolve(source); | |
5317 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5318 verify([source]); | |
5319 } | |
5320 void test_typeArgumentNotMatchingBounds_functionReturnType() { | |
5321 Source source = addSource(EngineTestCase.createSource([ | |
5322 "class A {}", | |
5323 "class B {}", | |
5324 "class G<E extends A> {}", | |
5325 "G<B> f() {}"])); | |
5326 resolve(source); | |
5327 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5328 verify([source]); | |
5329 } | |
5330 void test_typeArgumentNotMatchingBounds_functionTypeAlias() { | |
5331 Source source = addSource(EngineTestCase.createSource([ | |
5332 "class A {}", | |
5333 "class B {}", | |
5334 "class G<E extends A> {}", | |
5335 "typedef G<B> f();"])); | |
5336 resolve(source); | |
5337 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5338 verify([source]); | |
5339 } | |
5340 void test_typeArgumentNotMatchingBounds_functionTypedFormalParameter() { | |
5341 Source source = addSource(EngineTestCase.createSource([ | |
5342 "class A {}", | |
5343 "class B {}", | |
5344 "class G<E extends A> {}", | |
5345 "f(G<B> h()) {}"])); | |
5346 resolve(source); | |
5347 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5348 verify([source]); | |
5349 } | |
5350 void test_typeArgumentNotMatchingBounds_implements() { | |
5351 Source source = addSource(EngineTestCase.createSource([ | |
5352 "class A {}", | |
5353 "class B {}", | |
5354 "class G<E extends A> {}", | |
5355 "class C implements G<B>{}"])); | |
5356 resolve(source); | |
5357 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5358 verify([source]); | |
5359 } | |
5360 void test_typeArgumentNotMatchingBounds_is() { | |
5361 Source source = addSource(EngineTestCase.createSource([ | |
5362 "class A {}", | |
5363 "class B {}", | |
5364 "class G<E extends A> {}", | |
5365 "var b = 1 is G<B>;"])); | |
5366 resolve(source); | |
5367 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5368 verify([source]); | |
5369 } | |
5370 void test_typeArgumentNotMatchingBounds_methodReturnType() { | |
5371 Source source = addSource(EngineTestCase.createSource([ | |
5372 "class A {}", | |
5373 "class B {}", | |
5374 "class G<E extends A> {}", | |
5375 "class C {", | |
5376 " G<B> m() {}", | |
5377 "}"])); | |
5378 resolve(source); | |
5379 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5380 verify([source]); | |
5381 } | |
5382 void test_typeArgumentNotMatchingBounds_new() { | |
5383 Source source = addSource(EngineTestCase.createSource([ | |
5384 "class A {}", | |
5385 "class B {}", | |
5386 "class G<E extends A> {}", | |
5387 "f() { return new G<B>(); }"])); | |
5388 resolve(source); | |
5389 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5390 verify([source]); | |
5391 } | |
5392 void test_typeArgumentNotMatchingBounds_new_superTypeOfUpperBound() { | |
5393 Source source = addSource(EngineTestCase.createSource([ | |
5394 "class A {}", | |
5395 "class B extends A {}", | |
5396 "class C extends B {}", | |
5397 "class G<E extends B> {}", | |
5398 "f() { return new G<A>(); }"])); | |
5399 resolve(source); | |
5400 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5401 verify([source]); | |
5402 } | |
5403 void test_typeArgumentNotMatchingBounds_parameter() { | |
5404 Source source = addSource(EngineTestCase.createSource([ | |
5405 "class A {}", | |
5406 "class B {}", | |
5407 "class G<E extends A> {}", | |
5408 "f(G<B> g) {}"])); | |
5409 resolve(source); | |
5410 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5411 verify([source]); | |
5412 } | |
5413 void test_typeArgumentNotMatchingBounds_redirectingConstructor() { | |
5414 Source source = addSource(EngineTestCase.createSource([ | |
5415 "class A {}", | |
5416 "class B {}", | |
5417 "class X<T extends A> {", | |
5418 " X(int x, int y) {}", | |
5419 " factory X.name(int x, int y) = X<B>;", | |
5420 "}"])); | |
5421 resolve(source); | |
5422 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5423 verify([source]); | |
5424 } | |
5425 void test_typeArgumentNotMatchingBounds_typeArgumentList() { | |
5426 Source source = addSource(EngineTestCase.createSource([ | |
5427 "class A {}", | |
5428 "class B {}", | |
5429 "class C<E> {}", | |
5430 "class D<E extends A> {}", | |
5431 "C<D<B>> Var;"])); | |
5432 resolve(source); | |
5433 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5434 verify([source]); | |
5435 } | |
5436 void test_typeArgumentNotMatchingBounds_typeParameter() { | |
5437 Source source = addSource(EngineTestCase.createSource([ | |
5438 "class A {}", | |
5439 "class B {}", | |
5440 "class C {}", | |
5441 "class G<E extends A> {}", | |
5442 "class D<F extends G<B>> {}"])); | |
5443 resolve(source); | |
5444 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5445 verify([source]); | |
5446 } | |
5447 void test_typeArgumentNotMatchingBounds_variableDeclaration() { | |
5448 Source source = addSource(EngineTestCase.createSource([ | |
5449 "class A {}", | |
5450 "class B {}", | |
5451 "class G<E extends A> {}", | |
5452 "G<B> g;"])); | |
5453 resolve(source); | |
5454 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5455 verify([source]); | |
5456 } | |
5457 void test_typeArgumentNotMatchingBounds_with() { | |
5458 Source source = addSource(EngineTestCase.createSource([ | |
5459 "class A {}", | |
5460 "class B {}", | |
5461 "class G<E extends A> {}", | |
5462 "class C extends Object with G<B>{}"])); | |
5463 resolve(source); | |
5464 assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUND
S]); | |
5465 verify([source]); | |
5466 } | |
5467 void test_typeParameterSupertypeOfItsBound() { | |
5468 Source source = addSource(EngineTestCase.createSource(["class A<T extends T>
{", "}"])); | |
5469 resolve(source); | |
5470 assertErrors(source, [StaticTypeWarningCode.TYPE_PARAMETER_SUPERTYPE_OF_ITS_
BOUND]); | |
5471 verify([source]); | |
5472 } | |
5473 void test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_mutated()
{ | |
5474 Source source = addSource(EngineTestCase.createSource([ | |
5475 "callMe(f()) { f(); }", | |
5476 "main(Object p) {", | |
5477 " (p is String) && callMe(() { p.length; });", | |
5478 " p = 0;", | |
5479 "}"])); | |
5480 resolve(source); | |
5481 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5482 } | |
5483 void test_typePromotion_booleanAnd_useInRight_mutatedInLeft() { | |
5484 Source source = addSource(EngineTestCase.createSource([ | |
5485 "main(Object p) {", | |
5486 " ((p is String) && ((p = 42) == 42)) && p.length != 0;", | |
5487 "}"])); | |
5488 resolve(source); | |
5489 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5490 } | |
5491 void test_typePromotion_booleanAnd_useInRight_mutatedInRight() { | |
5492 Source source = addSource(EngineTestCase.createSource([ | |
5493 "main(Object p) {", | |
5494 " (p is String) && (((p = 42) == 42) && p.length != 0);", | |
5495 "}"])); | |
5496 resolve(source); | |
5497 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5498 } | |
5499 void test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_
after() { | |
5500 Source source = addSource(EngineTestCase.createSource([ | |
5501 "callMe(f()) { f(); }", | |
5502 "main(Object p) {", | |
5503 " p is String ? callMe(() { p.length; }) : 0;", | |
5504 " p = 42;", | |
5505 "}"])); | |
5506 resolve(source); | |
5507 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5508 } | |
5509 void test_typePromotion_conditional_useInThen_accessedInClosure_hasAssignment_
before() { | |
5510 Source source = addSource(EngineTestCase.createSource([ | |
5511 "callMe(f()) { f(); }", | |
5512 "main(Object p) {", | |
5513 " p = 42;", | |
5514 " p is String ? callMe(() { p.length; }) : 0;", | |
5515 "}"])); | |
5516 resolve(source); | |
5517 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5518 } | |
5519 void test_typePromotion_conditional_useInThen_hasAssignment() { | |
5520 Source source = addSource(EngineTestCase.createSource([ | |
5521 "main(Object p) {", | |
5522 " p is String ? (p.length + (p = 42)) : 0;", | |
5523 "}"])); | |
5524 resolve(source); | |
5525 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5526 } | |
5527 void test_typePromotion_if_accessedInClosure_hasAssignment() { | |
5528 Source source = addSource(EngineTestCase.createSource([ | |
5529 "callMe(f()) { f(); }", | |
5530 "main(Object p) {", | |
5531 " if (p is String) {", | |
5532 " callMe(() {", | |
5533 " p.length;", | |
5534 " });", | |
5535 " }", | |
5536 " p = 0;", | |
5537 "}"])); | |
5538 resolve(source); | |
5539 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5540 } | |
5541 void test_typePromotion_if_and_right_hasAssignment() { | |
5542 Source source = addSource(EngineTestCase.createSource([ | |
5543 "main(Object p) {", | |
5544 " if (p is String && (p = null) == null) {", | |
5545 " p.length;", | |
5546 " }", | |
5547 "}"])); | |
5548 resolve(source); | |
5549 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5550 } | |
5551 void test_typePromotion_if_hasAssignment_after() { | |
5552 Source source = addSource(EngineTestCase.createSource([ | |
5553 "main(Object p) {", | |
5554 " if (p is String) {", | |
5555 " p.length;", | |
5556 " p = 0;", | |
5557 " }", | |
5558 "}"])); | |
5559 resolve(source); | |
5560 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5561 } | |
5562 void test_typePromotion_if_hasAssignment_before() { | |
5563 Source source = addSource(EngineTestCase.createSource([ | |
5564 "main(Object p) {", | |
5565 " if (p is String) {", | |
5566 " p = 0;", | |
5567 " p.length;", | |
5568 " }", | |
5569 "}"])); | |
5570 resolve(source); | |
5571 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5572 } | |
5573 void test_undefinedGetter() { | |
5574 Source source = addSource(EngineTestCase.createSource(["class T {}", "f(T e)
{ return e.m; }"])); | |
5575 resolve(source); | |
5576 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5577 } | |
5578 void test_undefinedGetter_static() { | |
5579 Source source = addSource(EngineTestCase.createSource(["class A {}", "var a
= A.B;"])); | |
5580 resolve(source); | |
5581 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_GETTER]); | |
5582 } | |
5583 void test_undefinedMethod() { | |
5584 Source source = addSource(EngineTestCase.createSource(["class A {", " void
m() {", " n();", " }", "}"])); | |
5585 resolve(source); | |
5586 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); | |
5587 } | |
5588 void test_undefinedMethod_assignmentExpression() { | |
5589 Source source = addSource(EngineTestCase.createSource([ | |
5590 "class A {}", | |
5591 "class B {", | |
5592 " f(A a) {", | |
5593 " A a2 = new A();", | |
5594 " a += a2;", | |
5595 " }", | |
5596 "}"])); | |
5597 resolve(source); | |
5598 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); | |
5599 } | |
5600 void test_undefinedMethod_ignoreTypePropagation() { | |
5601 Source source = addSource(EngineTestCase.createSource([ | |
5602 "class A {}", | |
5603 "class B extends A {", | |
5604 " m() {}", | |
5605 "}", | |
5606 "class C {", | |
5607 " f() {", | |
5608 " A a = new B();", | |
5609 " a.m();", | |
5610 " }", | |
5611 "}"])); | |
5612 resolve(source); | |
5613 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); | |
5614 } | |
5615 void test_undefinedMethod_private() { | |
5616 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A {", " _foo() {}", "}"])); | |
5617 Source source = addSource(EngineTestCase.createSource([ | |
5618 "import 'lib.dart';", | |
5619 "class B extends A {", | |
5620 " test() {", | |
5621 " _foo();", | |
5622 " }", | |
5623 "}"])); | |
5624 resolve(source); | |
5625 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_METHOD]); | |
5626 } | |
5627 void test_undefinedOperator_indexBoth() { | |
5628 Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a)
{", " a[0]++;", "}"])); | |
5629 resolve(source); | |
5630 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
5631 } | |
5632 void test_undefinedOperator_indexGetter() { | |
5633 Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a)
{", " a[0];", "}"])); | |
5634 resolve(source); | |
5635 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
5636 } | |
5637 void test_undefinedOperator_indexSetter() { | |
5638 Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a)
{", " a[0] = 1;", "}"])); | |
5639 resolve(source); | |
5640 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
5641 } | |
5642 void test_undefinedOperator_plus() { | |
5643 Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a)
{", " a + 1;", "}"])); | |
5644 resolve(source); | |
5645 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
5646 } | |
5647 void test_undefinedOperator_postfixExpression() { | |
5648 Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a)
{", " a++;", "}"])); | |
5649 resolve(source); | |
5650 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
5651 } | |
5652 void test_undefinedOperator_prefixExpression() { | |
5653 Source source = addSource(EngineTestCase.createSource(["class A {}", "f(A a)
{", " ++a;", "}"])); | |
5654 resolve(source); | |
5655 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
5656 } | |
5657 void test_undefinedSetter() { | |
5658 Source source = addSource(EngineTestCase.createSource(["class T {}", "f(T e1
) { e1.m = 0; }"])); | |
5659 resolve(source); | |
5660 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); | |
5661 } | |
5662 void test_undefinedSetter_static() { | |
5663 Source source = addSource(EngineTestCase.createSource(["class A {}", "f() {
A.B = 0;}"])); | |
5664 resolve(source); | |
5665 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SETTER]); | |
5666 } | |
5667 void test_undefinedSuperMethod() { | |
5668 Source source = addSource(EngineTestCase.createSource([ | |
5669 "class A {}", | |
5670 "class B extends A {", | |
5671 " m() { return super.m(); }", | |
5672 "}"])); | |
5673 resolve(source); | |
5674 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_SUPER_METHOD]); | |
5675 } | |
5676 void test_unqualifiedReferenceToNonLocalStaticMember_getter() { | |
5677 Source source = addSource(EngineTestCase.createSource([ | |
5678 "class A {", | |
5679 " static int get a => 0;", | |
5680 "}", | |
5681 "class B extends A {", | |
5682 " int b() {", | |
5683 " return a;", | |
5684 " }", | |
5685 "}"])); | |
5686 resolve(source); | |
5687 assertErrors(source, [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOC
AL_STATIC_MEMBER]); | |
5688 verify([source]); | |
5689 } | |
5690 void test_unqualifiedReferenceToNonLocalStaticMember_method() { | |
5691 Source source = addSource(EngineTestCase.createSource([ | |
5692 "class A {", | |
5693 " static void a() {}", | |
5694 "}", | |
5695 "class B extends A {", | |
5696 " void b() {", | |
5697 " a();", | |
5698 " }", | |
5699 "}"])); | |
5700 resolve(source); | |
5701 assertErrors(source, [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOC
AL_STATIC_MEMBER]); | |
5702 verify([source]); | |
5703 } | |
5704 void test_unqualifiedReferenceToNonLocalStaticMember_setter() { | |
5705 Source source = addSource(EngineTestCase.createSource([ | |
5706 "class A {", | |
5707 " static set a(x) {}", | |
5708 "}", | |
5709 "class B extends A {", | |
5710 " b(y) {", | |
5711 " a = y;", | |
5712 " }", | |
5713 "}"])); | |
5714 resolve(source); | |
5715 assertErrors(source, [StaticTypeWarningCode.UNQUALIFIED_REFERENCE_TO_NON_LOC
AL_STATIC_MEMBER]); | |
5716 verify([source]); | |
5717 } | |
5718 void test_wrongNumberOfTypeArguments_tooFew() { | |
5719 Source source = addSource(EngineTestCase.createSource(["class A<E, F> {}", "
A<A> a = null;"])); | |
5720 resolve(source); | |
5721 assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS])
; | |
5722 verify([source]); | |
5723 } | |
5724 void test_wrongNumberOfTypeArguments_tooMany() { | |
5725 Source source = addSource(EngineTestCase.createSource(["class A<E> {}", "A<A
, A> a = null;"])); | |
5726 resolve(source); | |
5727 assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS])
; | |
5728 verify([source]); | |
5729 } | |
5730 void test_wrongNumberOfTypeArguments_typeTest_tooFew() { | |
5731 Source source = addSource(EngineTestCase.createSource([ | |
5732 "class A {}", | |
5733 "class C<K, V> {}", | |
5734 "f(p) {", | |
5735 " return p is C<A>;", | |
5736 "}"])); | |
5737 resolve(source); | |
5738 assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS])
; | |
5739 verify([source]); | |
5740 } | |
5741 void test_wrongNumberOfTypeArguments_typeTest_tooMany() { | |
5742 Source source = addSource(EngineTestCase.createSource([ | |
5743 "class A {}", | |
5744 "class C<E> {}", | |
5745 "f(p) {", | |
5746 " return p is C<A, A>;", | |
5747 "}"])); | |
5748 resolve(source); | |
5749 assertErrors(source, [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS])
; | |
5750 verify([source]); | |
5751 } | |
5752 static dartSuite() { | |
5753 _ut.group('StaticTypeWarningCodeTest', () { | |
5754 _ut.test('test_expectedOneListTypeArgument', () { | |
5755 final __test = new StaticTypeWarningCodeTest(); | |
5756 runJUnitTest(__test, __test.test_expectedOneListTypeArgument); | |
5757 }); | |
5758 _ut.test('test_expectedTwoMapTypeArguments_one', () { | |
5759 final __test = new StaticTypeWarningCodeTest(); | |
5760 runJUnitTest(__test, __test.test_expectedTwoMapTypeArguments_one); | |
5761 }); | |
5762 _ut.test('test_expectedTwoMapTypeArguments_three', () { | |
5763 final __test = new StaticTypeWarningCodeTest(); | |
5764 runJUnitTest(__test, __test.test_expectedTwoMapTypeArguments_three); | |
5765 }); | |
5766 _ut.test('test_inconsistentMethodInheritance_paramCount', () { | |
5767 final __test = new StaticTypeWarningCodeTest(); | |
5768 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_paramCoun
t); | |
5769 }); | |
5770 _ut.test('test_inconsistentMethodInheritance_paramType', () { | |
5771 final __test = new StaticTypeWarningCodeTest(); | |
5772 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_paramType
); | |
5773 }); | |
5774 _ut.test('test_inconsistentMethodInheritance_returnType', () { | |
5775 final __test = new StaticTypeWarningCodeTest(); | |
5776 runJUnitTest(__test, __test.test_inconsistentMethodInheritance_returnTyp
e); | |
5777 }); | |
5778 _ut.test('test_instanceAccessToStaticMember_method_invocation', () { | |
5779 final __test = new StaticTypeWarningCodeTest(); | |
5780 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_method_inv
ocation); | |
5781 }); | |
5782 _ut.test('test_instanceAccessToStaticMember_method_reference', () { | |
5783 final __test = new StaticTypeWarningCodeTest(); | |
5784 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_method_ref
erence); | |
5785 }); | |
5786 _ut.test('test_instanceAccessToStaticMember_propertyAccess_field', () { | |
5787 final __test = new StaticTypeWarningCodeTest(); | |
5788 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_propertyAc
cess_field); | |
5789 }); | |
5790 _ut.test('test_instanceAccessToStaticMember_propertyAccess_getter', () { | |
5791 final __test = new StaticTypeWarningCodeTest(); | |
5792 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_propertyAc
cess_getter); | |
5793 }); | |
5794 _ut.test('test_instanceAccessToStaticMember_propertyAccess_setter', () { | |
5795 final __test = new StaticTypeWarningCodeTest(); | |
5796 runJUnitTest(__test, __test.test_instanceAccessToStaticMember_propertyAc
cess_setter); | |
5797 }); | |
5798 _ut.test('test_invalidAssignment_compoundAssignment', () { | |
5799 final __test = new StaticTypeWarningCodeTest(); | |
5800 runJUnitTest(__test, __test.test_invalidAssignment_compoundAssignment); | |
5801 }); | |
5802 _ut.test('test_invalidAssignment_defaultValue_named', () { | |
5803 final __test = new StaticTypeWarningCodeTest(); | |
5804 runJUnitTest(__test, __test.test_invalidAssignment_defaultValue_named); | |
5805 }); | |
5806 _ut.test('test_invalidAssignment_defaultValue_optional', () { | |
5807 final __test = new StaticTypeWarningCodeTest(); | |
5808 runJUnitTest(__test, __test.test_invalidAssignment_defaultValue_optional
); | |
5809 }); | |
5810 _ut.test('test_invalidAssignment_instanceVariable', () { | |
5811 final __test = new StaticTypeWarningCodeTest(); | |
5812 runJUnitTest(__test, __test.test_invalidAssignment_instanceVariable); | |
5813 }); | |
5814 _ut.test('test_invalidAssignment_localVariable', () { | |
5815 final __test = new StaticTypeWarningCodeTest(); | |
5816 runJUnitTest(__test, __test.test_invalidAssignment_localVariable); | |
5817 }); | |
5818 _ut.test('test_invalidAssignment_staticVariable', () { | |
5819 final __test = new StaticTypeWarningCodeTest(); | |
5820 runJUnitTest(__test, __test.test_invalidAssignment_staticVariable); | |
5821 }); | |
5822 _ut.test('test_invalidAssignment_topLevelVariableDeclaration', () { | |
5823 final __test = new StaticTypeWarningCodeTest(); | |
5824 runJUnitTest(__test, __test.test_invalidAssignment_topLevelVariableDecla
ration); | |
5825 }); | |
5826 _ut.test('test_invalidAssignment_variableDeclaration', () { | |
5827 final __test = new StaticTypeWarningCodeTest(); | |
5828 runJUnitTest(__test, __test.test_invalidAssignment_variableDeclaration); | |
5829 }); | |
5830 _ut.test('test_invocationOfNonFunctionExpression_literal', () { | |
5831 final __test = new StaticTypeWarningCodeTest(); | |
5832 runJUnitTest(__test, __test.test_invocationOfNonFunctionExpression_liter
al); | |
5833 }); | |
5834 _ut.test('test_invocationOfNonFunction_class', () { | |
5835 final __test = new StaticTypeWarningCodeTest(); | |
5836 runJUnitTest(__test, __test.test_invocationOfNonFunction_class); | |
5837 }); | |
5838 _ut.test('test_invocationOfNonFunction_localVariable', () { | |
5839 final __test = new StaticTypeWarningCodeTest(); | |
5840 runJUnitTest(__test, __test.test_invocationOfNonFunction_localVariable); | |
5841 }); | |
5842 _ut.test('test_invocationOfNonFunction_ordinaryInvocation', () { | |
5843 final __test = new StaticTypeWarningCodeTest(); | |
5844 runJUnitTest(__test, __test.test_invocationOfNonFunction_ordinaryInvocat
ion); | |
5845 }); | |
5846 _ut.test('test_invocationOfNonFunction_staticInvocation', () { | |
5847 final __test = new StaticTypeWarningCodeTest(); | |
5848 runJUnitTest(__test, __test.test_invocationOfNonFunction_staticInvocatio
n); | |
5849 }); | |
5850 _ut.test('test_invocationOfNonFunction_superExpression', () { | |
5851 final __test = new StaticTypeWarningCodeTest(); | |
5852 runJUnitTest(__test, __test.test_invocationOfNonFunction_superExpression
); | |
5853 }); | |
5854 _ut.test('test_nonBoolCondition_conditional', () { | |
5855 final __test = new StaticTypeWarningCodeTest(); | |
5856 runJUnitTest(__test, __test.test_nonBoolCondition_conditional); | |
5857 }); | |
5858 _ut.test('test_nonBoolCondition_do', () { | |
5859 final __test = new StaticTypeWarningCodeTest(); | |
5860 runJUnitTest(__test, __test.test_nonBoolCondition_do); | |
5861 }); | |
5862 _ut.test('test_nonBoolCondition_if', () { | |
5863 final __test = new StaticTypeWarningCodeTest(); | |
5864 runJUnitTest(__test, __test.test_nonBoolCondition_if); | |
5865 }); | |
5866 _ut.test('test_nonBoolCondition_while', () { | |
5867 final __test = new StaticTypeWarningCodeTest(); | |
5868 runJUnitTest(__test, __test.test_nonBoolCondition_while); | |
5869 }); | |
5870 _ut.test('test_nonBoolExpression_functionType', () { | |
5871 final __test = new StaticTypeWarningCodeTest(); | |
5872 runJUnitTest(__test, __test.test_nonBoolExpression_functionType); | |
5873 }); | |
5874 _ut.test('test_nonBoolExpression_interfaceType', () { | |
5875 final __test = new StaticTypeWarningCodeTest(); | |
5876 runJUnitTest(__test, __test.test_nonBoolExpression_interfaceType); | |
5877 }); | |
5878 _ut.test('test_nonTypeAsTypeArgument_notAType', () { | |
5879 final __test = new StaticTypeWarningCodeTest(); | |
5880 runJUnitTest(__test, __test.test_nonTypeAsTypeArgument_notAType); | |
5881 }); | |
5882 _ut.test('test_nonTypeAsTypeArgument_undefinedIdentifier', () { | |
5883 final __test = new StaticTypeWarningCodeTest(); | |
5884 runJUnitTest(__test, __test.test_nonTypeAsTypeArgument_undefinedIdentifi
er); | |
5885 }); | |
5886 _ut.test('test_returnOfInvalidType_expressionFunctionBody_function', () { | |
5887 final __test = new StaticTypeWarningCodeTest(); | |
5888 runJUnitTest(__test, __test.test_returnOfInvalidType_expressionFunctionB
ody_function); | |
5889 }); | |
5890 _ut.test('test_returnOfInvalidType_expressionFunctionBody_getter', () { | |
5891 final __test = new StaticTypeWarningCodeTest(); | |
5892 runJUnitTest(__test, __test.test_returnOfInvalidType_expressionFunctionB
ody_getter); | |
5893 }); | |
5894 _ut.test('test_returnOfInvalidType_expressionFunctionBody_localFunction',
() { | |
5895 final __test = new StaticTypeWarningCodeTest(); | |
5896 runJUnitTest(__test, __test.test_returnOfInvalidType_expressionFunctionB
ody_localFunction); | |
5897 }); | |
5898 _ut.test('test_returnOfInvalidType_expressionFunctionBody_method', () { | |
5899 final __test = new StaticTypeWarningCodeTest(); | |
5900 runJUnitTest(__test, __test.test_returnOfInvalidType_expressionFunctionB
ody_method); | |
5901 }); | |
5902 _ut.test('test_returnOfInvalidType_expressionFunctionBody_void', () { | |
5903 final __test = new StaticTypeWarningCodeTest(); | |
5904 runJUnitTest(__test, __test.test_returnOfInvalidType_expressionFunctionB
ody_void); | |
5905 }); | |
5906 _ut.test('test_returnOfInvalidType_function', () { | |
5907 final __test = new StaticTypeWarningCodeTest(); | |
5908 runJUnitTest(__test, __test.test_returnOfInvalidType_function); | |
5909 }); | |
5910 _ut.test('test_returnOfInvalidType_getter', () { | |
5911 final __test = new StaticTypeWarningCodeTest(); | |
5912 runJUnitTest(__test, __test.test_returnOfInvalidType_getter); | |
5913 }); | |
5914 _ut.test('test_returnOfInvalidType_localFunction', () { | |
5915 final __test = new StaticTypeWarningCodeTest(); | |
5916 runJUnitTest(__test, __test.test_returnOfInvalidType_localFunction); | |
5917 }); | |
5918 _ut.test('test_returnOfInvalidType_method', () { | |
5919 final __test = new StaticTypeWarningCodeTest(); | |
5920 runJUnitTest(__test, __test.test_returnOfInvalidType_method); | |
5921 }); | |
5922 _ut.test('test_returnOfInvalidType_void', () { | |
5923 final __test = new StaticTypeWarningCodeTest(); | |
5924 runJUnitTest(__test, __test.test_returnOfInvalidType_void); | |
5925 }); | |
5926 _ut.test('test_typeArgumentNotMatchingBounds_classTypeAlias', () { | |
5927 final __test = new StaticTypeWarningCodeTest(); | |
5928 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_classType
Alias); | |
5929 }); | |
5930 _ut.test('test_typeArgumentNotMatchingBounds_extends', () { | |
5931 final __test = new StaticTypeWarningCodeTest(); | |
5932 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_extends); | |
5933 }); | |
5934 _ut.test('test_typeArgumentNotMatchingBounds_fieldFormalParameter', () { | |
5935 final __test = new StaticTypeWarningCodeTest(); | |
5936 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_fieldForm
alParameter); | |
5937 }); | |
5938 _ut.test('test_typeArgumentNotMatchingBounds_functionReturnType', () { | |
5939 final __test = new StaticTypeWarningCodeTest(); | |
5940 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_functionR
eturnType); | |
5941 }); | |
5942 _ut.test('test_typeArgumentNotMatchingBounds_functionTypeAlias', () { | |
5943 final __test = new StaticTypeWarningCodeTest(); | |
5944 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_functionT
ypeAlias); | |
5945 }); | |
5946 _ut.test('test_typeArgumentNotMatchingBounds_functionTypedFormalParameter'
, () { | |
5947 final __test = new StaticTypeWarningCodeTest(); | |
5948 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_functionT
ypedFormalParameter); | |
5949 }); | |
5950 _ut.test('test_typeArgumentNotMatchingBounds_implements', () { | |
5951 final __test = new StaticTypeWarningCodeTest(); | |
5952 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_implement
s); | |
5953 }); | |
5954 _ut.test('test_typeArgumentNotMatchingBounds_is', () { | |
5955 final __test = new StaticTypeWarningCodeTest(); | |
5956 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_is); | |
5957 }); | |
5958 _ut.test('test_typeArgumentNotMatchingBounds_methodReturnType', () { | |
5959 final __test = new StaticTypeWarningCodeTest(); | |
5960 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_methodRet
urnType); | |
5961 }); | |
5962 _ut.test('test_typeArgumentNotMatchingBounds_new', () { | |
5963 final __test = new StaticTypeWarningCodeTest(); | |
5964 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_new); | |
5965 }); | |
5966 _ut.test('test_typeArgumentNotMatchingBounds_new_superTypeOfUpperBound', (
) { | |
5967 final __test = new StaticTypeWarningCodeTest(); | |
5968 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_new_super
TypeOfUpperBound); | |
5969 }); | |
5970 _ut.test('test_typeArgumentNotMatchingBounds_parameter', () { | |
5971 final __test = new StaticTypeWarningCodeTest(); | |
5972 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_parameter
); | |
5973 }); | |
5974 _ut.test('test_typeArgumentNotMatchingBounds_redirectingConstructor', () { | |
5975 final __test = new StaticTypeWarningCodeTest(); | |
5976 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_redirecti
ngConstructor); | |
5977 }); | |
5978 _ut.test('test_typeArgumentNotMatchingBounds_typeArgumentList', () { | |
5979 final __test = new StaticTypeWarningCodeTest(); | |
5980 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_typeArgum
entList); | |
5981 }); | |
5982 _ut.test('test_typeArgumentNotMatchingBounds_typeParameter', () { | |
5983 final __test = new StaticTypeWarningCodeTest(); | |
5984 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_typeParam
eter); | |
5985 }); | |
5986 _ut.test('test_typeArgumentNotMatchingBounds_variableDeclaration', () { | |
5987 final __test = new StaticTypeWarningCodeTest(); | |
5988 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_variableD
eclaration); | |
5989 }); | |
5990 _ut.test('test_typeArgumentNotMatchingBounds_with', () { | |
5991 final __test = new StaticTypeWarningCodeTest(); | |
5992 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_with); | |
5993 }); | |
5994 _ut.test('test_typeParameterSupertypeOfItsBound', () { | |
5995 final __test = new StaticTypeWarningCodeTest(); | |
5996 runJUnitTest(__test, __test.test_typeParameterSupertypeOfItsBound); | |
5997 }); | |
5998 _ut.test('test_typePromotion_booleanAnd_useInRight_accessedInClosureRight_
mutated', () { | |
5999 final __test = new StaticTypeWarningCodeTest(); | |
6000 runJUnitTest(__test, __test.test_typePromotion_booleanAnd_useInRight_acc
essedInClosureRight_mutated); | |
6001 }); | |
6002 _ut.test('test_typePromotion_booleanAnd_useInRight_mutatedInLeft', () { | |
6003 final __test = new StaticTypeWarningCodeTest(); | |
6004 runJUnitTest(__test, __test.test_typePromotion_booleanAnd_useInRight_mut
atedInLeft); | |
6005 }); | |
6006 _ut.test('test_typePromotion_booleanAnd_useInRight_mutatedInRight', () { | |
6007 final __test = new StaticTypeWarningCodeTest(); | |
6008 runJUnitTest(__test, __test.test_typePromotion_booleanAnd_useInRight_mut
atedInRight); | |
6009 }); | |
6010 _ut.test('test_typePromotion_conditional_useInThen_accessedInClosure_hasAs
signment_after', () { | |
6011 final __test = new StaticTypeWarningCodeTest(); | |
6012 runJUnitTest(__test, __test.test_typePromotion_conditional_useInThen_acc
essedInClosure_hasAssignment_after); | |
6013 }); | |
6014 _ut.test('test_typePromotion_conditional_useInThen_accessedInClosure_hasAs
signment_before', () { | |
6015 final __test = new StaticTypeWarningCodeTest(); | |
6016 runJUnitTest(__test, __test.test_typePromotion_conditional_useInThen_acc
essedInClosure_hasAssignment_before); | |
6017 }); | |
6018 _ut.test('test_typePromotion_conditional_useInThen_hasAssignment', () { | |
6019 final __test = new StaticTypeWarningCodeTest(); | |
6020 runJUnitTest(__test, __test.test_typePromotion_conditional_useInThen_has
Assignment); | |
6021 }); | |
6022 _ut.test('test_typePromotion_if_accessedInClosure_hasAssignment', () { | |
6023 final __test = new StaticTypeWarningCodeTest(); | |
6024 runJUnitTest(__test, __test.test_typePromotion_if_accessedInClosure_hasA
ssignment); | |
6025 }); | |
6026 _ut.test('test_typePromotion_if_and_right_hasAssignment', () { | |
6027 final __test = new StaticTypeWarningCodeTest(); | |
6028 runJUnitTest(__test, __test.test_typePromotion_if_and_right_hasAssignmen
t); | |
6029 }); | |
6030 _ut.test('test_typePromotion_if_hasAssignment_after', () { | |
6031 final __test = new StaticTypeWarningCodeTest(); | |
6032 runJUnitTest(__test, __test.test_typePromotion_if_hasAssignment_after); | |
6033 }); | |
6034 _ut.test('test_typePromotion_if_hasAssignment_before', () { | |
6035 final __test = new StaticTypeWarningCodeTest(); | |
6036 runJUnitTest(__test, __test.test_typePromotion_if_hasAssignment_before); | |
6037 }); | |
6038 _ut.test('test_undefinedGetter', () { | |
6039 final __test = new StaticTypeWarningCodeTest(); | |
6040 runJUnitTest(__test, __test.test_undefinedGetter); | |
6041 }); | |
6042 _ut.test('test_undefinedGetter_static', () { | |
6043 final __test = new StaticTypeWarningCodeTest(); | |
6044 runJUnitTest(__test, __test.test_undefinedGetter_static); | |
6045 }); | |
6046 _ut.test('test_undefinedMethod', () { | |
6047 final __test = new StaticTypeWarningCodeTest(); | |
6048 runJUnitTest(__test, __test.test_undefinedMethod); | |
6049 }); | |
6050 _ut.test('test_undefinedMethod_assignmentExpression', () { | |
6051 final __test = new StaticTypeWarningCodeTest(); | |
6052 runJUnitTest(__test, __test.test_undefinedMethod_assignmentExpression); | |
6053 }); | |
6054 _ut.test('test_undefinedMethod_ignoreTypePropagation', () { | |
6055 final __test = new StaticTypeWarningCodeTest(); | |
6056 runJUnitTest(__test, __test.test_undefinedMethod_ignoreTypePropagation); | |
6057 }); | |
6058 _ut.test('test_undefinedMethod_private', () { | |
6059 final __test = new StaticTypeWarningCodeTest(); | |
6060 runJUnitTest(__test, __test.test_undefinedMethod_private); | |
6061 }); | |
6062 _ut.test('test_undefinedOperator_indexBoth', () { | |
6063 final __test = new StaticTypeWarningCodeTest(); | |
6064 runJUnitTest(__test, __test.test_undefinedOperator_indexBoth); | |
6065 }); | |
6066 _ut.test('test_undefinedOperator_indexGetter', () { | |
6067 final __test = new StaticTypeWarningCodeTest(); | |
6068 runJUnitTest(__test, __test.test_undefinedOperator_indexGetter); | |
6069 }); | |
6070 _ut.test('test_undefinedOperator_indexSetter', () { | |
6071 final __test = new StaticTypeWarningCodeTest(); | |
6072 runJUnitTest(__test, __test.test_undefinedOperator_indexSetter); | |
6073 }); | |
6074 _ut.test('test_undefinedOperator_plus', () { | |
6075 final __test = new StaticTypeWarningCodeTest(); | |
6076 runJUnitTest(__test, __test.test_undefinedOperator_plus); | |
6077 }); | |
6078 _ut.test('test_undefinedOperator_postfixExpression', () { | |
6079 final __test = new StaticTypeWarningCodeTest(); | |
6080 runJUnitTest(__test, __test.test_undefinedOperator_postfixExpression); | |
6081 }); | |
6082 _ut.test('test_undefinedOperator_prefixExpression', () { | |
6083 final __test = new StaticTypeWarningCodeTest(); | |
6084 runJUnitTest(__test, __test.test_undefinedOperator_prefixExpression); | |
6085 }); | |
6086 _ut.test('test_undefinedSetter', () { | |
6087 final __test = new StaticTypeWarningCodeTest(); | |
6088 runJUnitTest(__test, __test.test_undefinedSetter); | |
6089 }); | |
6090 _ut.test('test_undefinedSetter_static', () { | |
6091 final __test = new StaticTypeWarningCodeTest(); | |
6092 runJUnitTest(__test, __test.test_undefinedSetter_static); | |
6093 }); | |
6094 _ut.test('test_undefinedSuperMethod', () { | |
6095 final __test = new StaticTypeWarningCodeTest(); | |
6096 runJUnitTest(__test, __test.test_undefinedSuperMethod); | |
6097 }); | |
6098 _ut.test('test_unqualifiedReferenceToNonLocalStaticMember_getter', () { | |
6099 final __test = new StaticTypeWarningCodeTest(); | |
6100 runJUnitTest(__test, __test.test_unqualifiedReferenceToNonLocalStaticMem
ber_getter); | |
6101 }); | |
6102 _ut.test('test_unqualifiedReferenceToNonLocalStaticMember_method', () { | |
6103 final __test = new StaticTypeWarningCodeTest(); | |
6104 runJUnitTest(__test, __test.test_unqualifiedReferenceToNonLocalStaticMem
ber_method); | |
6105 }); | |
6106 _ut.test('test_unqualifiedReferenceToNonLocalStaticMember_setter', () { | |
6107 final __test = new StaticTypeWarningCodeTest(); | |
6108 runJUnitTest(__test, __test.test_unqualifiedReferenceToNonLocalStaticMem
ber_setter); | |
6109 }); | |
6110 _ut.test('test_wrongNumberOfTypeArguments_tooFew', () { | |
6111 final __test = new StaticTypeWarningCodeTest(); | |
6112 runJUnitTest(__test, __test.test_wrongNumberOfTypeArguments_tooFew); | |
6113 }); | |
6114 _ut.test('test_wrongNumberOfTypeArguments_tooMany', () { | |
6115 final __test = new StaticTypeWarningCodeTest(); | |
6116 runJUnitTest(__test, __test.test_wrongNumberOfTypeArguments_tooMany); | |
6117 }); | |
6118 _ut.test('test_wrongNumberOfTypeArguments_typeTest_tooFew', () { | |
6119 final __test = new StaticTypeWarningCodeTest(); | |
6120 runJUnitTest(__test, __test.test_wrongNumberOfTypeArguments_typeTest_too
Few); | |
6121 }); | |
6122 _ut.test('test_wrongNumberOfTypeArguments_typeTest_tooMany', () { | |
6123 final __test = new StaticTypeWarningCodeTest(); | |
6124 runJUnitTest(__test, __test.test_wrongNumberOfTypeArguments_typeTest_too
Many); | |
6125 }); | |
6126 }); | |
6127 } | |
6128 } | |
6129 class HintCodeTest extends ResolverTestCase { | |
6130 void fail_isInt() { | |
6131 Source source = addSource(EngineTestCase.createSource(["var v = 1 is int;"])
); | |
6132 resolve(source); | |
6133 assertErrors(source, [HintCode.IS_INT]); | |
6134 verify([source]); | |
6135 } | |
6136 void fail_isNotInt() { | |
6137 Source source = addSource(EngineTestCase.createSource(["var v = 1 is! int;"]
)); | |
6138 resolve(source); | |
6139 assertErrors(source, [HintCode.IS_NOT_INT]); | |
6140 verify([source]); | |
6141 } | |
6142 void fail_overrideEqualsButNotHashCode() { | |
6143 Source source = addSource(EngineTestCase.createSource(["class A {", " bool
operator ==(x) {}", "}"])); | |
6144 resolve(source); | |
6145 assertErrors(source, [HintCode.OVERRIDE_EQUALS_BUT_NOT_HASH_CODE]); | |
6146 verify([source]); | |
6147 } | |
6148 void test_deadCode_deadBlock_conditionalElse() { | |
6149 Source source = addSource(EngineTestCase.createSource(["f() {", " true ? 1
: 2;", "}"])); | |
6150 resolve(source); | |
6151 assertErrors(source, [HintCode.DEAD_CODE]); | |
6152 verify([source]); | |
6153 } | |
6154 void test_deadCode_deadBlock_conditionalElse_nested() { | |
6155 Source source = addSource(EngineTestCase.createSource(["f() {", " true ? tr
ue : false && false;", "}"])); | |
6156 resolve(source); | |
6157 assertErrors(source, [HintCode.DEAD_CODE]); | |
6158 verify([source]); | |
6159 } | |
6160 void test_deadCode_deadBlock_conditionalIf() { | |
6161 Source source = addSource(EngineTestCase.createSource(["f() {", " false ? 1
: 2;", "}"])); | |
6162 resolve(source); | |
6163 assertErrors(source, [HintCode.DEAD_CODE]); | |
6164 verify([source]); | |
6165 } | |
6166 void test_deadCode_deadBlock_conditionalIf_nested() { | |
6167 Source source = addSource(EngineTestCase.createSource(["f() {", " false ? f
alse && false : true;", "}"])); | |
6168 resolve(source); | |
6169 assertErrors(source, [HintCode.DEAD_CODE]); | |
6170 verify([source]); | |
6171 } | |
6172 void test_deadCode_deadBlock_else() { | |
6173 Source source = addSource(EngineTestCase.createSource(["f() {", " if(true)
{} else {}", "}"])); | |
6174 resolve(source); | |
6175 assertErrors(source, [HintCode.DEAD_CODE]); | |
6176 verify([source]); | |
6177 } | |
6178 void test_deadCode_deadBlock_else_nested() { | |
6179 Source source = addSource(EngineTestCase.createSource(["f() {", " if(true)
{} else {if (false) {}}", "}"])); | |
6180 resolve(source); | |
6181 assertErrors(source, [HintCode.DEAD_CODE]); | |
6182 verify([source]); | |
6183 } | |
6184 void test_deadCode_deadBlock_if() { | |
6185 Source source = addSource(EngineTestCase.createSource(["f() {", " if(false)
{}", "}"])); | |
6186 resolve(source); | |
6187 assertErrors(source, [HintCode.DEAD_CODE]); | |
6188 verify([source]); | |
6189 } | |
6190 void test_deadCode_deadBlock_if_nested() { | |
6191 Source source = addSource(EngineTestCase.createSource(["f() {", " if(false)
{if(false) {}}", "}"])); | |
6192 resolve(source); | |
6193 assertErrors(source, [HintCode.DEAD_CODE]); | |
6194 verify([source]); | |
6195 } | |
6196 void test_deadCode_deadBlock_while() { | |
6197 Source source = addSource(EngineTestCase.createSource(["f() {", " while(fal
se) {}", "}"])); | |
6198 resolve(source); | |
6199 assertErrors(source, [HintCode.DEAD_CODE]); | |
6200 verify([source]); | |
6201 } | |
6202 void test_deadCode_deadBlock_while_nested() { | |
6203 Source source = addSource(EngineTestCase.createSource(["f() {", " while(fal
se) {if(false) {}}", "}"])); | |
6204 resolve(source); | |
6205 assertErrors(source, [HintCode.DEAD_CODE]); | |
6206 verify([source]); | |
6207 } | |
6208 void test_deadCode_deadCatch_catchFollowingCatch() { | |
6209 Source source = addSource(EngineTestCase.createSource([ | |
6210 "class A {}", | |
6211 "f() {", | |
6212 " try {} catch (e) {} catch (e) {}", | |
6213 "}"])); | |
6214 resolve(source); | |
6215 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); | |
6216 verify([source]); | |
6217 } | |
6218 void test_deadCode_deadCatch_catchFollowingCatch_nested() { | |
6219 Source source = addSource(EngineTestCase.createSource([ | |
6220 "class A {}", | |
6221 "f() {", | |
6222 " try {} catch (e) {} catch (e) {if(false) {}}", | |
6223 "}"])); | |
6224 resolve(source); | |
6225 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); | |
6226 verify([source]); | |
6227 } | |
6228 void test_deadCode_deadCatch_catchFollowingCatch_object() { | |
6229 Source source = addSource(EngineTestCase.createSource([ | |
6230 "f() {", | |
6231 " try {} on Object catch (e) {} catch (e) {}", | |
6232 "}"])); | |
6233 resolve(source); | |
6234 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); | |
6235 verify([source]); | |
6236 } | |
6237 void test_deadCode_deadCatch_catchFollowingCatch_object_nested() { | |
6238 Source source = addSource(EngineTestCase.createSource([ | |
6239 "f() {", | |
6240 " try {} on Object catch (e) {} catch (e) {if(false) {}}", | |
6241 "}"])); | |
6242 resolve(source); | |
6243 assertErrors(source, [HintCode.DEAD_CODE_CATCH_FOLLOWING_CATCH]); | |
6244 verify([source]); | |
6245 } | |
6246 void test_deadCode_deadCatch_onCatchSubtype() { | |
6247 Source source = addSource(EngineTestCase.createSource([ | |
6248 "class A {}", | |
6249 "class B extends A {}", | |
6250 "f() {", | |
6251 " try {} on A catch (e) {} on B catch (e) {}", | |
6252 "}"])); | |
6253 resolve(source); | |
6254 assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]); | |
6255 verify([source]); | |
6256 } | |
6257 void test_deadCode_deadCatch_onCatchSubtype_nested() { | |
6258 Source source = addSource(EngineTestCase.createSource([ | |
6259 "class A {}", | |
6260 "class B extends A {}", | |
6261 "f() {", | |
6262 " try {} on A catch (e) {} on B catch (e) {if(false) {}}", | |
6263 "}"])); | |
6264 resolve(source); | |
6265 assertErrors(source, [HintCode.DEAD_CODE_ON_CATCH_SUBTYPE]); | |
6266 verify([source]); | |
6267 } | |
6268 void test_deadCode_deadOperandLHS_and() { | |
6269 Source source = addSource(EngineTestCase.createSource(["f() {", " bool b =
false && false;", "}"])); | |
6270 resolve(source); | |
6271 assertErrors(source, [HintCode.DEAD_CODE]); | |
6272 verify([source]); | |
6273 } | |
6274 void test_deadCode_deadOperandLHS_and_nested() { | |
6275 Source source = addSource(EngineTestCase.createSource(["f() {", " bool b =
false && (false && false);", "}"])); | |
6276 resolve(source); | |
6277 assertErrors(source, [HintCode.DEAD_CODE]); | |
6278 verify([source]); | |
6279 } | |
6280 void test_deadCode_deadOperandLHS_or() { | |
6281 Source source = addSource(EngineTestCase.createSource(["f() {", " bool b =
true || true;", "}"])); | |
6282 resolve(source); | |
6283 assertErrors(source, [HintCode.DEAD_CODE]); | |
6284 verify([source]); | |
6285 } | |
6286 void test_deadCode_deadOperandLHS_or_nested() { | |
6287 Source source = addSource(EngineTestCase.createSource(["f() {", " bool b =
true || (false && false);", "}"])); | |
6288 resolve(source); | |
6289 assertErrors(source, [HintCode.DEAD_CODE]); | |
6290 verify([source]); | |
6291 } | |
6292 void test_deadCode_statementAfterReturn_function() { | |
6293 Source source = addSource(EngineTestCase.createSource([ | |
6294 "f() {", | |
6295 " var one = 1;", | |
6296 " return;", | |
6297 " var two = 2;", | |
6298 "}"])); | |
6299 resolve(source); | |
6300 assertErrors(source, [HintCode.DEAD_CODE]); | |
6301 verify([source]); | |
6302 } | |
6303 void test_deadCode_statementAfterReturn_ifStatement() { | |
6304 Source source = addSource(EngineTestCase.createSource([ | |
6305 "f(bool b) {", | |
6306 " if(b) {", | |
6307 " var one = 1;", | |
6308 " return;", | |
6309 " var two = 2;", | |
6310 " }", | |
6311 "}"])); | |
6312 resolve(source); | |
6313 assertErrors(source, [HintCode.DEAD_CODE]); | |
6314 verify([source]); | |
6315 } | |
6316 void test_deadCode_statementAfterReturn_method() { | |
6317 Source source = addSource(EngineTestCase.createSource([ | |
6318 "class A {", | |
6319 " m() {", | |
6320 " var one = 1;", | |
6321 " return;", | |
6322 " var two = 2;", | |
6323 " }", | |
6324 "}"])); | |
6325 resolve(source); | |
6326 assertErrors(source, [HintCode.DEAD_CODE]); | |
6327 verify([source]); | |
6328 } | |
6329 void test_deadCode_statementAfterReturn_nested() { | |
6330 Source source = addSource(EngineTestCase.createSource([ | |
6331 "f() {", | |
6332 " var one = 1;", | |
6333 " return;", | |
6334 " if(false) {}", | |
6335 "}"])); | |
6336 resolve(source); | |
6337 assertErrors(source, [HintCode.DEAD_CODE]); | |
6338 verify([source]); | |
6339 } | |
6340 void test_deadCode_statementAfterReturn_twoReturns() { | |
6341 Source source = addSource(EngineTestCase.createSource([ | |
6342 "f() {", | |
6343 " var one = 1;", | |
6344 " return;", | |
6345 " var two = 2;", | |
6346 " return;", | |
6347 " var three = 3;", | |
6348 "}"])); | |
6349 resolve(source); | |
6350 assertErrors(source, [HintCode.DEAD_CODE]); | |
6351 verify([source]); | |
6352 } | |
6353 void test_divisionOptimization_double() { | |
6354 Source source = addSource(EngineTestCase.createSource([ | |
6355 "f(double x, double y) {", | |
6356 " var v = (x / y).toInt();", | |
6357 "}"])); | |
6358 resolve(source); | |
6359 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); | |
6360 verify([source]); | |
6361 } | |
6362 void test_divisionOptimization_int() { | |
6363 Source source = addSource(EngineTestCase.createSource(["f(int x, int y) {",
" var v = (x / y).toInt();", "}"])); | |
6364 resolve(source); | |
6365 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); | |
6366 verify([source]); | |
6367 } | |
6368 void test_divisionOptimization_propagatedType() { | |
6369 Source source = addSource(EngineTestCase.createSource([ | |
6370 "f(x, y) {", | |
6371 " x = 1;", | |
6372 " y = 1;", | |
6373 " var v = (x / y).toInt();", | |
6374 "}"])); | |
6375 resolve(source); | |
6376 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); | |
6377 verify([source]); | |
6378 } | |
6379 void test_divisionOptimization_wrappedBinaryExpression() { | |
6380 Source source = addSource(EngineTestCase.createSource([ | |
6381 "f(int x, int y) {", | |
6382 " var v = (((x / y))).toInt();", | |
6383 "}"])); | |
6384 resolve(source); | |
6385 assertErrors(source, [HintCode.DIVISION_OPTIMIZATION]); | |
6386 verify([source]); | |
6387 } | |
6388 void test_duplicateImport() { | |
6389 Source source = addSource(EngineTestCase.createSource([ | |
6390 "library L;", | |
6391 "import 'lib1.dart';", | |
6392 "import 'lib1.dart';", | |
6393 "A a;"])); | |
6394 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}"])); | |
6395 resolve(source); | |
6396 assertErrors(source, [HintCode.DUPLICATE_IMPORT]); | |
6397 verify([source]); | |
6398 } | |
6399 void test_duplicateImport2() { | |
6400 Source source = addSource(EngineTestCase.createSource([ | |
6401 "library L;", | |
6402 "import 'lib1.dart';", | |
6403 "import 'lib1.dart';", | |
6404 "import 'lib1.dart';", | |
6405 "A a;"])); | |
6406 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}"])); | |
6407 resolve(source); | |
6408 assertErrors(source, [HintCode.DUPLICATE_IMPORT, HintCode.DUPLICATE_IMPORT])
; | |
6409 verify([source]); | |
6410 } | |
6411 void test_duplicateImport3() { | |
6412 Source source = addSource(EngineTestCase.createSource([ | |
6413 "library L;", | |
6414 "import 'lib1.dart' as M show A hide B;", | |
6415 "import 'lib1.dart' as M show A hide B;", | |
6416 "M.A a;"])); | |
6417 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}", "class B {}"])); | |
6418 resolve(source); | |
6419 assertErrors(source, [HintCode.DUPLICATE_IMPORT, HintCode.UNUSED_IMPORT]); | |
6420 verify([source]); | |
6421 } | |
6422 void test_isDouble() { | |
6423 Source source = addSource(EngineTestCase.createSource(["var v = 1 is double;
"])); | |
6424 resolve(source); | |
6425 assertErrors(source, [HintCode.IS_DOUBLE]); | |
6426 verify([source]); | |
6427 } | |
6428 void test_isNotDouble() { | |
6429 Source source = addSource(EngineTestCase.createSource(["var v = 1 is! double
;"])); | |
6430 resolve(source); | |
6431 assertErrors(source, [HintCode.IS_NOT_DOUBLE]); | |
6432 verify([source]); | |
6433 } | |
6434 void test_overriddingPrivateMember_getter() { | |
6435 Source source = addSource(EngineTestCase.createSource([ | |
6436 "import 'lib1.dart';", | |
6437 "class B extends A {", | |
6438 " get _g => 0;", | |
6439 "}"])); | |
6440 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {", " get _g => 0;", "}"])); | |
6441 resolve(source); | |
6442 assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]); | |
6443 verify([source, source2]); | |
6444 } | |
6445 void test_overriddingPrivateMember_method() { | |
6446 Source source = addSource(EngineTestCase.createSource([ | |
6447 "import 'lib1.dart';", | |
6448 "class B extends A {", | |
6449 " _m(int x) => 0;", | |
6450 "}"])); | |
6451 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {", " _m(int x) => 0;", "}"])); | |
6452 resolve(source); | |
6453 assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]); | |
6454 verify([source, source2]); | |
6455 } | |
6456 void test_overriddingPrivateMember_method2() { | |
6457 Source source = addSource(EngineTestCase.createSource([ | |
6458 "import 'lib1.dart';", | |
6459 "class B extends A {}", | |
6460 "class C extends B {", | |
6461 " _m(int x) => 0;", | |
6462 "}"])); | |
6463 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {", " _m(int x) => 0;", "}"])); | |
6464 resolve(source); | |
6465 assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]); | |
6466 verify([source, source2]); | |
6467 } | |
6468 void test_overriddingPrivateMember_setter() { | |
6469 Source source = addSource(EngineTestCase.createSource([ | |
6470 "import 'lib1.dart';", | |
6471 "class B extends A {", | |
6472 " set _s(int x) {}", | |
6473 "}"])); | |
6474 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {", " set _s(int x) {}", "}"])); | |
6475 resolve(source); | |
6476 assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]); | |
6477 verify([source, source2]); | |
6478 } | |
6479 void test_typeCheck_type_is_Null() { | |
6480 Source source = addSource(EngineTestCase.createSource(["m(i) {", " bool b =
i is Null;", "}"])); | |
6481 resolve(source); | |
6482 assertErrors(source, [HintCode.TYPE_CHECK_IS_NULL]); | |
6483 verify([source]); | |
6484 } | |
6485 void test_typeCheck_type_not_Null() { | |
6486 Source source = addSource(EngineTestCase.createSource(["m(i) {", " bool b =
i is! Null;", "}"])); | |
6487 resolve(source); | |
6488 assertErrors(source, [HintCode.TYPE_CHECK_IS_NOT_NULL]); | |
6489 verify([source]); | |
6490 } | |
6491 void test_undefinedGetter() { | |
6492 Source source = addSource(EngineTestCase.createSource([ | |
6493 "class A {}", | |
6494 "f(var a) {", | |
6495 " if(a is A) {", | |
6496 " return a.m;", | |
6497 " }", | |
6498 "}"])); | |
6499 resolve(source); | |
6500 assertErrors(source, [HintCode.UNDEFINED_GETTER]); | |
6501 } | |
6502 void test_undefinedGetter_message() { | |
6503 JUnitTestCase.assertEquals(StaticTypeWarningCode.UNDEFINED_GETTER.message, S
taticWarningCode.UNDEFINED_GETTER.message); | |
6504 } | |
6505 void test_undefinedMethod() { | |
6506 Source source = addSource(EngineTestCase.createSource([ | |
6507 "f() {", | |
6508 " var a = 'str';", | |
6509 " a.notAMethodOnString();", | |
6510 "}"])); | |
6511 resolve(source); | |
6512 assertErrors(source, [HintCode.UNDEFINED_METHOD]); | |
6513 } | |
6514 void test_undefinedMethod_assignmentExpression() { | |
6515 Source source = addSource(EngineTestCase.createSource([ | |
6516 "class A {}", | |
6517 "class B {", | |
6518 " f(var a, var a2) {", | |
6519 " a = new A();", | |
6520 " a2 = new A();", | |
6521 " a += a2;", | |
6522 " }", | |
6523 "}"])); | |
6524 resolve(source); | |
6525 assertErrors(source, [HintCode.UNDEFINED_METHOD]); | |
6526 } | |
6527 void test_undefinedOperator_binaryExpression() { | |
6528 Source source = addSource(EngineTestCase.createSource([ | |
6529 "class A {}", | |
6530 "f(var a) {", | |
6531 " if(a is A) {", | |
6532 " a + 1;", | |
6533 " }", | |
6534 "}"])); | |
6535 resolve(source); | |
6536 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); | |
6537 } | |
6538 void test_undefinedOperator_indexBoth() { | |
6539 Source source = addSource(EngineTestCase.createSource([ | |
6540 "class A {}", | |
6541 "f(var a) {", | |
6542 " if(a is A) {", | |
6543 " a[0]++;", | |
6544 " }", | |
6545 "}"])); | |
6546 resolve(source); | |
6547 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); | |
6548 } | |
6549 void test_undefinedOperator_indexGetter() { | |
6550 Source source = addSource(EngineTestCase.createSource([ | |
6551 "class A {}", | |
6552 "f(var a) {", | |
6553 " if(a is A) {", | |
6554 " a[0];", | |
6555 " }", | |
6556 "}"])); | |
6557 resolve(source); | |
6558 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); | |
6559 } | |
6560 void test_undefinedOperator_indexSetter() { | |
6561 Source source = addSource(EngineTestCase.createSource([ | |
6562 "class A {}", | |
6563 "f(var a) {", | |
6564 " if(a is A) {", | |
6565 " a[0] = 1;", | |
6566 " }", | |
6567 "}"])); | |
6568 resolve(source); | |
6569 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); | |
6570 } | |
6571 void test_undefinedOperator_postfixExpression() { | |
6572 Source source = addSource(EngineTestCase.createSource([ | |
6573 "class A {}", | |
6574 "f(var a) {", | |
6575 " if(a is A) {", | |
6576 " a++;", | |
6577 " }", | |
6578 "}"])); | |
6579 resolve(source); | |
6580 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); | |
6581 } | |
6582 void test_undefinedOperator_prefixExpression() { | |
6583 Source source = addSource(EngineTestCase.createSource([ | |
6584 "class A {}", | |
6585 "f(var a) {", | |
6586 " if(a is A) {", | |
6587 " ++a;", | |
6588 " }", | |
6589 "}"])); | |
6590 resolve(source); | |
6591 assertErrors(source, [HintCode.UNDEFINED_OPERATOR]); | |
6592 } | |
6593 void test_undefinedSetter() { | |
6594 Source source = addSource(EngineTestCase.createSource([ | |
6595 "class A {}", | |
6596 "f(var a) {", | |
6597 " if(a is A) {", | |
6598 " a.m = 0;", | |
6599 " }", | |
6600 "}"])); | |
6601 resolve(source); | |
6602 assertErrors(source, [HintCode.UNDEFINED_SETTER]); | |
6603 } | |
6604 void test_undefinedSetter_message() { | |
6605 JUnitTestCase.assertEquals(StaticTypeWarningCode.UNDEFINED_SETTER.message, S
taticWarningCode.UNDEFINED_SETTER.message); | |
6606 } | |
6607 void test_unnecessaryCast_type_supertype() { | |
6608 Source source = addSource(EngineTestCase.createSource(["m(int i) {", " var
b = i as Object;", "}"])); | |
6609 resolve(source); | |
6610 assertErrors(source, [HintCode.UNNECESSARY_CAST]); | |
6611 verify([source]); | |
6612 } | |
6613 void test_unnecessaryCast_type_type() { | |
6614 Source source = addSource(EngineTestCase.createSource(["m(num i) {", " var
b = i as num;", "}"])); | |
6615 resolve(source); | |
6616 assertErrors(source, [HintCode.UNNECESSARY_CAST]); | |
6617 verify([source]); | |
6618 } | |
6619 void test_unnecessaryTypeCheck_null_is_Null() { | |
6620 Source source = addSource(EngineTestCase.createSource(["bool b = null is Nul
l;"])); | |
6621 resolve(source); | |
6622 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]); | |
6623 verify([source]); | |
6624 } | |
6625 void test_unnecessaryTypeCheck_null_not_Null() { | |
6626 Source source = addSource(EngineTestCase.createSource(["bool b = null is! Nu
ll;"])); | |
6627 resolve(source); | |
6628 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); | |
6629 verify([source]); | |
6630 } | |
6631 void test_unnecessaryTypeCheck_type_is_dynamic() { | |
6632 Source source = addSource(EngineTestCase.createSource(["m(i) {", " bool b =
i is dynamic;", "}"])); | |
6633 resolve(source); | |
6634 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]); | |
6635 verify([source]); | |
6636 } | |
6637 void test_unnecessaryTypeCheck_type_is_object() { | |
6638 Source source = addSource(EngineTestCase.createSource(["m(i) {", " bool b =
i is Object;", "}"])); | |
6639 resolve(source); | |
6640 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_TRUE]); | |
6641 verify([source]); | |
6642 } | |
6643 void test_unnecessaryTypeCheck_type_not_dynamic() { | |
6644 Source source = addSource(EngineTestCase.createSource(["m(i) {", " bool b =
i is! dynamic;", "}"])); | |
6645 resolve(source); | |
6646 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); | |
6647 verify([source]); | |
6648 } | |
6649 void test_unnecessaryTypeCheck_type_not_object() { | |
6650 Source source = addSource(EngineTestCase.createSource(["m(i) {", " bool b =
i is! Object;", "}"])); | |
6651 resolve(source); | |
6652 assertErrors(source, [HintCode.UNNECESSARY_TYPE_CHECK_FALSE]); | |
6653 verify([source]); | |
6654 } | |
6655 void test_unusedImport() { | |
6656 Source source = addSource(EngineTestCase.createSource(["library L;", "import
'lib1.dart';"])); | |
6657 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;"])); | |
6658 resolve(source); | |
6659 assertErrors(source, [HintCode.UNUSED_IMPORT]); | |
6660 assertNoErrors(source2); | |
6661 verify([source, source2]); | |
6662 } | |
6663 void test_unusedImport_as() { | |
6664 Source source = addSource(EngineTestCase.createSource([ | |
6665 "library L;", | |
6666 "import 'lib1.dart';", | |
6667 "import 'lib1.dart' as one;", | |
6668 "one.A a;"])); | |
6669 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {}"])); | |
6670 resolve(source); | |
6671 assertErrors(source, [HintCode.UNUSED_IMPORT]); | |
6672 assertNoErrors(source2); | |
6673 verify([source, source2]); | |
6674 } | |
6675 void test_unusedImport_hide() { | |
6676 Source source = addSource(EngineTestCase.createSource([ | |
6677 "library L;", | |
6678 "import 'lib1.dart';", | |
6679 "import 'lib1.dart' hide A;", | |
6680 "A a;"])); | |
6681 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {}"])); | |
6682 resolve(source); | |
6683 assertErrors(source, [HintCode.UNUSED_IMPORT]); | |
6684 assertNoErrors(source2); | |
6685 verify([source, source2]); | |
6686 } | |
6687 void test_unusedImport_show() { | |
6688 Source source = addSource(EngineTestCase.createSource([ | |
6689 "library L;", | |
6690 "import 'lib1.dart' show A;", | |
6691 "import 'lib1.dart' show B;", | |
6692 "A a;"])); | |
6693 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {}", "class B {}"])); | |
6694 resolve(source); | |
6695 assertErrors(source, [HintCode.UNUSED_IMPORT]); | |
6696 assertNoErrors(source2); | |
6697 verify([source, source2]); | |
6698 } | |
6699 static dartSuite() { | |
6700 _ut.group('HintCodeTest', () { | |
6701 _ut.test('test_deadCode_deadBlock_conditionalElse', () { | |
6702 final __test = new HintCodeTest(); | |
6703 runJUnitTest(__test, __test.test_deadCode_deadBlock_conditionalElse); | |
6704 }); | |
6705 _ut.test('test_deadCode_deadBlock_conditionalElse_nested', () { | |
6706 final __test = new HintCodeTest(); | |
6707 runJUnitTest(__test, __test.test_deadCode_deadBlock_conditionalElse_nest
ed); | |
6708 }); | |
6709 _ut.test('test_deadCode_deadBlock_conditionalIf', () { | |
6710 final __test = new HintCodeTest(); | |
6711 runJUnitTest(__test, __test.test_deadCode_deadBlock_conditionalIf); | |
6712 }); | |
6713 _ut.test('test_deadCode_deadBlock_conditionalIf_nested', () { | |
6714 final __test = new HintCodeTest(); | |
6715 runJUnitTest(__test, __test.test_deadCode_deadBlock_conditionalIf_nested
); | |
6716 }); | |
6717 _ut.test('test_deadCode_deadBlock_else', () { | |
6718 final __test = new HintCodeTest(); | |
6719 runJUnitTest(__test, __test.test_deadCode_deadBlock_else); | |
6720 }); | |
6721 _ut.test('test_deadCode_deadBlock_else_nested', () { | |
6722 final __test = new HintCodeTest(); | |
6723 runJUnitTest(__test, __test.test_deadCode_deadBlock_else_nested); | |
6724 }); | |
6725 _ut.test('test_deadCode_deadBlock_if', () { | |
6726 final __test = new HintCodeTest(); | |
6727 runJUnitTest(__test, __test.test_deadCode_deadBlock_if); | |
6728 }); | |
6729 _ut.test('test_deadCode_deadBlock_if_nested', () { | |
6730 final __test = new HintCodeTest(); | |
6731 runJUnitTest(__test, __test.test_deadCode_deadBlock_if_nested); | |
6732 }); | |
6733 _ut.test('test_deadCode_deadBlock_while', () { | |
6734 final __test = new HintCodeTest(); | |
6735 runJUnitTest(__test, __test.test_deadCode_deadBlock_while); | |
6736 }); | |
6737 _ut.test('test_deadCode_deadBlock_while_nested', () { | |
6738 final __test = new HintCodeTest(); | |
6739 runJUnitTest(__test, __test.test_deadCode_deadBlock_while_nested); | |
6740 }); | |
6741 _ut.test('test_deadCode_deadCatch_catchFollowingCatch', () { | |
6742 final __test = new HintCodeTest(); | |
6743 runJUnitTest(__test, __test.test_deadCode_deadCatch_catchFollowingCatch)
; | |
6744 }); | |
6745 _ut.test('test_deadCode_deadCatch_catchFollowingCatch_nested', () { | |
6746 final __test = new HintCodeTest(); | |
6747 runJUnitTest(__test, __test.test_deadCode_deadCatch_catchFollowingCatch_
nested); | |
6748 }); | |
6749 _ut.test('test_deadCode_deadCatch_catchFollowingCatch_object', () { | |
6750 final __test = new HintCodeTest(); | |
6751 runJUnitTest(__test, __test.test_deadCode_deadCatch_catchFollowingCatch_
object); | |
6752 }); | |
6753 _ut.test('test_deadCode_deadCatch_catchFollowingCatch_object_nested', () { | |
6754 final __test = new HintCodeTest(); | |
6755 runJUnitTest(__test, __test.test_deadCode_deadCatch_catchFollowingCatch_
object_nested); | |
6756 }); | |
6757 _ut.test('test_deadCode_deadCatch_onCatchSubtype', () { | |
6758 final __test = new HintCodeTest(); | |
6759 runJUnitTest(__test, __test.test_deadCode_deadCatch_onCatchSubtype); | |
6760 }); | |
6761 _ut.test('test_deadCode_deadCatch_onCatchSubtype_nested', () { | |
6762 final __test = new HintCodeTest(); | |
6763 runJUnitTest(__test, __test.test_deadCode_deadCatch_onCatchSubtype_neste
d); | |
6764 }); | |
6765 _ut.test('test_deadCode_deadOperandLHS_and', () { | |
6766 final __test = new HintCodeTest(); | |
6767 runJUnitTest(__test, __test.test_deadCode_deadOperandLHS_and); | |
6768 }); | |
6769 _ut.test('test_deadCode_deadOperandLHS_and_nested', () { | |
6770 final __test = new HintCodeTest(); | |
6771 runJUnitTest(__test, __test.test_deadCode_deadOperandLHS_and_nested); | |
6772 }); | |
6773 _ut.test('test_deadCode_deadOperandLHS_or', () { | |
6774 final __test = new HintCodeTest(); | |
6775 runJUnitTest(__test, __test.test_deadCode_deadOperandLHS_or); | |
6776 }); | |
6777 _ut.test('test_deadCode_deadOperandLHS_or_nested', () { | |
6778 final __test = new HintCodeTest(); | |
6779 runJUnitTest(__test, __test.test_deadCode_deadOperandLHS_or_nested); | |
6780 }); | |
6781 _ut.test('test_deadCode_statementAfterReturn_function', () { | |
6782 final __test = new HintCodeTest(); | |
6783 runJUnitTest(__test, __test.test_deadCode_statementAfterReturn_function)
; | |
6784 }); | |
6785 _ut.test('test_deadCode_statementAfterReturn_ifStatement', () { | |
6786 final __test = new HintCodeTest(); | |
6787 runJUnitTest(__test, __test.test_deadCode_statementAfterReturn_ifStateme
nt); | |
6788 }); | |
6789 _ut.test('test_deadCode_statementAfterReturn_method', () { | |
6790 final __test = new HintCodeTest(); | |
6791 runJUnitTest(__test, __test.test_deadCode_statementAfterReturn_method); | |
6792 }); | |
6793 _ut.test('test_deadCode_statementAfterReturn_nested', () { | |
6794 final __test = new HintCodeTest(); | |
6795 runJUnitTest(__test, __test.test_deadCode_statementAfterReturn_nested); | |
6796 }); | |
6797 _ut.test('test_deadCode_statementAfterReturn_twoReturns', () { | |
6798 final __test = new HintCodeTest(); | |
6799 runJUnitTest(__test, __test.test_deadCode_statementAfterReturn_twoReturn
s); | |
6800 }); | |
6801 _ut.test('test_divisionOptimization_double', () { | |
6802 final __test = new HintCodeTest(); | |
6803 runJUnitTest(__test, __test.test_divisionOptimization_double); | |
6804 }); | |
6805 _ut.test('test_divisionOptimization_int', () { | |
6806 final __test = new HintCodeTest(); | |
6807 runJUnitTest(__test, __test.test_divisionOptimization_int); | |
6808 }); | |
6809 _ut.test('test_divisionOptimization_propagatedType', () { | |
6810 final __test = new HintCodeTest(); | |
6811 runJUnitTest(__test, __test.test_divisionOptimization_propagatedType); | |
6812 }); | |
6813 _ut.test('test_divisionOptimization_wrappedBinaryExpression', () { | |
6814 final __test = new HintCodeTest(); | |
6815 runJUnitTest(__test, __test.test_divisionOptimization_wrappedBinaryExpre
ssion); | |
6816 }); | |
6817 _ut.test('test_duplicateImport', () { | |
6818 final __test = new HintCodeTest(); | |
6819 runJUnitTest(__test, __test.test_duplicateImport); | |
6820 }); | |
6821 _ut.test('test_duplicateImport2', () { | |
6822 final __test = new HintCodeTest(); | |
6823 runJUnitTest(__test, __test.test_duplicateImport2); | |
6824 }); | |
6825 _ut.test('test_duplicateImport3', () { | |
6826 final __test = new HintCodeTest(); | |
6827 runJUnitTest(__test, __test.test_duplicateImport3); | |
6828 }); | |
6829 _ut.test('test_isDouble', () { | |
6830 final __test = new HintCodeTest(); | |
6831 runJUnitTest(__test, __test.test_isDouble); | |
6832 }); | |
6833 _ut.test('test_isNotDouble', () { | |
6834 final __test = new HintCodeTest(); | |
6835 runJUnitTest(__test, __test.test_isNotDouble); | |
6836 }); | |
6837 _ut.test('test_overriddingPrivateMember_getter', () { | |
6838 final __test = new HintCodeTest(); | |
6839 runJUnitTest(__test, __test.test_overriddingPrivateMember_getter); | |
6840 }); | |
6841 _ut.test('test_overriddingPrivateMember_method', () { | |
6842 final __test = new HintCodeTest(); | |
6843 runJUnitTest(__test, __test.test_overriddingPrivateMember_method); | |
6844 }); | |
6845 _ut.test('test_overriddingPrivateMember_method2', () { | |
6846 final __test = new HintCodeTest(); | |
6847 runJUnitTest(__test, __test.test_overriddingPrivateMember_method2); | |
6848 }); | |
6849 _ut.test('test_overriddingPrivateMember_setter', () { | |
6850 final __test = new HintCodeTest(); | |
6851 runJUnitTest(__test, __test.test_overriddingPrivateMember_setter); | |
6852 }); | |
6853 _ut.test('test_typeCheck_type_is_Null', () { | |
6854 final __test = new HintCodeTest(); | |
6855 runJUnitTest(__test, __test.test_typeCheck_type_is_Null); | |
6856 }); | |
6857 _ut.test('test_typeCheck_type_not_Null', () { | |
6858 final __test = new HintCodeTest(); | |
6859 runJUnitTest(__test, __test.test_typeCheck_type_not_Null); | |
6860 }); | |
6861 _ut.test('test_undefinedGetter', () { | |
6862 final __test = new HintCodeTest(); | |
6863 runJUnitTest(__test, __test.test_undefinedGetter); | |
6864 }); | |
6865 _ut.test('test_undefinedGetter_message', () { | |
6866 final __test = new HintCodeTest(); | |
6867 runJUnitTest(__test, __test.test_undefinedGetter_message); | |
6868 }); | |
6869 _ut.test('test_undefinedMethod', () { | |
6870 final __test = new HintCodeTest(); | |
6871 runJUnitTest(__test, __test.test_undefinedMethod); | |
6872 }); | |
6873 _ut.test('test_undefinedMethod_assignmentExpression', () { | |
6874 final __test = new HintCodeTest(); | |
6875 runJUnitTest(__test, __test.test_undefinedMethod_assignmentExpression); | |
6876 }); | |
6877 _ut.test('test_undefinedOperator_binaryExpression', () { | |
6878 final __test = new HintCodeTest(); | |
6879 runJUnitTest(__test, __test.test_undefinedOperator_binaryExpression); | |
6880 }); | |
6881 _ut.test('test_undefinedOperator_indexBoth', () { | |
6882 final __test = new HintCodeTest(); | |
6883 runJUnitTest(__test, __test.test_undefinedOperator_indexBoth); | |
6884 }); | |
6885 _ut.test('test_undefinedOperator_indexGetter', () { | |
6886 final __test = new HintCodeTest(); | |
6887 runJUnitTest(__test, __test.test_undefinedOperator_indexGetter); | |
6888 }); | |
6889 _ut.test('test_undefinedOperator_indexSetter', () { | |
6890 final __test = new HintCodeTest(); | |
6891 runJUnitTest(__test, __test.test_undefinedOperator_indexSetter); | |
6892 }); | |
6893 _ut.test('test_undefinedOperator_postfixExpression', () { | |
6894 final __test = new HintCodeTest(); | |
6895 runJUnitTest(__test, __test.test_undefinedOperator_postfixExpression); | |
6896 }); | |
6897 _ut.test('test_undefinedOperator_prefixExpression', () { | |
6898 final __test = new HintCodeTest(); | |
6899 runJUnitTest(__test, __test.test_undefinedOperator_prefixExpression); | |
6900 }); | |
6901 _ut.test('test_undefinedSetter', () { | |
6902 final __test = new HintCodeTest(); | |
6903 runJUnitTest(__test, __test.test_undefinedSetter); | |
6904 }); | |
6905 _ut.test('test_undefinedSetter_message', () { | |
6906 final __test = new HintCodeTest(); | |
6907 runJUnitTest(__test, __test.test_undefinedSetter_message); | |
6908 }); | |
6909 _ut.test('test_unnecessaryCast_type_supertype', () { | |
6910 final __test = new HintCodeTest(); | |
6911 runJUnitTest(__test, __test.test_unnecessaryCast_type_supertype); | |
6912 }); | |
6913 _ut.test('test_unnecessaryCast_type_type', () { | |
6914 final __test = new HintCodeTest(); | |
6915 runJUnitTest(__test, __test.test_unnecessaryCast_type_type); | |
6916 }); | |
6917 _ut.test('test_unnecessaryTypeCheck_null_is_Null', () { | |
6918 final __test = new HintCodeTest(); | |
6919 runJUnitTest(__test, __test.test_unnecessaryTypeCheck_null_is_Null); | |
6920 }); | |
6921 _ut.test('test_unnecessaryTypeCheck_null_not_Null', () { | |
6922 final __test = new HintCodeTest(); | |
6923 runJUnitTest(__test, __test.test_unnecessaryTypeCheck_null_not_Null); | |
6924 }); | |
6925 _ut.test('test_unnecessaryTypeCheck_type_is_dynamic', () { | |
6926 final __test = new HintCodeTest(); | |
6927 runJUnitTest(__test, __test.test_unnecessaryTypeCheck_type_is_dynamic); | |
6928 }); | |
6929 _ut.test('test_unnecessaryTypeCheck_type_is_object', () { | |
6930 final __test = new HintCodeTest(); | |
6931 runJUnitTest(__test, __test.test_unnecessaryTypeCheck_type_is_object); | |
6932 }); | |
6933 _ut.test('test_unnecessaryTypeCheck_type_not_dynamic', () { | |
6934 final __test = new HintCodeTest(); | |
6935 runJUnitTest(__test, __test.test_unnecessaryTypeCheck_type_not_dynamic); | |
6936 }); | |
6937 _ut.test('test_unnecessaryTypeCheck_type_not_object', () { | |
6938 final __test = new HintCodeTest(); | |
6939 runJUnitTest(__test, __test.test_unnecessaryTypeCheck_type_not_object); | |
6940 }); | |
6941 _ut.test('test_unusedImport', () { | |
6942 final __test = new HintCodeTest(); | |
6943 runJUnitTest(__test, __test.test_unusedImport); | |
6944 }); | |
6945 _ut.test('test_unusedImport_as', () { | |
6946 final __test = new HintCodeTest(); | |
6947 runJUnitTest(__test, __test.test_unusedImport_as); | |
6948 }); | |
6949 _ut.test('test_unusedImport_hide', () { | |
6950 final __test = new HintCodeTest(); | |
6951 runJUnitTest(__test, __test.test_unusedImport_hide); | |
6952 }); | |
6953 _ut.test('test_unusedImport_show', () { | |
6954 final __test = new HintCodeTest(); | |
6955 runJUnitTest(__test, __test.test_unusedImport_show); | |
6956 }); | |
6957 }); | |
6958 } | |
6959 } | |
6960 class TypeResolverVisitorTest extends EngineTestCase { | |
6961 | |
6962 /** | |
6963 * The error listener to which errors will be reported. | |
6964 */ | |
6965 GatheringErrorListener _listener; | |
6966 | |
6967 /** | |
6968 * The object representing the information about the library in which the type
s are being | |
6969 * resolved. | |
6970 */ | |
6971 Library _library; | |
6972 | |
6973 /** | |
6974 * The type provider used to access the types. | |
6975 */ | |
6976 TestTypeProvider _typeProvider; | |
6977 | |
6978 /** | |
6979 * The visitor used to resolve types needed to form the type hierarchy. | |
6980 */ | |
6981 TypeResolverVisitor _visitor; | |
6982 void fail_visitConstructorDeclaration() { | |
6983 JUnitTestCase.fail("Not yet tested"); | |
6984 _listener.assertNoErrors(); | |
6985 } | |
6986 void fail_visitFunctionDeclaration() { | |
6987 JUnitTestCase.fail("Not yet tested"); | |
6988 _listener.assertNoErrors(); | |
6989 } | |
6990 void fail_visitFunctionTypeAlias() { | |
6991 JUnitTestCase.fail("Not yet tested"); | |
6992 _listener.assertNoErrors(); | |
6993 } | |
6994 void fail_visitFunctionTypedFormalParameter() { | |
6995 JUnitTestCase.fail("Not yet tested"); | |
6996 _listener.assertNoErrors(); | |
6997 } | |
6998 void fail_visitMethodDeclaration() { | |
6999 JUnitTestCase.fail("Not yet tested"); | |
7000 _listener.assertNoErrors(); | |
7001 } | |
7002 void fail_visitVariableDeclaration() { | |
7003 JUnitTestCase.fail("Not yet tested"); | |
7004 ClassElement type = ElementFactory.classElement2("A", []); | |
7005 VariableDeclaration node = ASTFactory.variableDeclaration("a"); | |
7006 ASTFactory.variableDeclarationList(null, ASTFactory.typeName(type, []), [nod
e]); | |
7007 JUnitTestCase.assertSame(type.type, node.name.staticType); | |
7008 _listener.assertNoErrors(); | |
7009 } | |
7010 void setUp() { | |
7011 _listener = new GatheringErrorListener(); | |
7012 SourceFactory factory = new SourceFactory.con2([new FileUriResolver()]); | |
7013 AnalysisContextImpl context = new AnalysisContextImpl(); | |
7014 context.sourceFactory = factory; | |
7015 Source librarySource = new FileBasedSource.con1(factory.contentCache, FileUt
ilities2.createFile("/lib.dart")); | |
7016 _library = new Library(context, _listener, librarySource); | |
7017 LibraryElementImpl element = new LibraryElementImpl(context, ASTFactory.libr
aryIdentifier2(["lib"])); | |
7018 element.definingCompilationUnit = new CompilationUnitElementImpl("lib.dart")
; | |
7019 _library.libraryElement = element; | |
7020 _typeProvider = new TestTypeProvider(); | |
7021 _visitor = new TypeResolverVisitor.con1(_library, librarySource, _typeProvid
er); | |
7022 } | |
7023 void test_visitCatchClause_exception() { | |
7024 CatchClause clause = ASTFactory.catchClause("e", []); | |
7025 SimpleIdentifier exceptionParameter = clause.exceptionParameter; | |
7026 exceptionParameter.staticElement = new LocalVariableElementImpl(exceptionPar
ameter); | |
7027 resolve(clause, _typeProvider.dynamicType, null, []); | |
7028 _listener.assertNoErrors(); | |
7029 } | |
7030 void test_visitCatchClause_exception_stackTrace() { | |
7031 CatchClause clause = ASTFactory.catchClause2("e", "s", []); | |
7032 SimpleIdentifier exceptionParameter = clause.exceptionParameter; | |
7033 exceptionParameter.staticElement = new LocalVariableElementImpl(exceptionPar
ameter); | |
7034 SimpleIdentifier stackTraceParameter = clause.stackTraceParameter; | |
7035 stackTraceParameter.staticElement = new LocalVariableElementImpl(stackTraceP
arameter); | |
7036 resolve(clause, _typeProvider.dynamicType, _typeProvider.stackTraceType, [])
; | |
7037 _listener.assertNoErrors(); | |
7038 } | |
7039 void test_visitCatchClause_on_exception() { | |
7040 ClassElement exceptionElement = ElementFactory.classElement2("E", []); | |
7041 TypeName exceptionType = ASTFactory.typeName(exceptionElement, []); | |
7042 CatchClause clause = ASTFactory.catchClause4(exceptionType, "e", []); | |
7043 SimpleIdentifier exceptionParameter = clause.exceptionParameter; | |
7044 exceptionParameter.staticElement = new LocalVariableElementImpl(exceptionPar
ameter); | |
7045 resolve(clause, exceptionElement.type, null, [exceptionElement]); | |
7046 _listener.assertNoErrors(); | |
7047 } | |
7048 void test_visitCatchClause_on_exception_stackTrace() { | |
7049 ClassElement exceptionElement = ElementFactory.classElement2("E", []); | |
7050 TypeName exceptionType = ASTFactory.typeName(exceptionElement, []); | |
7051 ((exceptionType.name as SimpleIdentifier)).staticElement = exceptionElement; | |
7052 CatchClause clause = ASTFactory.catchClause5(exceptionType, "e", "s", []); | |
7053 SimpleIdentifier exceptionParameter = clause.exceptionParameter; | |
7054 exceptionParameter.staticElement = new LocalVariableElementImpl(exceptionPar
ameter); | |
7055 SimpleIdentifier stackTraceParameter = clause.stackTraceParameter; | |
7056 stackTraceParameter.staticElement = new LocalVariableElementImpl(stackTraceP
arameter); | |
7057 resolve(clause, exceptionElement.type, _typeProvider.stackTraceType, [except
ionElement]); | |
7058 _listener.assertNoErrors(); | |
7059 } | |
7060 void test_visitClassDeclaration() { | |
7061 ClassElement elementA = ElementFactory.classElement2("A", []); | |
7062 ClassElement elementB = ElementFactory.classElement2("B", []); | |
7063 ClassElement elementC = ElementFactory.classElement2("C", []); | |
7064 ClassElement elementD = ElementFactory.classElement2("D", []); | |
7065 ExtendsClause extendsClause = ASTFactory.extendsClause(ASTFactory.typeName(e
lementB, [])); | |
7066 WithClause withClause = ASTFactory.withClause([ASTFactory.typeName(elementC,
[])]); | |
7067 ImplementsClause implementsClause = ASTFactory.implementsClause([ASTFactory.
typeName(elementD, [])]); | |
7068 ClassDeclaration declaration = ASTFactory.classDeclaration(null, "A", null,
extendsClause, withClause, implementsClause, []); | |
7069 declaration.name.staticElement = elementA; | |
7070 resolveNode(declaration, [elementA, elementB, elementC, elementD]); | |
7071 JUnitTestCase.assertSame(elementB.type, elementA.supertype); | |
7072 List<InterfaceType> mixins = elementA.mixins; | |
7073 EngineTestCase.assertLength(1, mixins); | |
7074 JUnitTestCase.assertSame(elementC.type, mixins[0]); | |
7075 List<InterfaceType> interfaces = elementA.interfaces; | |
7076 EngineTestCase.assertLength(1, interfaces); | |
7077 JUnitTestCase.assertSame(elementD.type, interfaces[0]); | |
7078 _listener.assertNoErrors(); | |
7079 } | |
7080 void test_visitClassTypeAlias() { | |
7081 ClassElement elementA = ElementFactory.classElement2("A", []); | |
7082 ClassElement elementB = ElementFactory.classElement2("B", []); | |
7083 ClassElement elementC = ElementFactory.classElement2("C", []); | |
7084 ClassElement elementD = ElementFactory.classElement2("D", []); | |
7085 WithClause withClause = ASTFactory.withClause([ASTFactory.typeName(elementC,
[])]); | |
7086 ImplementsClause implementsClause = ASTFactory.implementsClause([ASTFactory.
typeName(elementD, [])]); | |
7087 ClassTypeAlias alias = ASTFactory.classTypeAlias("A", null, null, ASTFactory
.typeName(elementB, []), withClause, implementsClause); | |
7088 alias.name.staticElement = elementA; | |
7089 resolveNode(alias, [elementA, elementB, elementC, elementD]); | |
7090 JUnitTestCase.assertSame(elementB.type, elementA.supertype); | |
7091 List<InterfaceType> mixins = elementA.mixins; | |
7092 EngineTestCase.assertLength(1, mixins); | |
7093 JUnitTestCase.assertSame(elementC.type, mixins[0]); | |
7094 List<InterfaceType> interfaces = elementA.interfaces; | |
7095 EngineTestCase.assertLength(1, interfaces); | |
7096 JUnitTestCase.assertSame(elementD.type, interfaces[0]); | |
7097 _listener.assertNoErrors(); | |
7098 } | |
7099 void test_visitFieldFormalParameter_functionType() { | |
7100 InterfaceType intType = _typeProvider.intType; | |
7101 TypeName intTypeName = ASTFactory.typeName4("int", []); | |
7102 String innerParameterName = "a"; | |
7103 SimpleFormalParameter parameter = ASTFactory.simpleFormalParameter3(innerPar
ameterName); | |
7104 parameter.identifier.staticElement = ElementFactory.requiredParameter(innerP
arameterName); | |
7105 String outerParameterName = "p"; | |
7106 FormalParameter node = ASTFactory.fieldFormalParameter2(null, intTypeName, o
uterParameterName, ASTFactory.formalParameterList([parameter])); | |
7107 node.identifier.staticElement = ElementFactory.requiredParameter(outerParame
terName); | |
7108 Type2 parameterType = resolve6(node, [intType.element]); | |
7109 EngineTestCase.assertInstanceOf(FunctionType, parameterType); | |
7110 FunctionType functionType = parameterType as FunctionType; | |
7111 JUnitTestCase.assertSame(intType, functionType.returnType); | |
7112 EngineTestCase.assertLength(1, functionType.parameters); | |
7113 _listener.assertNoErrors(); | |
7114 } | |
7115 void test_visitFieldFormalParameter_noType() { | |
7116 String parameterName = "p"; | |
7117 FormalParameter node = ASTFactory.fieldFormalParameter(Keyword.VAR, null, pa
rameterName); | |
7118 node.identifier.staticElement = ElementFactory.requiredParameter(parameterNa
me); | |
7119 JUnitTestCase.assertSame(_typeProvider.dynamicType, resolve6(node, [])); | |
7120 _listener.assertNoErrors(); | |
7121 } | |
7122 void test_visitFieldFormalParameter_type() { | |
7123 InterfaceType intType = _typeProvider.intType; | |
7124 TypeName intTypeName = ASTFactory.typeName4("int", []); | |
7125 String parameterName = "p"; | |
7126 FormalParameter node = ASTFactory.fieldFormalParameter(null, intTypeName, pa
rameterName); | |
7127 node.identifier.staticElement = ElementFactory.requiredParameter(parameterNa
me); | |
7128 JUnitTestCase.assertSame(intType, resolve6(node, [intType.element])); | |
7129 _listener.assertNoErrors(); | |
7130 } | |
7131 void test_visitSimpleFormalParameter_noType() { | |
7132 FormalParameter node = ASTFactory.simpleFormalParameter3("p"); | |
7133 node.identifier.staticElement = new ParameterElementImpl.con1(ASTFactory.ide
ntifier3("p")); | |
7134 JUnitTestCase.assertSame(_typeProvider.dynamicType, resolve6(node, [])); | |
7135 _listener.assertNoErrors(); | |
7136 } | |
7137 void test_visitSimpleFormalParameter_type() { | |
7138 InterfaceType intType = _typeProvider.intType; | |
7139 ClassElement intElement = intType.element; | |
7140 FormalParameter node = ASTFactory.simpleFormalParameter4(ASTFactory.typeName
(intElement, []), "p"); | |
7141 SimpleIdentifier identifier = node.identifier; | |
7142 ParameterElementImpl element = new ParameterElementImpl.con1(identifier); | |
7143 identifier.staticElement = element; | |
7144 JUnitTestCase.assertSame(intType, resolve6(node, [intElement])); | |
7145 _listener.assertNoErrors(); | |
7146 } | |
7147 void test_visitTypeName_noParameters_noArguments() { | |
7148 ClassElement classA = ElementFactory.classElement2("A", []); | |
7149 TypeName typeName = ASTFactory.typeName(classA, []); | |
7150 typeName.type = null; | |
7151 resolveNode(typeName, [classA]); | |
7152 JUnitTestCase.assertSame(classA.type, typeName.type); | |
7153 _listener.assertNoErrors(); | |
7154 } | |
7155 void test_visitTypeName_parameters_arguments() { | |
7156 ClassElement classA = ElementFactory.classElement2("A", ["E"]); | |
7157 ClassElement classB = ElementFactory.classElement2("B", []); | |
7158 TypeName typeName = ASTFactory.typeName(classA, [ASTFactory.typeName(classB,
[])]); | |
7159 typeName.type = null; | |
7160 resolveNode(typeName, [classA, classB]); | |
7161 InterfaceType resultType = typeName.type as InterfaceType; | |
7162 JUnitTestCase.assertSame(classA, resultType.element); | |
7163 List<Type2> resultArguments = resultType.typeArguments; | |
7164 EngineTestCase.assertLength(1, resultArguments); | |
7165 JUnitTestCase.assertSame(classB.type, resultArguments[0]); | |
7166 _listener.assertNoErrors(); | |
7167 } | |
7168 void test_visitTypeName_parameters_noArguments() { | |
7169 ClassElement classA = ElementFactory.classElement2("A", ["E"]); | |
7170 TypeName typeName = ASTFactory.typeName(classA, []); | |
7171 typeName.type = null; | |
7172 resolveNode(typeName, [classA]); | |
7173 InterfaceType resultType = typeName.type as InterfaceType; | |
7174 JUnitTestCase.assertSame(classA, resultType.element); | |
7175 List<Type2> resultArguments = resultType.typeArguments; | |
7176 EngineTestCase.assertLength(1, resultArguments); | |
7177 JUnitTestCase.assertSame(DynamicTypeImpl.instance, resultArguments[0]); | |
7178 _listener.assertNoErrors(); | |
7179 } | |
7180 void test_visitTypeName_void() { | |
7181 ClassElement classA = ElementFactory.classElement2("A", []); | |
7182 TypeName typeName = ASTFactory.typeName4("void", []); | |
7183 resolveNode(typeName, [classA]); | |
7184 JUnitTestCase.assertSame(VoidTypeImpl.instance, typeName.type); | |
7185 _listener.assertNoErrors(); | |
7186 } | |
7187 | |
7188 /** | |
7189 * Analyze the given catch clause and assert that the types of the parameters
have been set to the | |
7190 * given types. The types can be null if the catch clause does not have the co
rresponding | |
7191 * parameter. | |
7192 * | |
7193 * @param node the catch clause to be analyzed | |
7194 * @param exceptionType the expected type of the exception parameter | |
7195 * @param stackTraceType the expected type of the stack trace parameter | |
7196 * @param definedElements the elements that are to be defined in the scope in
which the element is | |
7197 * being resolved | |
7198 */ | |
7199 void resolve(CatchClause node, Type2 exceptionType, InterfaceType stackTraceTy
pe, List<Element> definedElements) { | |
7200 resolveNode(node, definedElements); | |
7201 SimpleIdentifier exceptionParameter = node.exceptionParameter; | |
7202 if (exceptionParameter != null) { | |
7203 JUnitTestCase.assertSame(exceptionType, exceptionParameter.staticType); | |
7204 } | |
7205 SimpleIdentifier stackTraceParameter = node.stackTraceParameter; | |
7206 if (stackTraceParameter != null) { | |
7207 JUnitTestCase.assertSame(stackTraceType, stackTraceParameter.staticType); | |
7208 } | |
7209 } | |
7210 | |
7211 /** | |
7212 * Return the type associated with the given parameter after the static type a
nalyzer has computed | |
7213 * a type for it. | |
7214 * | |
7215 * @param node the parameter with which the type is associated | |
7216 * @param definedElements the elements that are to be defined in the scope in
which the element is | |
7217 * being resolved | |
7218 * @return the type associated with the parameter | |
7219 */ | |
7220 Type2 resolve6(FormalParameter node, List<Element> definedElements) { | |
7221 resolveNode(node, definedElements); | |
7222 return ((node.identifier.staticElement as ParameterElement)).type; | |
7223 } | |
7224 | |
7225 /** | |
7226 * Return the element associated with the given identifier after the resolver
has resolved the | |
7227 * identifier. | |
7228 * | |
7229 * @param node the expression to be resolved | |
7230 * @param definedElements the elements that are to be defined in the scope in
which the element is | |
7231 * being resolved | |
7232 * @return the element to which the expression was resolved | |
7233 */ | |
7234 void resolveNode(ASTNode node, List<Element> definedElements) { | |
7235 for (Element element in definedElements) { | |
7236 _library.libraryScope.define(element); | |
7237 } | |
7238 node.accept(_visitor); | |
7239 } | |
7240 static dartSuite() { | |
7241 _ut.group('TypeResolverVisitorTest', () { | |
7242 _ut.test('test_visitCatchClause_exception', () { | |
7243 final __test = new TypeResolverVisitorTest(); | |
7244 runJUnitTest(__test, __test.test_visitCatchClause_exception); | |
7245 }); | |
7246 _ut.test('test_visitCatchClause_exception_stackTrace', () { | |
7247 final __test = new TypeResolverVisitorTest(); | |
7248 runJUnitTest(__test, __test.test_visitCatchClause_exception_stackTrace); | |
7249 }); | |
7250 _ut.test('test_visitCatchClause_on_exception', () { | |
7251 final __test = new TypeResolverVisitorTest(); | |
7252 runJUnitTest(__test, __test.test_visitCatchClause_on_exception); | |
7253 }); | |
7254 _ut.test('test_visitCatchClause_on_exception_stackTrace', () { | |
7255 final __test = new TypeResolverVisitorTest(); | |
7256 runJUnitTest(__test, __test.test_visitCatchClause_on_exception_stackTrac
e); | |
7257 }); | |
7258 _ut.test('test_visitClassDeclaration', () { | |
7259 final __test = new TypeResolverVisitorTest(); | |
7260 runJUnitTest(__test, __test.test_visitClassDeclaration); | |
7261 }); | |
7262 _ut.test('test_visitClassTypeAlias', () { | |
7263 final __test = new TypeResolverVisitorTest(); | |
7264 runJUnitTest(__test, __test.test_visitClassTypeAlias); | |
7265 }); | |
7266 _ut.test('test_visitFieldFormalParameter_functionType', () { | |
7267 final __test = new TypeResolverVisitorTest(); | |
7268 runJUnitTest(__test, __test.test_visitFieldFormalParameter_functionType)
; | |
7269 }); | |
7270 _ut.test('test_visitFieldFormalParameter_noType', () { | |
7271 final __test = new TypeResolverVisitorTest(); | |
7272 runJUnitTest(__test, __test.test_visitFieldFormalParameter_noType); | |
7273 }); | |
7274 _ut.test('test_visitFieldFormalParameter_type', () { | |
7275 final __test = new TypeResolverVisitorTest(); | |
7276 runJUnitTest(__test, __test.test_visitFieldFormalParameter_type); | |
7277 }); | |
7278 _ut.test('test_visitSimpleFormalParameter_noType', () { | |
7279 final __test = new TypeResolverVisitorTest(); | |
7280 runJUnitTest(__test, __test.test_visitSimpleFormalParameter_noType); | |
7281 }); | |
7282 _ut.test('test_visitSimpleFormalParameter_type', () { | |
7283 final __test = new TypeResolverVisitorTest(); | |
7284 runJUnitTest(__test, __test.test_visitSimpleFormalParameter_type); | |
7285 }); | |
7286 _ut.test('test_visitTypeName_noParameters_noArguments', () { | |
7287 final __test = new TypeResolverVisitorTest(); | |
7288 runJUnitTest(__test, __test.test_visitTypeName_noParameters_noArguments)
; | |
7289 }); | |
7290 _ut.test('test_visitTypeName_parameters_arguments', () { | |
7291 final __test = new TypeResolverVisitorTest(); | |
7292 runJUnitTest(__test, __test.test_visitTypeName_parameters_arguments); | |
7293 }); | |
7294 _ut.test('test_visitTypeName_parameters_noArguments', () { | |
7295 final __test = new TypeResolverVisitorTest(); | |
7296 runJUnitTest(__test, __test.test_visitTypeName_parameters_noArguments); | |
7297 }); | |
7298 _ut.test('test_visitTypeName_void', () { | |
7299 final __test = new TypeResolverVisitorTest(); | |
7300 runJUnitTest(__test, __test.test_visitTypeName_void); | |
7301 }); | |
7302 }); | |
7303 } | |
7304 } | |
7305 class ResolverTestCase extends EngineTestCase { | |
7306 | |
7307 /** | |
7308 * The source factory used to create [Source]. | |
7309 */ | |
7310 SourceFactory sourceFactory; | |
7311 | |
7312 /** | |
7313 * The analysis context used to parse the compilation units being resolved. | |
7314 */ | |
7315 AnalysisContextImpl analysisContext; | |
7316 void setUp() { | |
7317 reset(); | |
7318 } | |
7319 | |
7320 /** | |
7321 * Add a source file to the content provider. | |
7322 * | |
7323 * @param contents the contents to be returned by the content provider for the
specified file | |
7324 * @return the source object representing the added file | |
7325 */ | |
7326 Source addSource(String contents) => addSource2("/test.dart", contents); | |
7327 | |
7328 /** | |
7329 * Add a source file to the content provider. The file path should be absolute
. | |
7330 * | |
7331 * @param filePath the path of the file being added | |
7332 * @param contents the contents to be returned by the content provider for the
specified file | |
7333 * @return the source object representing the added file | |
7334 */ | |
7335 Source addSource2(String filePath, String contents) { | |
7336 Source source = cacheSource(filePath, contents); | |
7337 ChangeSet changeSet = new ChangeSet(); | |
7338 changeSet.added(source); | |
7339 analysisContext.applyChanges(changeSet); | |
7340 return source; | |
7341 } | |
7342 | |
7343 /** | |
7344 * Assert that the number of errors reported against the given source matches
the number of errors | |
7345 * that are given and that they have the expected error codes. The order in wh
ich the errors were | |
7346 * gathered is ignored. | |
7347 * | |
7348 * @param source the source against which the errors should have been reported | |
7349 * @param expectedErrorCodes the error codes of the errors that should have be
en reported | |
7350 * @throws AnalysisException if the reported errors could not be computed | |
7351 * @throws AssertionFailedError if a different number of errors have been repo
rted than were | |
7352 * expected | |
7353 */ | |
7354 void assertErrors(Source source, List<ErrorCode> expectedErrorCodes) { | |
7355 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
7356 for (AnalysisError error in analysisContext.computeErrors(source)) { | |
7357 errorListener.onError(error); | |
7358 } | |
7359 errorListener.assertErrors2(expectedErrorCodes); | |
7360 } | |
7361 | |
7362 /** | |
7363 * Assert that no errors have been reported against the given source. | |
7364 * | |
7365 * @param source the source against which no errors should have been reported | |
7366 * @throws AnalysisException if the reported errors could not be computed | |
7367 * @throws AssertionFailedError if any errors have been reported | |
7368 */ | |
7369 void assertNoErrors(Source source) { | |
7370 assertErrors(source, []); | |
7371 } | |
7372 | |
7373 /** | |
7374 * Cache the source file content in the source factory but don't add the sourc
e to the analysis | |
7375 * context. The file path should be absolute. | |
7376 * | |
7377 * @param filePath the path of the file being cached | |
7378 * @param contents the contents to be returned by the content provider for the
specified file | |
7379 * @return the source object representing the cached file | |
7380 */ | |
7381 Source cacheSource(String filePath, String contents) { | |
7382 Source source = new FileBasedSource.con1(sourceFactory.contentCache, FileUti
lities2.createFile(filePath)); | |
7383 sourceFactory.setContents(source, contents); | |
7384 return source; | |
7385 } | |
7386 | |
7387 /** | |
7388 * Create a library element that represents a library named `"test"` containin
g a single | |
7389 * empty compilation unit. | |
7390 * | |
7391 * @return the library element that was created | |
7392 */ | |
7393 LibraryElementImpl createTestLibrary() => createTestLibrary2(new AnalysisConte
xtImpl(), "test", []); | |
7394 | |
7395 /** | |
7396 * Create a library element that represents a library with the given name cont
aining a single | |
7397 * empty compilation unit. | |
7398 * | |
7399 * @param libraryName the name of the library to be created | |
7400 * @return the library element that was created | |
7401 */ | |
7402 LibraryElementImpl createTestLibrary2(AnalysisContext context, String libraryN
ame, List<String> typeNames) { | |
7403 int count = typeNames.length; | |
7404 List<CompilationUnitElementImpl> sourcedCompilationUnits = new List<Compilat
ionUnitElementImpl>(count); | |
7405 for (int i = 0; i < count; i++) { | |
7406 String typeName = typeNames[i]; | |
7407 ClassElementImpl type = new ClassElementImpl(ASTFactory.identifier3(typeNa
me)); | |
7408 String fileName = "${typeName}.dart"; | |
7409 CompilationUnitElementImpl compilationUnit = new CompilationUnitElementImp
l(fileName); | |
7410 compilationUnit.source = createSource2(fileName); | |
7411 compilationUnit.types = <ClassElement> [type]; | |
7412 sourcedCompilationUnits[i] = compilationUnit; | |
7413 } | |
7414 String fileName = "${libraryName}.dart"; | |
7415 CompilationUnitElementImpl compilationUnit = new CompilationUnitElementImpl(
fileName); | |
7416 compilationUnit.source = createSource2(fileName); | |
7417 LibraryElementImpl library = new LibraryElementImpl(context, ASTFactory.libr
aryIdentifier2([libraryName])); | |
7418 library.definingCompilationUnit = compilationUnit; | |
7419 library.parts = sourcedCompilationUnits; | |
7420 return library; | |
7421 } | |
7422 | |
7423 /** | |
7424 * Return a type provider that can be used to test the results of resolution. | |
7425 * | |
7426 * @return a type provider | |
7427 */ | |
7428 TypeProvider get typeProvider { | |
7429 Source coreSource = analysisContext.sourceFactory.forUri(DartSdk.DART_CORE); | |
7430 LibraryElement coreElement = analysisContext.getLibraryElement(coreSource); | |
7431 return new TypeProviderImpl(coreElement); | |
7432 } | |
7433 | |
7434 /** | |
7435 * In the rare cases we want to group several tests into single "test_" method
, so need a way to | |
7436 * reset test instance to reuse it. | |
7437 */ | |
7438 void reset() { | |
7439 analysisContext = AnalysisContextFactory.contextWithCore(); | |
7440 sourceFactory = analysisContext.sourceFactory; | |
7441 } | |
7442 | |
7443 /** | |
7444 * Given a library and all of its parts, resolve the contents of the library a
nd the contents of | |
7445 * the parts. This assumes that the sources for the library and its parts have
already been added | |
7446 * to the content provider using the method [addSource]. | |
7447 * | |
7448 * @param librarySource the source for the compilation unit that defines the l
ibrary | |
7449 * @return the element representing the resolved library | |
7450 * @throws AnalysisException if the analysis could not be performed | |
7451 */ | |
7452 LibraryElement resolve(Source librarySource) => analysisContext.computeLibrary
Element(librarySource); | |
7453 | |
7454 /** | |
7455 * Return the resolved compilation unit corresponding to the given source in t
he given library. | |
7456 * | |
7457 * @param source the source of the compilation unit to be returned | |
7458 * @param library the library in which the compilation unit is to be resolved | |
7459 * @return the resolved compilation unit | |
7460 * @throws Exception if the compilation unit could not be resolved | |
7461 */ | |
7462 CompilationUnit resolveCompilationUnit(Source source, LibraryElement library)
=> analysisContext.resolveCompilationUnit(source, library); | |
7463 | |
7464 /** | |
7465 * Verify that all of the identifiers in the compilation units associated with
the given sources | |
7466 * have been resolved. | |
7467 * | |
7468 * @param resolvedElementMap a table mapping the AST nodes that have been reso
lved to the element | |
7469 * to which they were resolved | |
7470 * @param sources the sources identifying the compilation units to be verified | |
7471 * @throws Exception if the contents of the compilation unit cannot be accesse
d | |
7472 */ | |
7473 void verify(List<Source> sources) { | |
7474 ResolutionVerifier verifier = new ResolutionVerifier(); | |
7475 for (Source source in sources) { | |
7476 analysisContext.parseCompilationUnit(source).accept(verifier); | |
7477 } | |
7478 verifier.assertResolved(); | |
7479 } | |
7480 | |
7481 /** | |
7482 * Create a source object representing a file with the given name and give it
an empty content. | |
7483 * | |
7484 * @param fileName the name of the file for which a source is to be created | |
7485 * @return the source that was created | |
7486 */ | |
7487 FileBasedSource createSource2(String fileName) { | |
7488 FileBasedSource source = new FileBasedSource.con1(sourceFactory.contentCache
, FileUtilities2.createFile(fileName)); | |
7489 sourceFactory.setContents(source, ""); | |
7490 return source; | |
7491 } | |
7492 static dartSuite() { | |
7493 _ut.group('ResolverTestCase', () { | |
7494 }); | |
7495 } | |
7496 } | |
7497 class TypeProviderImplTest extends EngineTestCase { | |
7498 void test_creation() { | |
7499 InterfaceType objectType = classElement("Object", null, []).type; | |
7500 InterfaceType boolType = classElement("bool", objectType, []).type; | |
7501 InterfaceType numType = classElement("num", objectType, []).type; | |
7502 InterfaceType doubleType = classElement("double", numType, []).type; | |
7503 InterfaceType functionType = classElement("Function", objectType, []).type; | |
7504 InterfaceType intType = classElement("int", numType, []).type; | |
7505 InterfaceType listType = classElement("List", objectType, ["E"]).type; | |
7506 InterfaceType mapType = classElement("Map", objectType, ["K", "V"]).type; | |
7507 InterfaceType stackTraceType = classElement("StackTrace", objectType, []).ty
pe; | |
7508 InterfaceType stringType = classElement("String", objectType, []).type; | |
7509 InterfaceType symbolType = classElement("Symbol", objectType, []).type; | |
7510 InterfaceType typeType = classElement("Type", objectType, []).type; | |
7511 CompilationUnitElementImpl unit = new CompilationUnitElementImpl("lib.dart")
; | |
7512 unit.types = <ClassElement> [ | |
7513 boolType.element, | |
7514 doubleType.element, | |
7515 functionType.element, | |
7516 intType.element, | |
7517 listType.element, | |
7518 mapType.element, | |
7519 objectType.element, | |
7520 stackTraceType.element, | |
7521 stringType.element, | |
7522 symbolType.element, | |
7523 typeType.element]; | |
7524 LibraryElementImpl library = new LibraryElementImpl(new AnalysisContextImpl(
), ASTFactory.libraryIdentifier2(["lib"])); | |
7525 library.definingCompilationUnit = unit; | |
7526 TypeProviderImpl provider = new TypeProviderImpl(library); | |
7527 JUnitTestCase.assertSame(boolType, provider.boolType); | |
7528 JUnitTestCase.assertNotNull(provider.bottomType); | |
7529 JUnitTestCase.assertSame(doubleType, provider.doubleType); | |
7530 JUnitTestCase.assertNotNull(provider.dynamicType); | |
7531 JUnitTestCase.assertSame(functionType, provider.functionType); | |
7532 JUnitTestCase.assertSame(intType, provider.intType); | |
7533 JUnitTestCase.assertSame(listType, provider.listType); | |
7534 JUnitTestCase.assertSame(mapType, provider.mapType); | |
7535 JUnitTestCase.assertSame(objectType, provider.objectType); | |
7536 JUnitTestCase.assertSame(stackTraceType, provider.stackTraceType); | |
7537 JUnitTestCase.assertSame(stringType, provider.stringType); | |
7538 JUnitTestCase.assertSame(symbolType, provider.symbolType); | |
7539 JUnitTestCase.assertSame(typeType, provider.typeType); | |
7540 } | |
7541 ClassElement classElement(String typeName, InterfaceType superclassType, List<
String> parameterNames) { | |
7542 ClassElementImpl element = new ClassElementImpl(ASTFactory.identifier3(typeN
ame)); | |
7543 element.supertype = superclassType; | |
7544 InterfaceTypeImpl type = new InterfaceTypeImpl.con1(element); | |
7545 element.type = type; | |
7546 int count = parameterNames.length; | |
7547 if (count > 0) { | |
7548 List<TypeParameterElementImpl> typeParameters = new List<TypeParameterElem
entImpl>(count); | |
7549 List<TypeParameterTypeImpl> typeArguments = new List<TypeParameterTypeImpl
>(count); | |
7550 for (int i = 0; i < count; i++) { | |
7551 TypeParameterElementImpl typeParameter = new TypeParameterElementImpl(AS
TFactory.identifier3(parameterNames[i])); | |
7552 typeParameters[i] = typeParameter; | |
7553 typeArguments[i] = new TypeParameterTypeImpl(typeParameter); | |
7554 typeParameter.type = typeArguments[i]; | |
7555 } | |
7556 element.typeParameters = typeParameters; | |
7557 type.typeArguments = typeArguments; | |
7558 } | |
7559 return element; | |
7560 } | |
7561 static dartSuite() { | |
7562 _ut.group('TypeProviderImplTest', () { | |
7563 _ut.test('test_creation', () { | |
7564 final __test = new TypeProviderImplTest(); | |
7565 runJUnitTest(__test, __test.test_creation); | |
7566 }); | |
7567 }); | |
7568 } | |
7569 } | |
7570 class InheritanceManagerTest extends EngineTestCase { | |
7571 | |
7572 /** | |
7573 * The type provider used to access the types. | |
7574 */ | |
7575 TestTypeProvider _typeProvider; | |
7576 | |
7577 /** | |
7578 * The library containing the code being resolved. | |
7579 */ | |
7580 LibraryElementImpl _definingLibrary; | |
7581 | |
7582 /** | |
7583 * The inheritance manager being tested. | |
7584 */ | |
7585 InheritanceManager _inheritanceManager; | |
7586 | |
7587 /** | |
7588 * The number of members that Object implements (as determined by [TestTypePro
vider]). | |
7589 */ | |
7590 int _numOfMembersInObject = 0; | |
7591 void setUp() { | |
7592 _typeProvider = new TestTypeProvider(); | |
7593 _inheritanceManager = createInheritanceManager(); | |
7594 InterfaceType objectType = _typeProvider.objectType; | |
7595 _numOfMembersInObject = objectType.methods.length + objectType.accessors.len
gth; | |
7596 } | |
7597 void test_getMapOfMembersInheritedFromClasses_accessor_extends() { | |
7598 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7599 String getterName = "g"; | |
7600 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7601 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7602 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
7603 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssB); | |
7604 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssA); | |
7605 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7606 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7607 JUnitTestCase.assertSame(getterG, mapB.get(getterName)); | |
7608 assertNoErrors(classA); | |
7609 assertNoErrors(classB); | |
7610 } | |
7611 void test_getMapOfMembersInheritedFromClasses_accessor_implements() { | |
7612 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7613 String getterName = "g"; | |
7614 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7615 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7616 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7617 classB.interfaces = <InterfaceType> [classA.type]; | |
7618 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssB); | |
7619 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssA); | |
7620 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7621 JUnitTestCase.assertEquals(_numOfMembersInObject, mapB.size); | |
7622 JUnitTestCase.assertNull(mapB.get(getterName)); | |
7623 assertNoErrors(classA); | |
7624 assertNoErrors(classB); | |
7625 } | |
7626 void test_getMapOfMembersInheritedFromClasses_accessor_with() { | |
7627 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7628 String getterName = "g"; | |
7629 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7630 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7631 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7632 classB.mixins = <InterfaceType> [classA.type]; | |
7633 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssB); | |
7634 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssA); | |
7635 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7636 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7637 JUnitTestCase.assertSame(getterG, mapB.get(getterName)); | |
7638 assertNoErrors(classA); | |
7639 assertNoErrors(classB); | |
7640 } | |
7641 void test_getMapOfMembersInheritedFromClasses_method_extends() { | |
7642 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7643 String methodName = "m"; | |
7644 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7645 classA.methods = <MethodElement> [methodM]; | |
7646 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7647 classB.supertype = classA.type; | |
7648 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssB); | |
7649 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssA); | |
7650 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7651 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7652 JUnitTestCase.assertSame(methodM, mapB.get(methodName)); | |
7653 assertNoErrors(classA); | |
7654 assertNoErrors(classB); | |
7655 } | |
7656 void test_getMapOfMembersInheritedFromClasses_method_implements() { | |
7657 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7658 String methodName = "m"; | |
7659 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7660 classA.methods = <MethodElement> [methodM]; | |
7661 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7662 classB.interfaces = <InterfaceType> [classA.type]; | |
7663 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssB); | |
7664 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssA); | |
7665 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7666 JUnitTestCase.assertEquals(_numOfMembersInObject, mapB.size); | |
7667 JUnitTestCase.assertNull(mapB.get(methodName)); | |
7668 assertNoErrors(classA); | |
7669 assertNoErrors(classB); | |
7670 } | |
7671 void test_getMapOfMembersInheritedFromClasses_method_with() { | |
7672 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7673 String methodName = "m"; | |
7674 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7675 classA.methods = <MethodElement> [methodM]; | |
7676 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7677 classB.mixins = <InterfaceType> [classA.type]; | |
7678 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssB); | |
7679 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromClasses(cla
ssA); | |
7680 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7681 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7682 JUnitTestCase.assertSame(methodM, mapB.get(methodName)); | |
7683 assertNoErrors(classA); | |
7684 assertNoErrors(classB); | |
7685 } | |
7686 void test_getMapOfMembersInheritedFromInterfaces_accessor_extends() { | |
7687 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7688 String getterName = "g"; | |
7689 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7690 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7691 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
7692 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classB); | |
7693 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classA); | |
7694 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7695 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7696 JUnitTestCase.assertSame(getterG, mapB.get(getterName)); | |
7697 assertNoErrors(classA); | |
7698 assertNoErrors(classB); | |
7699 } | |
7700 void test_getMapOfMembersInheritedFromInterfaces_accessor_implements() { | |
7701 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7702 String getterName = "g"; | |
7703 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7704 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7705 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7706 classB.interfaces = <InterfaceType> [classA.type]; | |
7707 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classB); | |
7708 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classA); | |
7709 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7710 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7711 JUnitTestCase.assertSame(getterG, mapB.get(getterName)); | |
7712 assertNoErrors(classA); | |
7713 assertNoErrors(classB); | |
7714 } | |
7715 void test_getMapOfMembersInheritedFromInterfaces_accessor_with() { | |
7716 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7717 String getterName = "g"; | |
7718 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7719 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7720 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7721 classB.mixins = <InterfaceType> [classA.type]; | |
7722 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classB); | |
7723 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classA); | |
7724 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7725 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7726 JUnitTestCase.assertSame(getterG, mapB.get(getterName)); | |
7727 assertNoErrors(classA); | |
7728 assertNoErrors(classB); | |
7729 } | |
7730 void test_getMapOfMembersInheritedFromInterfaces_method_extends() { | |
7731 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7732 String methodName = "m"; | |
7733 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7734 classA.methods = <MethodElement> [methodM]; | |
7735 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
7736 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classB); | |
7737 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classA); | |
7738 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7739 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7740 JUnitTestCase.assertSame(methodM, mapB.get(methodName)); | |
7741 assertNoErrors(classA); | |
7742 assertNoErrors(classB); | |
7743 } | |
7744 void test_getMapOfMembersInheritedFromInterfaces_method_implements() { | |
7745 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7746 String methodName = "m"; | |
7747 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7748 classA.methods = <MethodElement> [methodM]; | |
7749 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7750 classB.interfaces = <InterfaceType> [classA.type]; | |
7751 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classB); | |
7752 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classA); | |
7753 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7754 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7755 JUnitTestCase.assertSame(methodM, mapB.get(methodName)); | |
7756 assertNoErrors(classA); | |
7757 assertNoErrors(classB); | |
7758 } | |
7759 void test_getMapOfMembersInheritedFromInterfaces_method_with() { | |
7760 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7761 String methodName = "m"; | |
7762 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7763 classA.methods = <MethodElement> [methodM]; | |
7764 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7765 classB.mixins = <InterfaceType> [classA.type]; | |
7766 MemberMap mapB = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classB); | |
7767 MemberMap mapA = _inheritanceManager.getMapOfMembersInheritedFromInterfaces(
classA); | |
7768 JUnitTestCase.assertEquals(_numOfMembersInObject, mapA.size); | |
7769 JUnitTestCase.assertEquals(_numOfMembersInObject + 1, mapB.size); | |
7770 JUnitTestCase.assertSame(methodM, mapB.get(methodName)); | |
7771 assertNoErrors(classA); | |
7772 assertNoErrors(classB); | |
7773 } | |
7774 void test_lookupInheritance_interface_getter() { | |
7775 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7776 String getterName = "g"; | |
7777 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7778 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7779 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7780 classB.interfaces = <InterfaceType> [classA.type]; | |
7781 JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupInheritance(clas
sB, getterName)); | |
7782 assertNoErrors(classA); | |
7783 assertNoErrors(classB); | |
7784 } | |
7785 void test_lookupInheritance_interface_method() { | |
7786 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7787 String methodName = "m"; | |
7788 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7789 classA.methods = <MethodElement> [methodM]; | |
7790 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7791 classB.interfaces = <InterfaceType> [classA.type]; | |
7792 JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupInheritance(clas
sB, methodName)); | |
7793 assertNoErrors(classA); | |
7794 assertNoErrors(classB); | |
7795 } | |
7796 void test_lookupInheritance_interface_setter() { | |
7797 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7798 String setterName = "s"; | |
7799 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, _typeProvider.intType); | |
7800 classA.accessors = <PropertyAccessorElement> [setterS]; | |
7801 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7802 classB.interfaces = <InterfaceType> [classA.type]; | |
7803 JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupInheritance(clas
sB, "${setterName}=")); | |
7804 assertNoErrors(classA); | |
7805 assertNoErrors(classB); | |
7806 } | |
7807 void test_lookupInheritance_interface_staticMember() { | |
7808 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7809 String methodName = "m"; | |
7810 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7811 ((methodM as MethodElementImpl)).static = true; | |
7812 classA.methods = <MethodElement> [methodM]; | |
7813 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7814 classB.interfaces = <InterfaceType> [classA.type]; | |
7815 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classB, metho
dName)); | |
7816 assertNoErrors(classA); | |
7817 assertNoErrors(classB); | |
7818 } | |
7819 void test_lookupInheritance_interfaces_infiniteLoop() { | |
7820 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7821 classA.interfaces = <InterfaceType> [classA.type]; | |
7822 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name
")); | |
7823 assertNoErrors(classA); | |
7824 } | |
7825 void test_lookupInheritance_interfaces_infiniteLoop2() { | |
7826 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7827 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7828 classA.interfaces = <InterfaceType> [classB.type]; | |
7829 classB.interfaces = <InterfaceType> [classA.type]; | |
7830 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name
")); | |
7831 assertNoErrors(classA); | |
7832 assertNoErrors(classB); | |
7833 } | |
7834 void test_lookupInheritance_interfaces_STWC_inconsistentMethodInheritance() { | |
7835 ClassElementImpl classI1 = ElementFactory.classElement2("I1", []); | |
7836 String methodName = "m"; | |
7837 MethodElement methodM1 = ElementFactory.methodElement(methodName, null, [_ty
peProvider.intType]); | |
7838 classI1.methods = <MethodElement> [methodM1]; | |
7839 ClassElementImpl classI2 = ElementFactory.classElement2("I2", []); | |
7840 MethodElement methodM2 = ElementFactory.methodElement(methodName, null, [_ty
peProvider.stringType]); | |
7841 classI2.methods = <MethodElement> [methodM2]; | |
7842 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7843 classA.interfaces = <InterfaceType> [classI1.type, classI2.type]; | |
7844 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, metho
dName)); | |
7845 assertNoErrors(classI1); | |
7846 assertNoErrors(classI2); | |
7847 assertErrors(classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]
); | |
7848 } | |
7849 void test_lookupInheritance_interfaces_SWC_inconsistentMethodInheritance() { | |
7850 ClassElementImpl classI1 = ElementFactory.classElement2("I1", []); | |
7851 String methodName = "m"; | |
7852 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7853 classI1.methods = <MethodElement> [methodM]; | |
7854 ClassElementImpl classI2 = ElementFactory.classElement2("I2", []); | |
7855 PropertyAccessorElement getter = ElementFactory.getterElement(methodName, fa
lse, _typeProvider.intType); | |
7856 classI2.accessors = <PropertyAccessorElement> [getter]; | |
7857 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7858 classA.interfaces = <InterfaceType> [classI1.type, classI2.type]; | |
7859 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, metho
dName)); | |
7860 assertNoErrors(classI1); | |
7861 assertNoErrors(classI2); | |
7862 assertErrors(classA, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETT
ER_AND_METHOD]); | |
7863 } | |
7864 void test_lookupInheritance_interfaces_union1() { | |
7865 ClassElementImpl classI1 = ElementFactory.classElement2("I1", []); | |
7866 String methodName1 = "m1"; | |
7867 MethodElement methodM1 = ElementFactory.methodElement(methodName1, _typeProv
ider.intType, []); | |
7868 classI1.methods = <MethodElement> [methodM1]; | |
7869 ClassElementImpl classI2 = ElementFactory.classElement2("I2", []); | |
7870 String methodName2 = "m2"; | |
7871 MethodElement methodM2 = ElementFactory.methodElement(methodName2, _typeProv
ider.intType, []); | |
7872 classI2.methods = <MethodElement> [methodM2]; | |
7873 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7874 classA.interfaces = <InterfaceType> [classI1.type, classI2.type]; | |
7875 JUnitTestCase.assertSame(methodM1, _inheritanceManager.lookupInheritance(cla
ssA, methodName1)); | |
7876 JUnitTestCase.assertSame(methodM2, _inheritanceManager.lookupInheritance(cla
ssA, methodName2)); | |
7877 assertNoErrors(classI1); | |
7878 assertNoErrors(classI2); | |
7879 assertNoErrors(classA); | |
7880 } | |
7881 void test_lookupInheritance_interfaces_union2() { | |
7882 ClassElementImpl classI1 = ElementFactory.classElement2("I1", []); | |
7883 String methodName1 = "m1"; | |
7884 MethodElement methodM1 = ElementFactory.methodElement(methodName1, _typeProv
ider.intType, []); | |
7885 classI1.methods = <MethodElement> [methodM1]; | |
7886 ClassElementImpl classI2 = ElementFactory.classElement2("I2", []); | |
7887 String methodName2 = "m2"; | |
7888 MethodElement methodM2 = ElementFactory.methodElement(methodName2, _typeProv
ider.intType, []); | |
7889 classI2.methods = <MethodElement> [methodM2]; | |
7890 classI2.interfaces = <InterfaceType> [classI1.type]; | |
7891 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7892 classA.interfaces = <InterfaceType> [classI2.type]; | |
7893 JUnitTestCase.assertSame(methodM1, _inheritanceManager.lookupInheritance(cla
ssA, methodName1)); | |
7894 JUnitTestCase.assertSame(methodM2, _inheritanceManager.lookupInheritance(cla
ssA, methodName2)); | |
7895 assertNoErrors(classI1); | |
7896 assertNoErrors(classI2); | |
7897 assertNoErrors(classA); | |
7898 } | |
7899 void test_lookupInheritance_mixin_getter() { | |
7900 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7901 String getterName = "g"; | |
7902 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7903 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7904 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7905 classB.mixins = <InterfaceType> [classA.type]; | |
7906 JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupInheritance(clas
sB, getterName)); | |
7907 assertNoErrors(classA); | |
7908 assertNoErrors(classB); | |
7909 } | |
7910 void test_lookupInheritance_mixin_method() { | |
7911 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7912 String methodName = "m"; | |
7913 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7914 classA.methods = <MethodElement> [methodM]; | |
7915 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7916 classB.mixins = <InterfaceType> [classA.type]; | |
7917 JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupInheritance(clas
sB, methodName)); | |
7918 assertNoErrors(classA); | |
7919 assertNoErrors(classB); | |
7920 } | |
7921 void test_lookupInheritance_mixin_setter() { | |
7922 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7923 String setterName = "s"; | |
7924 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, _typeProvider.intType); | |
7925 classA.accessors = <PropertyAccessorElement> [setterS]; | |
7926 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7927 classB.mixins = <InterfaceType> [classA.type]; | |
7928 JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupInheritance(clas
sB, "${setterName}=")); | |
7929 assertNoErrors(classA); | |
7930 assertNoErrors(classB); | |
7931 } | |
7932 void test_lookupInheritance_mixin_staticMember() { | |
7933 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7934 String methodName = "m"; | |
7935 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7936 ((methodM as MethodElementImpl)).static = true; | |
7937 classA.methods = <MethodElement> [methodM]; | |
7938 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7939 classB.mixins = <InterfaceType> [classA.type]; | |
7940 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classB, metho
dName)); | |
7941 assertNoErrors(classA); | |
7942 assertNoErrors(classB); | |
7943 } | |
7944 void test_lookupInheritance_noMember() { | |
7945 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7946 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "a"))
; | |
7947 assertNoErrors(classA); | |
7948 } | |
7949 void test_lookupInheritance_superclass_getter() { | |
7950 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7951 String getterName = "g"; | |
7952 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
7953 classA.accessors = <PropertyAccessorElement> [getterG]; | |
7954 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
7955 JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupInheritance(clas
sB, getterName)); | |
7956 assertNoErrors(classA); | |
7957 assertNoErrors(classB); | |
7958 } | |
7959 void test_lookupInheritance_superclass_infiniteLoop() { | |
7960 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7961 classA.supertype = classA.type; | |
7962 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name
")); | |
7963 assertNoErrors(classA); | |
7964 } | |
7965 void test_lookupInheritance_superclass_infiniteLoop2() { | |
7966 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7967 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
7968 classA.supertype = classB.type; | |
7969 classB.supertype = classA.type; | |
7970 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classA, "name
")); | |
7971 assertNoErrors(classA); | |
7972 assertNoErrors(classB); | |
7973 } | |
7974 void test_lookupInheritance_superclass_method() { | |
7975 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7976 String methodName = "m"; | |
7977 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7978 classA.methods = <MethodElement> [methodM]; | |
7979 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
7980 JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupInheritance(clas
sB, methodName)); | |
7981 assertNoErrors(classA); | |
7982 assertNoErrors(classB); | |
7983 } | |
7984 void test_lookupInheritance_superclass_setter() { | |
7985 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7986 String setterName = "s"; | |
7987 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, _typeProvider.intType); | |
7988 classA.accessors = <PropertyAccessorElement> [setterS]; | |
7989 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
7990 JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupInheritance(clas
sB, "${setterName}=")); | |
7991 assertNoErrors(classA); | |
7992 assertNoErrors(classB); | |
7993 } | |
7994 void test_lookupInheritance_superclass_staticMember() { | |
7995 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
7996 String methodName = "m"; | |
7997 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
7998 ((methodM as MethodElementImpl)).static = true; | |
7999 classA.methods = <MethodElement> [methodM]; | |
8000 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
8001 JUnitTestCase.assertNull(_inheritanceManager.lookupInheritance(classB, metho
dName)); | |
8002 assertNoErrors(classA); | |
8003 assertNoErrors(classB); | |
8004 } | |
8005 void test_lookupMember_getter() { | |
8006 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8007 String getterName = "g"; | |
8008 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, f
alse, _typeProvider.intType); | |
8009 classA.accessors = <PropertyAccessorElement> [getterG]; | |
8010 JUnitTestCase.assertSame(getterG, _inheritanceManager.lookupMember(classA, g
etterName)); | |
8011 assertNoErrors(classA); | |
8012 } | |
8013 void test_lookupMember_getter_static() { | |
8014 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8015 String getterName = "g"; | |
8016 PropertyAccessorElement getterG = ElementFactory.getterElement(getterName, t
rue, _typeProvider.intType); | |
8017 classA.accessors = <PropertyAccessorElement> [getterG]; | |
8018 JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, getterName
)); | |
8019 assertNoErrors(classA); | |
8020 } | |
8021 void test_lookupMember_method() { | |
8022 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8023 String methodName = "m"; | |
8024 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
8025 classA.methods = <MethodElement> [methodM]; | |
8026 JUnitTestCase.assertSame(methodM, _inheritanceManager.lookupMember(classA, m
ethodName)); | |
8027 assertNoErrors(classA); | |
8028 } | |
8029 void test_lookupMember_method_static() { | |
8030 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8031 String methodName = "m"; | |
8032 MethodElement methodM = ElementFactory.methodElement(methodName, _typeProvid
er.intType, []); | |
8033 ((methodM as MethodElementImpl)).static = true; | |
8034 classA.methods = <MethodElement> [methodM]; | |
8035 JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, methodName
)); | |
8036 assertNoErrors(classA); | |
8037 } | |
8038 void test_lookupMember_noMember() { | |
8039 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8040 JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, "a")); | |
8041 assertNoErrors(classA); | |
8042 } | |
8043 void test_lookupMember_setter() { | |
8044 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8045 String setterName = "s"; | |
8046 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, f
alse, _typeProvider.intType); | |
8047 classA.accessors = <PropertyAccessorElement> [setterS]; | |
8048 JUnitTestCase.assertSame(setterS, _inheritanceManager.lookupMember(classA, "
${setterName}=")); | |
8049 assertNoErrors(classA); | |
8050 } | |
8051 void test_lookupMember_setter_static() { | |
8052 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
8053 String setterName = "s"; | |
8054 PropertyAccessorElement setterS = ElementFactory.setterElement(setterName, t
rue, _typeProvider.intType); | |
8055 classA.accessors = <PropertyAccessorElement> [setterS]; | |
8056 JUnitTestCase.assertNull(_inheritanceManager.lookupMember(classA, setterName
)); | |
8057 assertNoErrors(classA); | |
8058 } | |
8059 void assertErrors(ClassElement classElt, List<ErrorCode> expectedErrorCodes) { | |
8060 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
8061 Set<AnalysisError> actualErrors = _inheritanceManager.getErrors(classElt); | |
8062 if (actualErrors != null) { | |
8063 for (AnalysisError error in actualErrors) { | |
8064 errorListener.onError(error); | |
8065 } | |
8066 } | |
8067 errorListener.assertErrors2(expectedErrorCodes); | |
8068 } | |
8069 void assertNoErrors(ClassElement classElt) { | |
8070 assertErrors(classElt, []); | |
8071 } | |
8072 | |
8073 /** | |
8074 * Create the inheritance manager used by the tests. | |
8075 * | |
8076 * @return the inheritance manager that was created | |
8077 */ | |
8078 InheritanceManager createInheritanceManager() { | |
8079 AnalysisContextImpl context = AnalysisContextFactory.contextWithCore(); | |
8080 FileBasedSource source = new FileBasedSource.con1(new ContentCache(), FileUt
ilities2.createFile("/test.dart")); | |
8081 CompilationUnitElementImpl definingCompilationUnit = new CompilationUnitElem
entImpl("test.dart"); | |
8082 definingCompilationUnit.source = source; | |
8083 _definingLibrary = ElementFactory.library(context, "test"); | |
8084 _definingLibrary.definingCompilationUnit = definingCompilationUnit; | |
8085 return new InheritanceManager(_definingLibrary); | |
8086 } | |
8087 static dartSuite() { | |
8088 _ut.group('InheritanceManagerTest', () { | |
8089 _ut.test('test_getMapOfMembersInheritedFromClasses_accessor_extends', () { | |
8090 final __test = new InheritanceManagerTest(); | |
8091 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromClasses_acc
essor_extends); | |
8092 }); | |
8093 _ut.test('test_getMapOfMembersInheritedFromClasses_accessor_implements', (
) { | |
8094 final __test = new InheritanceManagerTest(); | |
8095 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromClasses_acc
essor_implements); | |
8096 }); | |
8097 _ut.test('test_getMapOfMembersInheritedFromClasses_accessor_with', () { | |
8098 final __test = new InheritanceManagerTest(); | |
8099 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromClasses_acc
essor_with); | |
8100 }); | |
8101 _ut.test('test_getMapOfMembersInheritedFromClasses_method_extends', () { | |
8102 final __test = new InheritanceManagerTest(); | |
8103 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromClasses_met
hod_extends); | |
8104 }); | |
8105 _ut.test('test_getMapOfMembersInheritedFromClasses_method_implements', ()
{ | |
8106 final __test = new InheritanceManagerTest(); | |
8107 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromClasses_met
hod_implements); | |
8108 }); | |
8109 _ut.test('test_getMapOfMembersInheritedFromClasses_method_with', () { | |
8110 final __test = new InheritanceManagerTest(); | |
8111 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromClasses_met
hod_with); | |
8112 }); | |
8113 _ut.test('test_getMapOfMembersInheritedFromInterfaces_accessor_extends', (
) { | |
8114 final __test = new InheritanceManagerTest(); | |
8115 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromInterfaces_
accessor_extends); | |
8116 }); | |
8117 _ut.test('test_getMapOfMembersInheritedFromInterfaces_accessor_implements'
, () { | |
8118 final __test = new InheritanceManagerTest(); | |
8119 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromInterfaces_
accessor_implements); | |
8120 }); | |
8121 _ut.test('test_getMapOfMembersInheritedFromInterfaces_accessor_with', () { | |
8122 final __test = new InheritanceManagerTest(); | |
8123 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromInterfaces_
accessor_with); | |
8124 }); | |
8125 _ut.test('test_getMapOfMembersInheritedFromInterfaces_method_extends', ()
{ | |
8126 final __test = new InheritanceManagerTest(); | |
8127 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromInterfaces_
method_extends); | |
8128 }); | |
8129 _ut.test('test_getMapOfMembersInheritedFromInterfaces_method_implements',
() { | |
8130 final __test = new InheritanceManagerTest(); | |
8131 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromInterfaces_
method_implements); | |
8132 }); | |
8133 _ut.test('test_getMapOfMembersInheritedFromInterfaces_method_with', () { | |
8134 final __test = new InheritanceManagerTest(); | |
8135 runJUnitTest(__test, __test.test_getMapOfMembersInheritedFromInterfaces_
method_with); | |
8136 }); | |
8137 _ut.test('test_lookupInheritance_interface_getter', () { | |
8138 final __test = new InheritanceManagerTest(); | |
8139 runJUnitTest(__test, __test.test_lookupInheritance_interface_getter); | |
8140 }); | |
8141 _ut.test('test_lookupInheritance_interface_method', () { | |
8142 final __test = new InheritanceManagerTest(); | |
8143 runJUnitTest(__test, __test.test_lookupInheritance_interface_method); | |
8144 }); | |
8145 _ut.test('test_lookupInheritance_interface_setter', () { | |
8146 final __test = new InheritanceManagerTest(); | |
8147 runJUnitTest(__test, __test.test_lookupInheritance_interface_setter); | |
8148 }); | |
8149 _ut.test('test_lookupInheritance_interface_staticMember', () { | |
8150 final __test = new InheritanceManagerTest(); | |
8151 runJUnitTest(__test, __test.test_lookupInheritance_interface_staticMembe
r); | |
8152 }); | |
8153 _ut.test('test_lookupInheritance_interfaces_STWC_inconsistentMethodInherit
ance', () { | |
8154 final __test = new InheritanceManagerTest(); | |
8155 runJUnitTest(__test, __test.test_lookupInheritance_interfaces_STWC_incon
sistentMethodInheritance); | |
8156 }); | |
8157 _ut.test('test_lookupInheritance_interfaces_SWC_inconsistentMethodInherita
nce', () { | |
8158 final __test = new InheritanceManagerTest(); | |
8159 runJUnitTest(__test, __test.test_lookupInheritance_interfaces_SWC_incons
istentMethodInheritance); | |
8160 }); | |
8161 _ut.test('test_lookupInheritance_interfaces_infiniteLoop', () { | |
8162 final __test = new InheritanceManagerTest(); | |
8163 runJUnitTest(__test, __test.test_lookupInheritance_interfaces_infiniteLo
op); | |
8164 }); | |
8165 _ut.test('test_lookupInheritance_interfaces_infiniteLoop2', () { | |
8166 final __test = new InheritanceManagerTest(); | |
8167 runJUnitTest(__test, __test.test_lookupInheritance_interfaces_infiniteLo
op2); | |
8168 }); | |
8169 _ut.test('test_lookupInheritance_interfaces_union1', () { | |
8170 final __test = new InheritanceManagerTest(); | |
8171 runJUnitTest(__test, __test.test_lookupInheritance_interfaces_union1); | |
8172 }); | |
8173 _ut.test('test_lookupInheritance_interfaces_union2', () { | |
8174 final __test = new InheritanceManagerTest(); | |
8175 runJUnitTest(__test, __test.test_lookupInheritance_interfaces_union2); | |
8176 }); | |
8177 _ut.test('test_lookupInheritance_mixin_getter', () { | |
8178 final __test = new InheritanceManagerTest(); | |
8179 runJUnitTest(__test, __test.test_lookupInheritance_mixin_getter); | |
8180 }); | |
8181 _ut.test('test_lookupInheritance_mixin_method', () { | |
8182 final __test = new InheritanceManagerTest(); | |
8183 runJUnitTest(__test, __test.test_lookupInheritance_mixin_method); | |
8184 }); | |
8185 _ut.test('test_lookupInheritance_mixin_setter', () { | |
8186 final __test = new InheritanceManagerTest(); | |
8187 runJUnitTest(__test, __test.test_lookupInheritance_mixin_setter); | |
8188 }); | |
8189 _ut.test('test_lookupInheritance_mixin_staticMember', () { | |
8190 final __test = new InheritanceManagerTest(); | |
8191 runJUnitTest(__test, __test.test_lookupInheritance_mixin_staticMember); | |
8192 }); | |
8193 _ut.test('test_lookupInheritance_noMember', () { | |
8194 final __test = new InheritanceManagerTest(); | |
8195 runJUnitTest(__test, __test.test_lookupInheritance_noMember); | |
8196 }); | |
8197 _ut.test('test_lookupInheritance_superclass_getter', () { | |
8198 final __test = new InheritanceManagerTest(); | |
8199 runJUnitTest(__test, __test.test_lookupInheritance_superclass_getter); | |
8200 }); | |
8201 _ut.test('test_lookupInheritance_superclass_infiniteLoop', () { | |
8202 final __test = new InheritanceManagerTest(); | |
8203 runJUnitTest(__test, __test.test_lookupInheritance_superclass_infiniteLo
op); | |
8204 }); | |
8205 _ut.test('test_lookupInheritance_superclass_infiniteLoop2', () { | |
8206 final __test = new InheritanceManagerTest(); | |
8207 runJUnitTest(__test, __test.test_lookupInheritance_superclass_infiniteLo
op2); | |
8208 }); | |
8209 _ut.test('test_lookupInheritance_superclass_method', () { | |
8210 final __test = new InheritanceManagerTest(); | |
8211 runJUnitTest(__test, __test.test_lookupInheritance_superclass_method); | |
8212 }); | |
8213 _ut.test('test_lookupInheritance_superclass_setter', () { | |
8214 final __test = new InheritanceManagerTest(); | |
8215 runJUnitTest(__test, __test.test_lookupInheritance_superclass_setter); | |
8216 }); | |
8217 _ut.test('test_lookupInheritance_superclass_staticMember', () { | |
8218 final __test = new InheritanceManagerTest(); | |
8219 runJUnitTest(__test, __test.test_lookupInheritance_superclass_staticMemb
er); | |
8220 }); | |
8221 _ut.test('test_lookupMember_getter', () { | |
8222 final __test = new InheritanceManagerTest(); | |
8223 runJUnitTest(__test, __test.test_lookupMember_getter); | |
8224 }); | |
8225 _ut.test('test_lookupMember_getter_static', () { | |
8226 final __test = new InheritanceManagerTest(); | |
8227 runJUnitTest(__test, __test.test_lookupMember_getter_static); | |
8228 }); | |
8229 _ut.test('test_lookupMember_method', () { | |
8230 final __test = new InheritanceManagerTest(); | |
8231 runJUnitTest(__test, __test.test_lookupMember_method); | |
8232 }); | |
8233 _ut.test('test_lookupMember_method_static', () { | |
8234 final __test = new InheritanceManagerTest(); | |
8235 runJUnitTest(__test, __test.test_lookupMember_method_static); | |
8236 }); | |
8237 _ut.test('test_lookupMember_noMember', () { | |
8238 final __test = new InheritanceManagerTest(); | |
8239 runJUnitTest(__test, __test.test_lookupMember_noMember); | |
8240 }); | |
8241 _ut.test('test_lookupMember_setter', () { | |
8242 final __test = new InheritanceManagerTest(); | |
8243 runJUnitTest(__test, __test.test_lookupMember_setter); | |
8244 }); | |
8245 _ut.test('test_lookupMember_setter_static', () { | |
8246 final __test = new InheritanceManagerTest(); | |
8247 runJUnitTest(__test, __test.test_lookupMember_setter_static); | |
8248 }); | |
8249 }); | |
8250 } | |
8251 } | |
8252 class CompileTimeErrorCodeTest extends ResolverTestCase { | |
8253 void fail_compileTimeConstantRaisesException() { | |
8254 Source source = addSource(EngineTestCase.createSource([])); | |
8255 resolve(source); | |
8256 assertErrors(source, [CompileTimeErrorCode.COMPILE_TIME_CONSTANT_RAISES_EXCE
PTION]); | |
8257 verify([source]); | |
8258 } | |
8259 void fail_constEvalThrowsException() { | |
8260 Source source = addSource(EngineTestCase.createSource([ | |
8261 "class C {", | |
8262 " const C();", | |
8263 "}", | |
8264 "f() { return const C(); }"])); | |
8265 resolve(source); | |
8266 assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_THROWS_EXCEPTIO
N]); | |
8267 verify([source]); | |
8268 } | |
8269 void fail_mixinDeclaresConstructor() { | |
8270 Source source = addSource(EngineTestCase.createSource([ | |
8271 "class A {", | |
8272 " A() {}", | |
8273 "}", | |
8274 "class B extends Object mixin A {}"])); | |
8275 resolve(source); | |
8276 assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]); | |
8277 verify([source]); | |
8278 } | |
8279 void fail_mixinOfNonClass() { | |
8280 Source source = addSource(EngineTestCase.createSource(["var A;", "class B ex
tends Object mixin A {}"])); | |
8281 resolve(source); | |
8282 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]); | |
8283 verify([source]); | |
8284 } | |
8285 void fail_objectCannotExtendAnotherClass() { | |
8286 Source source = addSource(EngineTestCase.createSource([])); | |
8287 resolve(source); | |
8288 assertErrors(source, [CompileTimeErrorCode.OBJECT_CANNOT_EXTEND_ANOTHER_CLAS
S]); | |
8289 verify([source]); | |
8290 } | |
8291 void fail_recursiveCompileTimeConstant() { | |
8292 Source source = addSource(EngineTestCase.createSource([ | |
8293 "class A {", | |
8294 " const A();", | |
8295 " final m = const A();", | |
8296 "}"])); | |
8297 resolve(source); | |
8298 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT])
; | |
8299 verify([source]); | |
8300 } | |
8301 void fail_recursiveCompileTimeConstant_cycle() { | |
8302 Source source = addSource(EngineTestCase.createSource(["const x = y + 1;", "
const y = x + 1;"])); | |
8303 resolve(source); | |
8304 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_COMPILE_TIME_CONSTANT])
; | |
8305 verify([source]); | |
8306 } | |
8307 void fail_superInitializerInObject() { | |
8308 Source source = addSource(EngineTestCase.createSource([])); | |
8309 resolve(source); | |
8310 assertErrors(source, [CompileTimeErrorCode.SUPER_INITIALIZER_IN_OBJECT]); | |
8311 verify([source]); | |
8312 } | |
8313 void test_ambiguousExport() { | |
8314 Source source = addSource(EngineTestCase.createSource([ | |
8315 "library L;", | |
8316 "export 'lib1.dart';", | |
8317 "export 'lib2.dart';"])); | |
8318 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
8319 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
8320 resolve(source); | |
8321 assertErrors(source, [CompileTimeErrorCode.AMBIGUOUS_EXPORT]); | |
8322 verify([source]); | |
8323 } | |
8324 void test_ambiguousImport_function() { | |
8325 Source source = addSource(EngineTestCase.createSource([ | |
8326 "import 'lib1.dart';", | |
8327 "import 'lib2.dart';", | |
8328 "g() { return f(); }"])); | |
8329 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f()
{}"])); | |
8330 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "f()
{}"])); | |
8331 resolve(source); | |
8332 assertErrors(source, [ | |
8333 StaticWarningCode.AMBIGUOUS_IMPORT, | |
8334 CompileTimeErrorCode.UNDEFINED_FUNCTION]); | |
8335 } | |
8336 void test_argumentDefinitionTestNonParameter() { | |
8337 Source source = addSource(EngineTestCase.createSource(["f() {", " var v = 0;
", " return ?v;", "}"])); | |
8338 resolve(source); | |
8339 assertErrors(source, [ | |
8340 ParserErrorCode.DEPRECATED_ARGUMENT_DEFINITION_TEST, | |
8341 CompileTimeErrorCode.ARGUMENT_DEFINITION_TEST_NON_PARAMETER]); | |
8342 verify([source]); | |
8343 } | |
8344 void test_builtInIdentifierAsMixinName_classTypeAlias() { | |
8345 Source source = addSource(EngineTestCase.createSource(["class A {}", "class
B {}", "class as = A with B;"])); | |
8346 resolve(source); | |
8347 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NA
ME]); | |
8348 verify([source]); | |
8349 } | |
8350 void test_builtInIdentifierAsType_formalParameter_field() { | |
8351 Source source = addSource(EngineTestCase.createSource(["class A {", " var x
;", " A(static this.x);", "}"])); | |
8352 resolve(source); | |
8353 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]); | |
8354 verify([source]); | |
8355 } | |
8356 void test_builtInIdentifierAsType_formalParameter_simple() { | |
8357 Source source = addSource(EngineTestCase.createSource(["f(static x) {", "}"]
)); | |
8358 resolve(source); | |
8359 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]); | |
8360 verify([source]); | |
8361 } | |
8362 void test_builtInIdentifierAsType_variableDeclaration() { | |
8363 Source source = addSource(EngineTestCase.createSource(["f() {", " typedef x
;", "}"])); | |
8364 resolve(source); | |
8365 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE]); | |
8366 verify([source]); | |
8367 } | |
8368 void test_builtInIdentifierAsTypedefName_functionTypeAlias() { | |
8369 Source source = addSource(EngineTestCase.createSource(["typedef bool as();"]
)); | |
8370 resolve(source); | |
8371 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPEDEF_NA
ME]); | |
8372 verify([source]); | |
8373 } | |
8374 void test_builtInIdentifierAsTypeName() { | |
8375 Source source = addSource(EngineTestCase.createSource(["class as {}"])); | |
8376 resolve(source); | |
8377 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME]
); | |
8378 verify([source]); | |
8379 } | |
8380 void test_builtInIdentifierAsTypeParameterName() { | |
8381 Source source = addSource(EngineTestCase.createSource(["class A<as> {}"])); | |
8382 resolve(source); | |
8383 assertErrors(source, [CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_PARAM
ETER_NAME]); | |
8384 verify([source]); | |
8385 } | |
8386 void test_caseExpressionTypeImplementsEquals() { | |
8387 Source source = addSource(EngineTestCase.createSource([ | |
8388 "class IntWrapper {", | |
8389 " final int value;", | |
8390 " const IntWrapper(this.value);", | |
8391 " bool operator ==(IntWrapper x) {", | |
8392 " return value == x.value;", | |
8393 " }", | |
8394 " get hashCode => value;", | |
8395 "}", | |
8396 "", | |
8397 "f(var a) {", | |
8398 " switch(a) {", | |
8399 " case(const IntWrapper(1)) : return 1;", | |
8400 " default: return 0;", | |
8401 " }", | |
8402 "}"])); | |
8403 resolve(source); | |
8404 assertErrors(source, [CompileTimeErrorCode.CASE_EXPRESSION_TYPE_IMPLEMENTS_E
QUALS]); | |
8405 verify([source]); | |
8406 } | |
8407 void test_conflictingConstructorNameAndMember_field() { | |
8408 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A.x() {}", "}"])); | |
8409 resolve(source); | |
8410 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_
FIELD]); | |
8411 verify([source]); | |
8412 } | |
8413 void test_conflictingConstructorNameAndMember_method() { | |
8414 Source source = addSource(EngineTestCase.createSource(["class A {", " const
A.x();", " void x() {}", "}"])); | |
8415 resolve(source); | |
8416 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_CONSTRUCTOR_NAME_AND_
METHOD]); | |
8417 verify([source]); | |
8418 } | |
8419 void test_conflictingGetterAndMethod_field_method() { | |
8420 Source source = addSource(EngineTestCase.createSource([ | |
8421 "class A {", | |
8422 " int m;", | |
8423 "}", | |
8424 "class B extends A {", | |
8425 " m() {}", | |
8426 "}"])); | |
8427 resolve(source); | |
8428 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD]); | |
8429 verify([source]); | |
8430 } | |
8431 void test_conflictingGetterAndMethod_getter_method() { | |
8432 Source source = addSource(EngineTestCase.createSource([ | |
8433 "class A {", | |
8434 " get m => 0;", | |
8435 "}", | |
8436 "class B extends A {", | |
8437 " m() {}", | |
8438 "}"])); | |
8439 resolve(source); | |
8440 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_GETTER_AND_METHOD]); | |
8441 verify([source]); | |
8442 } | |
8443 void test_conflictingGetterAndMethod_method_field() { | |
8444 Source source = addSource(EngineTestCase.createSource([ | |
8445 "class A {", | |
8446 " m() {}", | |
8447 "}", | |
8448 "class B extends A {", | |
8449 " int m;", | |
8450 "}"])); | |
8451 resolve(source); | |
8452 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER]); | |
8453 verify([source]); | |
8454 } | |
8455 void test_conflictingGetterAndMethod_method_getter() { | |
8456 Source source = addSource(EngineTestCase.createSource([ | |
8457 "class A {", | |
8458 " m() {}", | |
8459 "}", | |
8460 "class B extends A {", | |
8461 " get m => 0;", | |
8462 "}"])); | |
8463 resolve(source); | |
8464 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_METHOD_AND_GETTER]); | |
8465 verify([source]); | |
8466 } | |
8467 void test_conflictingTypeVariableAndClass() { | |
8468 Source source = addSource(EngineTestCase.createSource(["class T<T> {", "}"])
); | |
8469 resolve(source); | |
8470 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_CLA
SS]); | |
8471 verify([source]); | |
8472 } | |
8473 void test_conflictingTypeVariableAndMember_field() { | |
8474 Source source = addSource(EngineTestCase.createSource(["class A<T> {", " va
r T;", "}"])); | |
8475 resolve(source); | |
8476 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEM
BER]); | |
8477 verify([source]); | |
8478 } | |
8479 void test_conflictingTypeVariableAndMember_getter() { | |
8480 Source source = addSource(EngineTestCase.createSource(["class A<T> {", " ge
t T => null;", "}"])); | |
8481 resolve(source); | |
8482 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEM
BER]); | |
8483 verify([source]); | |
8484 } | |
8485 void test_conflictingTypeVariableAndMember_method() { | |
8486 Source source = addSource(EngineTestCase.createSource(["class A<T> {", " T(
) {}", "}"])); | |
8487 resolve(source); | |
8488 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEM
BER]); | |
8489 verify([source]); | |
8490 } | |
8491 void test_conflictingTypeVariableAndMember_method_static() { | |
8492 Source source = addSource(EngineTestCase.createSource(["class A<T> {", " st
atic T() {}", "}"])); | |
8493 resolve(source); | |
8494 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEM
BER]); | |
8495 verify([source]); | |
8496 } | |
8497 void test_conflictingTypeVariableAndMember_setter() { | |
8498 Source source = addSource(EngineTestCase.createSource(["class A<T> {", " se
t T(x) {}", "}"])); | |
8499 resolve(source); | |
8500 assertErrors(source, [CompileTimeErrorCode.CONFLICTING_TYPE_VARIABLE_AND_MEM
BER]); | |
8501 verify([source]); | |
8502 } | |
8503 void test_constConstructorWithNonConstSuper_explicit() { | |
8504 Source source = addSource(EngineTestCase.createSource([ | |
8505 "class A {", | |
8506 " A();", | |
8507 "}", | |
8508 "class B extends A {", | |
8509 " const B(): super();", | |
8510 "}"])); | |
8511 resolve(source); | |
8512 assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_
SUPER]); | |
8513 verify([source]); | |
8514 } | |
8515 void test_constConstructorWithNonConstSuper_implicit() { | |
8516 Source source = addSource(EngineTestCase.createSource([ | |
8517 "class A {", | |
8518 " A();", | |
8519 "}", | |
8520 "class B extends A {", | |
8521 " const B();", | |
8522 "}"])); | |
8523 resolve(source); | |
8524 assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_
SUPER]); | |
8525 verify([source]); | |
8526 } | |
8527 void test_constConstructorWithNonFinalField_mixin() { | |
8528 Source source = addSource(EngineTestCase.createSource([ | |
8529 "class A {", | |
8530 " var a;", | |
8531 "}", | |
8532 "class B extends Object with A {", | |
8533 " const B();", | |
8534 "}"])); | |
8535 resolve(source); | |
8536 assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_
FIELD]); | |
8537 verify([source]); | |
8538 } | |
8539 void test_constConstructorWithNonFinalField_super() { | |
8540 Source source = addSource(EngineTestCase.createSource([ | |
8541 "class A {", | |
8542 " var a;", | |
8543 "}", | |
8544 "class B extends A {", | |
8545 " const B();", | |
8546 "}"])); | |
8547 resolve(source); | |
8548 assertErrors(source, [ | |
8549 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD, | |
8550 CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER]); | |
8551 verify([source]); | |
8552 } | |
8553 void test_constConstructorWithNonFinalField_this() { | |
8554 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " const A();", "}"])); | |
8555 resolve(source); | |
8556 assertErrors(source, [CompileTimeErrorCode.CONST_CONSTRUCTOR_WITH_NON_FINAL_
FIELD]); | |
8557 verify([source]); | |
8558 } | |
8559 void test_constEval_newInstance_constConstructor() { | |
8560 Source source = addSource(EngineTestCase.createSource(["class A {", " const
A();", "}", "const a = new A();"])); | |
8561 resolve(source); | |
8562 assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTA
NT_VALUE]); | |
8563 verify([source]); | |
8564 } | |
8565 void test_constEval_propertyExtraction_targetNotConst() { | |
8566 Source source = addSource(EngineTestCase.createSource([ | |
8567 "class A {", | |
8568 " const A();", | |
8569 " m() {}", | |
8570 "}", | |
8571 "final a = const A();", | |
8572 "const C = a.m;"])); | |
8573 resolve(source); | |
8574 assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTA
NT_VALUE]); | |
8575 verify([source]); | |
8576 } | |
8577 void test_constEvalThrowsException_binaryMinus_null() { | |
8578 check_constEvalThrowsException_binary_null("null - 5", false); | |
8579 check_constEvalThrowsException_binary_null("5 - null", true); | |
8580 } | |
8581 void test_constEvalThrowsException_binaryPlus_null() { | |
8582 check_constEvalThrowsException_binary_null("null + 5", false); | |
8583 check_constEvalThrowsException_binary_null("5 + null", true); | |
8584 } | |
8585 void test_constEvalThrowsException_divisionByZero() { | |
8586 Source source = addSource("const C = 1 ~/ 0;"); | |
8587 resolve(source); | |
8588 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_IDBZE]); | |
8589 verify([source]); | |
8590 } | |
8591 void test_constEvalThrowsException_unaryBitNot_null() { | |
8592 Source source = addSource("const C = ~null;"); | |
8593 resolve(source); | |
8594 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]); | |
8595 } | |
8596 void test_constEvalThrowsException_unaryNegated_null() { | |
8597 Source source = addSource("const C = -null;"); | |
8598 resolve(source); | |
8599 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]); | |
8600 } | |
8601 void test_constEvalThrowsException_unaryNot_null() { | |
8602 Source source = addSource("const C = !null;"); | |
8603 resolve(source); | |
8604 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]); | |
8605 verify([source]); | |
8606 } | |
8607 void test_constEvalTypeBool_binary() { | |
8608 check_constEvalTypeBool_withParameter_binary("p && ''"); | |
8609 check_constEvalTypeBool_withParameter_binary("p || ''"); | |
8610 } | |
8611 void test_constEvalTypeBool_binary_leftTrue() { | |
8612 Source source = addSource("const C = (true || 0);"); | |
8613 resolve(source); | |
8614 assertErrors(source, [ | |
8615 CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL, | |
8616 HintCode.DEAD_CODE]); | |
8617 verify([source]); | |
8618 } | |
8619 void test_constEvalTypeBoolNumString_equal() { | |
8620 Source source = addSource(EngineTestCase.createSource([ | |
8621 "class A {", | |
8622 " const A();", | |
8623 "}", | |
8624 "class B {", | |
8625 " final a;", | |
8626 " const B(num p) : a = p == const A();", | |
8627 "}"])); | |
8628 resolve(source); | |
8629 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING])
; | |
8630 verify([source]); | |
8631 } | |
8632 void test_constEvalTypeBoolNumString_notEqual() { | |
8633 Source source = addSource(EngineTestCase.createSource([ | |
8634 "class A {", | |
8635 " const A();", | |
8636 "}", | |
8637 "class B {", | |
8638 " final a;", | |
8639 " const B(String p) : a = p != const A();", | |
8640 "}"])); | |
8641 resolve(source); | |
8642 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL_NUM_STRING])
; | |
8643 verify([source]); | |
8644 } | |
8645 void test_constEvalTypeInt_binary() { | |
8646 check_constEvalTypeInt_withParameter_binary("p ^ ''"); | |
8647 check_constEvalTypeInt_withParameter_binary("p & ''"); | |
8648 check_constEvalTypeInt_withParameter_binary("p | ''"); | |
8649 check_constEvalTypeInt_withParameter_binary("p >> ''"); | |
8650 check_constEvalTypeInt_withParameter_binary("p << ''"); | |
8651 } | |
8652 void test_constEvalTypeNum_binary() { | |
8653 check_constEvalTypeNum_withParameter_binary("p + ''"); | |
8654 check_constEvalTypeNum_withParameter_binary("p - ''"); | |
8655 check_constEvalTypeNum_withParameter_binary("p * ''"); | |
8656 check_constEvalTypeNum_withParameter_binary("p / ''"); | |
8657 check_constEvalTypeNum_withParameter_binary("p ~/ ''"); | |
8658 check_constEvalTypeNum_withParameter_binary("p > ''"); | |
8659 check_constEvalTypeNum_withParameter_binary("p < ''"); | |
8660 check_constEvalTypeNum_withParameter_binary("p >= ''"); | |
8661 check_constEvalTypeNum_withParameter_binary("p <= ''"); | |
8662 check_constEvalTypeNum_withParameter_binary("p % ''"); | |
8663 } | |
8664 void test_constEvalTypeNum_plus_String() { | |
8665 Source source = addSource("const C = 'a' + 'b';"); | |
8666 resolve(source); | |
8667 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_NUM]); | |
8668 verify([source]); | |
8669 } | |
8670 void test_constFormalParameter_fieldFormalParameter() { | |
8671 Source source = addSource(EngineTestCase.createSource(["class A {", " var x
;", " A(const this.x) {}", "}"])); | |
8672 resolve(source); | |
8673 assertErrors(source, [CompileTimeErrorCode.CONST_FORMAL_PARAMETER]); | |
8674 verify([source]); | |
8675 } | |
8676 void test_constFormalParameter_simpleFormalParameter() { | |
8677 Source source = addSource(EngineTestCase.createSource(["f(const x) {}"])); | |
8678 resolve(source); | |
8679 assertErrors(source, [CompileTimeErrorCode.CONST_FORMAL_PARAMETER]); | |
8680 verify([source]); | |
8681 } | |
8682 void test_constInitializedWithNonConstValue() { | |
8683 Source source = addSource(EngineTestCase.createSource(["f(p) {", " const C
= p;", "}"])); | |
8684 resolve(source); | |
8685 assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTA
NT_VALUE]); | |
8686 verify([source]); | |
8687 } | |
8688 void test_constInitializedWithNonConstValue_missingConstInListLiteral() { | |
8689 Source source = addSource("const List L = [0];"); | |
8690 resolve(source); | |
8691 assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTA
NT_VALUE]); | |
8692 verify([source]); | |
8693 } | |
8694 void test_constInitializedWithNonConstValue_missingConstInMapLiteral() { | |
8695 Source source = addSource("const Map M = {'a' : 0};"); | |
8696 resolve(source); | |
8697 assertErrors(source, [CompileTimeErrorCode.CONST_INITIALIZED_WITH_NON_CONSTA
NT_VALUE]); | |
8698 verify([source]); | |
8699 } | |
8700 void test_constInstanceField() { | |
8701 Source source = addSource(EngineTestCase.createSource(["class C {", " const
int f = 0;", "}"])); | |
8702 resolve(source); | |
8703 assertErrors(source, [CompileTimeErrorCode.CONST_INSTANCE_FIELD]); | |
8704 verify([source]); | |
8705 } | |
8706 void test_constMapKeyTypeImplementsEquals_direct() { | |
8707 Source source = addSource(EngineTestCase.createSource([ | |
8708 "class A {", | |
8709 " const A();", | |
8710 " operator ==(other) => false;", | |
8711 "}", | |
8712 "main() {", | |
8713 " const {const A() : 0};", | |
8714 "}"])); | |
8715 resolve(source); | |
8716 assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMP
LEMENTS_EQUALS]); | |
8717 verify([source]); | |
8718 } | |
8719 void test_constMapKeyTypeImplementsEquals_super() { | |
8720 Source source = addSource(EngineTestCase.createSource([ | |
8721 "class A {", | |
8722 " const A();", | |
8723 " operator ==(other) => false;", | |
8724 "}", | |
8725 "class B extends A {", | |
8726 " const B();", | |
8727 "}", | |
8728 "main() {", | |
8729 " const {const B() : 0};", | |
8730 "}"])); | |
8731 resolve(source); | |
8732 assertErrors(source, [CompileTimeErrorCode.CONST_MAP_KEY_EXPRESSION_TYPE_IMP
LEMENTS_EQUALS]); | |
8733 verify([source]); | |
8734 } | |
8735 void test_constWithInvalidTypeParameters() { | |
8736 Source source = addSource(EngineTestCase.createSource([ | |
8737 "class A {", | |
8738 " const A();", | |
8739 "}", | |
8740 "f() { return const A<A>(); }"])); | |
8741 resolve(source); | |
8742 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETER
S]); | |
8743 verify([source]); | |
8744 } | |
8745 void test_constWithInvalidTypeParameters_tooFew() { | |
8746 Source source = addSource(EngineTestCase.createSource([ | |
8747 "class A {}", | |
8748 "class C<K, V> {", | |
8749 " const C();", | |
8750 "}", | |
8751 "f(p) {", | |
8752 " return const C<A>();", | |
8753 "}"])); | |
8754 resolve(source); | |
8755 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETER
S]); | |
8756 verify([source]); | |
8757 } | |
8758 void test_constWithInvalidTypeParameters_tooMany() { | |
8759 Source source = addSource(EngineTestCase.createSource([ | |
8760 "class A {}", | |
8761 "class C<E> {", | |
8762 " const C();", | |
8763 "}", | |
8764 "f(p) {", | |
8765 " return const C<A, A>();", | |
8766 "}"])); | |
8767 resolve(source); | |
8768 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_INVALID_TYPE_PARAMETER
S]); | |
8769 verify([source]); | |
8770 } | |
8771 void test_constWithNonConst() { | |
8772 Source source = addSource(EngineTestCase.createSource([ | |
8773 "class T {", | |
8774 " T(a, b, {c, d}) {}", | |
8775 "}", | |
8776 "f() { return const T(0, 1, c: 2, d: 3); }"])); | |
8777 resolve(source); | |
8778 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_CONST]); | |
8779 verify([source]); | |
8780 } | |
8781 void test_constWithNonConstantArgument_annotation() { | |
8782 Source source = addSource(EngineTestCase.createSource([ | |
8783 "class A {", | |
8784 " const A(int p);", | |
8785 "}", | |
8786 "var v = 42;", | |
8787 "@A(v)", | |
8788 "main() {", | |
8789 "}"])); | |
8790 resolve(source); | |
8791 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT]
); | |
8792 verify([source]); | |
8793 } | |
8794 void test_constWithNonConstantArgument_instanceCreation() { | |
8795 Source source = addSource(EngineTestCase.createSource([ | |
8796 "class A {", | |
8797 " const A(a);", | |
8798 "}", | |
8799 "f(p) { return const A(p); }"])); | |
8800 resolve(source); | |
8801 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_CONSTANT_ARGUMENT]
); | |
8802 verify([source]); | |
8803 } | |
8804 void test_constWithNonType() { | |
8805 Source source = addSource(EngineTestCase.createSource(["int A;", "f() {", "
return const A();", "}"])); | |
8806 resolve(source); | |
8807 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_NON_TYPE]); | |
8808 verify([source]); | |
8809 } | |
8810 void test_constWithNonType_fromLibrary() { | |
8811 Source source1 = addSource2("lib.dart", ""); | |
8812 Source source2 = addSource2("lib2.dart", EngineTestCase.createSource([ | |
8813 "import 'lib.dart' as lib;", | |
8814 "void f() {", | |
8815 " const lib.A();", | |
8816 "}"])); | |
8817 resolve(source1); | |
8818 resolve(source2); | |
8819 assertErrors(source2, [CompileTimeErrorCode.CONST_WITH_NON_TYPE]); | |
8820 verify([source1]); | |
8821 } | |
8822 void test_constWithTypeParameters_direct() { | |
8823 Source source = addSource(EngineTestCase.createSource([ | |
8824 "class A<T> {", | |
8825 " static const V = const A<T>();", | |
8826 " const A();", | |
8827 "}"])); | |
8828 resolve(source); | |
8829 assertErrors(source, [ | |
8830 CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, | |
8831 StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | |
8832 verify([source]); | |
8833 } | |
8834 void test_constWithTypeParameters_indirect() { | |
8835 Source source = addSource(EngineTestCase.createSource([ | |
8836 "class A<T> {", | |
8837 " static const V = const A<List<T>>();", | |
8838 " const A();", | |
8839 "}"])); | |
8840 resolve(source); | |
8841 assertErrors(source, [ | |
8842 CompileTimeErrorCode.CONST_WITH_TYPE_PARAMETERS, | |
8843 StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]); | |
8844 verify([source]); | |
8845 } | |
8846 void test_constWithUndefinedConstructor() { | |
8847 Source source = addSource(EngineTestCase.createSource([ | |
8848 "class A {", | |
8849 " const A();", | |
8850 "}", | |
8851 "f() {", | |
8852 " return const A.noSuchConstructor();", | |
8853 "}"])); | |
8854 resolve(source); | |
8855 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR]
); | |
8856 } | |
8857 void test_constWithUndefinedConstructorDefault() { | |
8858 Source source = addSource(EngineTestCase.createSource([ | |
8859 "class A {", | |
8860 " const A.name();", | |
8861 "}", | |
8862 "f() {", | |
8863 " return const A();", | |
8864 "}"])); | |
8865 resolve(source); | |
8866 assertErrors(source, [CompileTimeErrorCode.CONST_WITH_UNDEFINED_CONSTRUCTOR_
DEFAULT]); | |
8867 verify([source]); | |
8868 } | |
8869 void test_defaultValueInFunctionTypeAlias() { | |
8870 Source source = addSource(EngineTestCase.createSource(["typedef F([x = 0]);"
])); | |
8871 resolve(source); | |
8872 assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE_AL
IAS]); | |
8873 verify([source]); | |
8874 } | |
8875 void test_defaultValueInFunctionTypedParameter_named() { | |
8876 Source source = addSource(EngineTestCase.createSource(["f(g({p: null})) {}"]
)); | |
8877 resolve(source); | |
8878 assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_P
ARAMETER]); | |
8879 verify([source]); | |
8880 } | |
8881 void test_defaultValueInFunctionTypedParameter_optional() { | |
8882 Source source = addSource(EngineTestCase.createSource(["f(g([p = null])) {}"
])); | |
8883 resolve(source); | |
8884 assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPED_P
ARAMETER]); | |
8885 verify([source]); | |
8886 } | |
8887 void test_defaultValueInRedirectingFactoryConstructor() { | |
8888 Source source = addSource(EngineTestCase.createSource([ | |
8889 "class A {", | |
8890 " factory A([int x = 0]) = B;", | |
8891 "}", | |
8892 "", | |
8893 "class B implements A {", | |
8894 " B([int x = 1]) {}", | |
8895 "}"])); | |
8896 resolve(source); | |
8897 assertErrors(source, [CompileTimeErrorCode.DEFAULT_VALUE_IN_REDIRECTING_FACT
ORY_CONSTRUCTOR]); | |
8898 verify([source]); | |
8899 } | |
8900 void test_duplicateConstructorName_named() { | |
8901 Source source = addSource(EngineTestCase.createSource(["class A {", " A.a()
{}", " A.a() {}", "}"])); | |
8902 resolve(source); | |
8903 assertErrors(source, [ | |
8904 CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_NAME, | |
8905 CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_NAME]); | |
8906 verify([source]); | |
8907 } | |
8908 void test_duplicateConstructorName_unnamed() { | |
8909 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
}", " A() {}", "}"])); | |
8910 resolve(source); | |
8911 assertErrors(source, [ | |
8912 CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_DEFAULT, | |
8913 CompileTimeErrorCode.DUPLICATE_CONSTRUCTOR_DEFAULT]); | |
8914 verify([source]); | |
8915 } | |
8916 void test_duplicateDefinition() { | |
8917 Source source = addSource(EngineTestCase.createSource(["f() {", " int m = 0
;", " m(a) {}", "}"])); | |
8918 resolve(source); | |
8919 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8920 verify([source]); | |
8921 } | |
8922 void test_duplicateDefinition_acrossLibraries() { | |
8923 Source librarySource = addSource2("/lib.dart", EngineTestCase.createSource([
"library lib;", "", "part 'a.dart';", "part 'b.dart';"])); | |
8924 Source sourceA = addSource2("/a.dart", EngineTestCase.createSource(["part of
lib;", "", "class A {}"])); | |
8925 Source sourceB = addSource2("/b.dart", EngineTestCase.createSource(["part of
lib;", "", "class A {}"])); | |
8926 resolve(librarySource); | |
8927 assertErrors(sourceB, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8928 verify([librarySource, sourceA, sourceB]); | |
8929 } | |
8930 void test_duplicateDefinition_classMembers_fields() { | |
8931 Source source = addSource(EngineTestCase.createSource(["class A {", " int a
;", " int a;", "}"])); | |
8932 resolve(source); | |
8933 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8934 verify([source]); | |
8935 } | |
8936 void test_duplicateDefinition_classMembers_fields_oneStatic() { | |
8937 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " static int x;", "}"])); | |
8938 resolve(source); | |
8939 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8940 verify([source]); | |
8941 } | |
8942 void test_duplicateDefinition_classMembers_methods() { | |
8943 Source source = addSource(EngineTestCase.createSource(["class A {", " m() {
}", " m() {}", "}"])); | |
8944 resolve(source); | |
8945 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8946 verify([source]); | |
8947 } | |
8948 void test_duplicateDefinition_localFields() { | |
8949 Source source = addSource(EngineTestCase.createSource([ | |
8950 "class A {", | |
8951 " m() {", | |
8952 " int a;", | |
8953 " int a;", | |
8954 " }", | |
8955 "}"])); | |
8956 resolve(source); | |
8957 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8958 verify([source]); | |
8959 } | |
8960 void test_duplicateDefinition_parameterWithFunctionName_local() { | |
8961 Source source = addSource(EngineTestCase.createSource(["main() {", " f(f) {
}", "}"])); | |
8962 resolve(source); | |
8963 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8964 verify([source]); | |
8965 } | |
8966 void test_duplicateDefinition_parameterWithFunctionName_topLevel() { | |
8967 Source source = addSource(EngineTestCase.createSource(["main() {", " f(f) {
}", "}"])); | |
8968 resolve(source); | |
8969 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION]); | |
8970 verify([source]); | |
8971 } | |
8972 void test_duplicateDefinitionInheritance_instanceGetter_staticGetter() { | |
8973 Source source = addSource(EngineTestCase.createSource([ | |
8974 "class A {", | |
8975 " int get x => 0;", | |
8976 "}", | |
8977 "class B extends A {", | |
8978 " static int get x => 0;", | |
8979 "}"])); | |
8980 resolve(source); | |
8981 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]
); | |
8982 verify([source]); | |
8983 } | |
8984 void test_duplicateDefinitionInheritance_instanceGetterAbstract_staticGetter()
{ | |
8985 Source source = addSource(EngineTestCase.createSource([ | |
8986 "abstract class A {", | |
8987 " int get x;", | |
8988 "}", | |
8989 "class B extends A {", | |
8990 " static int get x => 0;", | |
8991 "}"])); | |
8992 resolve(source); | |
8993 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]
); | |
8994 verify([source]); | |
8995 } | |
8996 void test_duplicateDefinitionInheritance_instanceMethod_staticMethod() { | |
8997 Source source = addSource(EngineTestCase.createSource([ | |
8998 "class A {", | |
8999 " x() {}", | |
9000 "}", | |
9001 "class B extends A {", | |
9002 " static x() {}", | |
9003 "}"])); | |
9004 resolve(source); | |
9005 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]
); | |
9006 verify([source]); | |
9007 } | |
9008 void test_duplicateDefinitionInheritance_instanceMethodAbstract_staticMethod()
{ | |
9009 Source source = addSource(EngineTestCase.createSource([ | |
9010 "abstract class A {", | |
9011 " x();", | |
9012 "}", | |
9013 "abstract class B extends A {", | |
9014 " static x() {}", | |
9015 "}"])); | |
9016 resolve(source); | |
9017 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]
); | |
9018 verify([source]); | |
9019 } | |
9020 void test_duplicateDefinitionInheritance_instanceSetter_staticSetter() { | |
9021 Source source = addSource(EngineTestCase.createSource([ | |
9022 "class A {", | |
9023 " set x(value) {}", | |
9024 "}", | |
9025 "class B extends A {", | |
9026 " static set x(value) {}", | |
9027 "}"])); | |
9028 resolve(source); | |
9029 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]
); | |
9030 verify([source]); | |
9031 } | |
9032 void test_duplicateDefinitionInheritance_instanceSetterAbstract_staticSetter()
{ | |
9033 Source source = addSource(EngineTestCase.createSource([ | |
9034 "abstract class A {", | |
9035 " set x(value);", | |
9036 "}", | |
9037 "class B extends A {", | |
9038 " static set x(value) {}", | |
9039 "}"])); | |
9040 resolve(source); | |
9041 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_DEFINITION_INHERITANCE]
); | |
9042 verify([source]); | |
9043 } | |
9044 void test_duplicateNamedArgument() { | |
9045 Source source = addSource(EngineTestCase.createSource(["f({a, b}) {}", "main
() {", " f(a: 1, a: 2);", "}"])); | |
9046 resolve(source); | |
9047 assertErrors(source, [CompileTimeErrorCode.DUPLICATE_NAMED_ARGUMENT]); | |
9048 verify([source]); | |
9049 } | |
9050 void test_exportInternalLibrary() { | |
9051 Source source = addSource(EngineTestCase.createSource(["export 'dart:_interc
eptors';"])); | |
9052 resolve(source); | |
9053 assertErrors(source, [CompileTimeErrorCode.EXPORT_INTERNAL_LIBRARY]); | |
9054 verify([source]); | |
9055 } | |
9056 void test_exportOfNonLibrary() { | |
9057 Source source = addSource(EngineTestCase.createSource(["library L;", "export
'lib1.dart';"])); | |
9058 addSource2("/lib1.dart", EngineTestCase.createSource(["part of lib;"])); | |
9059 resolve(source); | |
9060 assertErrors(source, [CompileTimeErrorCode.EXPORT_OF_NON_LIBRARY]); | |
9061 verify([source]); | |
9062 } | |
9063 void test_extendsDisallowedClass_bool() { | |
9064 Source source = addSource(EngineTestCase.createSource(["class A extends bool
{}"])); | |
9065 resolve(source); | |
9066 assertErrors(source, [ | |
9067 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, | |
9068 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]); | |
9069 verify([source]); | |
9070 } | |
9071 void test_extendsDisallowedClass_double() { | |
9072 Source source = addSource(EngineTestCase.createSource(["class A extends doub
le {}"])); | |
9073 resolve(source); | |
9074 assertErrors(source, [ | |
9075 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, | |
9076 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]); | |
9077 verify([source]); | |
9078 } | |
9079 void test_extendsDisallowedClass_int() { | |
9080 Source source = addSource(EngineTestCase.createSource(["class A extends int
{}"])); | |
9081 resolve(source); | |
9082 assertErrors(source, [ | |
9083 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, | |
9084 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]); | |
9085 verify([source]); | |
9086 } | |
9087 void test_extendsDisallowedClass_Null() { | |
9088 Source source = addSource(EngineTestCase.createSource(["class A extends Null
{}"])); | |
9089 resolve(source); | |
9090 assertErrors(source, [ | |
9091 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, | |
9092 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]); | |
9093 verify([source]); | |
9094 } | |
9095 void test_extendsDisallowedClass_num() { | |
9096 Source source = addSource(EngineTestCase.createSource(["class A extends num
{}"])); | |
9097 resolve(source); | |
9098 assertErrors(source, [ | |
9099 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, | |
9100 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]); | |
9101 verify([source]); | |
9102 } | |
9103 void test_extendsDisallowedClass_String() { | |
9104 Source source = addSource(EngineTestCase.createSource(["class A extends Stri
ng {}"])); | |
9105 resolve(source); | |
9106 assertErrors(source, [ | |
9107 CompileTimeErrorCode.EXTENDS_DISALLOWED_CLASS, | |
9108 CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPLICIT]); | |
9109 verify([source]); | |
9110 } | |
9111 void test_extendsNonClass_class() { | |
9112 Source source = addSource(EngineTestCase.createSource(["int A;", "class B ex
tends A {}"])); | |
9113 resolve(source); | |
9114 assertErrors(source, [CompileTimeErrorCode.EXTENDS_NON_CLASS]); | |
9115 verify([source]); | |
9116 } | |
9117 void test_extendsNonClass_dynamic() { | |
9118 Source source = addSource(EngineTestCase.createSource(["class B extends dyna
mic {}"])); | |
9119 resolve(source); | |
9120 assertErrors(source, [CompileTimeErrorCode.EXTENDS_NON_CLASS]); | |
9121 verify([source]); | |
9122 } | |
9123 void test_extraPositionalArguments_const() { | |
9124 Source source = addSource(EngineTestCase.createSource([ | |
9125 "class A {", | |
9126 " const A();", | |
9127 "}", | |
9128 "main() {", | |
9129 " const A(0);", | |
9130 "}"])); | |
9131 resolve(source); | |
9132 assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]); | |
9133 verify([source]); | |
9134 } | |
9135 void test_extraPositionalArguments_const_super() { | |
9136 Source source = addSource(EngineTestCase.createSource([ | |
9137 "class A {", | |
9138 " const A();", | |
9139 "}", | |
9140 "class B extends A {", | |
9141 " const B() : super(0);", | |
9142 "}"])); | |
9143 resolve(source); | |
9144 assertErrors(source, [CompileTimeErrorCode.EXTRA_POSITIONAL_ARGUMENTS]); | |
9145 verify([source]); | |
9146 } | |
9147 void test_fieldInitializedByMultipleInitializers() { | |
9148 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A() : x = 0, x = 1 {}", "}"])); | |
9149 resolve(source); | |
9150 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INI
TIALIZERS]); | |
9151 verify([source]); | |
9152 } | |
9153 void test_fieldInitializedByMultipleInitializers_multipleInits() { | |
9154 Source source = addSource(EngineTestCase.createSource([ | |
9155 "class A {", | |
9156 " int x;", | |
9157 " A() : x = 0, x = 1, x = 2 {}", | |
9158 "}"])); | |
9159 resolve(source); | |
9160 assertErrors(source, [ | |
9161 CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS, | |
9162 CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS]); | |
9163 verify([source]); | |
9164 } | |
9165 void test_fieldInitializedByMultipleInitializers_multipleNames() { | |
9166 Source source = addSource(EngineTestCase.createSource([ | |
9167 "class A {", | |
9168 " int x;", | |
9169 " int y;", | |
9170 " A() : x = 0, x = 1, y = 0, y = 1 {}", | |
9171 "}"])); | |
9172 resolve(source); | |
9173 assertErrors(source, [ | |
9174 CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS, | |
9175 CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS]); | |
9176 verify([source]); | |
9177 } | |
9178 void test_fieldInitializedInParameterAndInitializer() { | |
9179 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A(this.x) : x = 1 {}", "}"])); | |
9180 resolve(source); | |
9181 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AN
D_INITIALIZER]); | |
9182 verify([source]); | |
9183 } | |
9184 void test_fieldInitializerFactoryConstructor() { | |
9185 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " factory A(this.x) {}", "}"])); | |
9186 resolve(source); | |
9187 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_FACTORY_CONSTRU
CTOR]); | |
9188 verify([source]); | |
9189 } | |
9190 void test_fieldInitializerNotAssignable() { | |
9191 Source source = addSource(EngineTestCase.createSource([ | |
9192 "class A {", | |
9193 " final int x;", | |
9194 " const A() : x = '';", | |
9195 "}"])); | |
9196 resolve(source); | |
9197 assertErrors(source, [CompileTimeErrorCode.CONST_FIELD_INITIALIZER_NOT_ASSIG
NABLE]); | |
9198 verify([source]); | |
9199 } | |
9200 void test_fieldInitializerOutsideConstructor() { | |
9201 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " m(this.x) {}", "}"])); | |
9202 resolve(source); | |
9203 assertErrors(source, [ | |
9204 ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR, | |
9205 CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR]); | |
9206 verify([source]); | |
9207 } | |
9208 void test_fieldInitializerOutsideConstructor_defaultParameter() { | |
9209 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " m([this.x]) {}", "}"])); | |
9210 resolve(source); | |
9211 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRU
CTOR]); | |
9212 verify([source]); | |
9213 } | |
9214 void test_fieldInitializerRedirectingConstructor_afterRedirection() { | |
9215 Source source = addSource(EngineTestCase.createSource([ | |
9216 "class A {", | |
9217 " int x;", | |
9218 " A.named() {}", | |
9219 " A() : this.named(), x = 42;", | |
9220 "}"])); | |
9221 resolve(source); | |
9222 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CON
STRUCTOR]); | |
9223 verify([source]); | |
9224 } | |
9225 void test_fieldInitializerRedirectingConstructor_beforeRedirection() { | |
9226 Source source = addSource(EngineTestCase.createSource([ | |
9227 "class A {", | |
9228 " int x;", | |
9229 " A.named() {}", | |
9230 " A() : x = 42, this.named();", | |
9231 "}"])); | |
9232 resolve(source); | |
9233 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CON
STRUCTOR]); | |
9234 verify([source]); | |
9235 } | |
9236 void test_fieldInitializingFormalRedirectingConstructor() { | |
9237 Source source = addSource(EngineTestCase.createSource([ | |
9238 "class A {", | |
9239 " int x;", | |
9240 " A.named() {}", | |
9241 " A(this.x) : this.named();", | |
9242 "}"])); | |
9243 resolve(source); | |
9244 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CON
STRUCTOR]); | |
9245 verify([source]); | |
9246 } | |
9247 void test_finalInitializedMultipleTimes_initializers() { | |
9248 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x;", " A() : x = 0, x = 0 {}", "}"])); | |
9249 resolve(source); | |
9250 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_BY_MULTIPLE_INI
TIALIZERS]); | |
9251 verify([source]); | |
9252 } | |
9253 | |
9254 /** | |
9255 * This test doesn't test the FINAL_INITIALIZED_MULTIPLE_TIMES code, but tests
the | |
9256 * FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER code instead. It is provided
here to show | |
9257 * coverage over all of the permutations of initializers in constructor declar
ations. | |
9258 * | |
9259 * Note: FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER covers a subset of | |
9260 * FINAL_INITIALIZED_MULTIPLE_TIMES, since it more specific, we use it instead
of the broader code | |
9261 */ | |
9262 void test_finalInitializedMultipleTimes_initializingFormal_initializer() { | |
9263 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x;", " A(this.x) : x = 0 {}", "}"])); | |
9264 resolve(source); | |
9265 assertErrors(source, [CompileTimeErrorCode.FIELD_INITIALIZED_IN_PARAMETER_AN
D_INITIALIZER]); | |
9266 verify([source]); | |
9267 } | |
9268 void test_finalInitializedMultipleTimes_initializingFormals() { | |
9269 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x;", " A(this.x, this.x) {}", "}"])); | |
9270 resolve(source); | |
9271 assertErrors(source, [CompileTimeErrorCode.FINAL_INITIALIZED_MULTIPLE_TIMES]
); | |
9272 verify([source]); | |
9273 } | |
9274 void test_finalNotInitialized_instanceField_const_static() { | |
9275 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c const F;", "}"])); | |
9276 resolve(source); | |
9277 assertErrors(source, [CompileTimeErrorCode.CONST_NOT_INITIALIZED]); | |
9278 verify([source]); | |
9279 } | |
9280 void test_finalNotInitialized_library_const() { | |
9281 Source source = addSource(EngineTestCase.createSource(["const F;"])); | |
9282 resolve(source); | |
9283 assertErrors(source, [CompileTimeErrorCode.CONST_NOT_INITIALIZED]); | |
9284 verify([source]); | |
9285 } | |
9286 void test_finalNotInitialized_local_const() { | |
9287 Source source = addSource(EngineTestCase.createSource(["f() {", " const int
x;", "}"])); | |
9288 resolve(source); | |
9289 assertErrors(source, [CompileTimeErrorCode.CONST_NOT_INITIALIZED]); | |
9290 verify([source]); | |
9291 } | |
9292 void test_getterAndMethodWithSameName() { | |
9293 Source source = addSource(EngineTestCase.createSource(["class A {", " x(y)
{}", " get x => 0;", "}"])); | |
9294 resolve(source); | |
9295 assertErrors(source, [CompileTimeErrorCode.GETTER_AND_METHOD_WITH_SAME_NAME]
); | |
9296 verify([source]); | |
9297 } | |
9298 void test_implementsDisallowedClass_bool() { | |
9299 Source source = addSource(EngineTestCase.createSource(["class A implements b
ool {}"])); | |
9300 resolve(source); | |
9301 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]); | |
9302 verify([source]); | |
9303 } | |
9304 void test_implementsDisallowedClass_double() { | |
9305 Source source = addSource(EngineTestCase.createSource(["class A implements d
ouble {}"])); | |
9306 resolve(source); | |
9307 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]); | |
9308 verify([source]); | |
9309 } | |
9310 void test_implementsDisallowedClass_int() { | |
9311 Source source = addSource(EngineTestCase.createSource(["class A implements i
nt {}"])); | |
9312 resolve(source); | |
9313 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]); | |
9314 verify([source]); | |
9315 } | |
9316 void test_implementsDisallowedClass_Null() { | |
9317 Source source = addSource(EngineTestCase.createSource(["class A implements N
ull {}"])); | |
9318 resolve(source); | |
9319 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]); | |
9320 verify([source]); | |
9321 } | |
9322 void test_implementsDisallowedClass_num() { | |
9323 Source source = addSource(EngineTestCase.createSource(["class A implements n
um {}"])); | |
9324 resolve(source); | |
9325 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]); | |
9326 verify([source]); | |
9327 } | |
9328 void test_implementsDisallowedClass_String() { | |
9329 Source source = addSource(EngineTestCase.createSource(["class A implements S
tring {}"])); | |
9330 resolve(source); | |
9331 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DISALLOWED_CLASS]); | |
9332 verify([source]); | |
9333 } | |
9334 void test_implementsDynamic() { | |
9335 Source source = addSource(EngineTestCase.createSource(["class A implements d
ynamic {}"])); | |
9336 resolve(source); | |
9337 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_DYNAMIC]); | |
9338 verify([source]); | |
9339 } | |
9340 void test_implementsNonClass_class() { | |
9341 Source source = addSource(EngineTestCase.createSource(["int A;", "class B im
plements A {}"])); | |
9342 resolve(source); | |
9343 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]); | |
9344 verify([source]); | |
9345 } | |
9346 void test_implementsNonClass_typeAlias() { | |
9347 Source source = addSource(EngineTestCase.createSource(["class A {}", "int B;
", "class C = A implements B;"])); | |
9348 resolve(source); | |
9349 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]); | |
9350 verify([source]); | |
9351 } | |
9352 void test_implementsRepeated() { | |
9353 Source source = addSource(EngineTestCase.createSource(["class A {}", "class
B implements A, A {}"])); | |
9354 resolve(source); | |
9355 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_REPEATED]); | |
9356 verify([source]); | |
9357 } | |
9358 void test_implementsRepeated_3times() { | |
9359 Source source = addSource(EngineTestCase.createSource([ | |
9360 "class A {} class C{}", | |
9361 "class B implements A, A, A, A {}"])); | |
9362 resolve(source); | |
9363 assertErrors(source, [ | |
9364 CompileTimeErrorCode.IMPLEMENTS_REPEATED, | |
9365 CompileTimeErrorCode.IMPLEMENTS_REPEATED, | |
9366 CompileTimeErrorCode.IMPLEMENTS_REPEATED]); | |
9367 verify([source]); | |
9368 } | |
9369 void test_implementsSuperClass() { | |
9370 Source source = addSource(EngineTestCase.createSource(["class A {}", "class
B extends A implements A {}"])); | |
9371 resolve(source); | |
9372 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS]); | |
9373 verify([source]); | |
9374 } | |
9375 void test_implementsSuperClass_Object() { | |
9376 Source source = addSource(EngineTestCase.createSource(["class A implements O
bject {}"])); | |
9377 resolve(source); | |
9378 assertErrors(source, [CompileTimeErrorCode.IMPLEMENTS_SUPER_CLASS]); | |
9379 verify([source]); | |
9380 } | |
9381 void test_implicitThisReferenceInInitializer_field() { | |
9382 Source source = addSource(EngineTestCase.createSource([ | |
9383 "class A {", | |
9384 " var v;", | |
9385 " A() : v = f;", | |
9386 " var f;", | |
9387 "}"])); | |
9388 resolve(source); | |
9389 assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIA
LIZER]); | |
9390 verify([source]); | |
9391 } | |
9392 void test_implicitThisReferenceInInitializer_field2() { | |
9393 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x = 0;", " final y = x;", "}"])); | |
9394 resolve(source); | |
9395 assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIA
LIZER]); | |
9396 verify([source]); | |
9397 } | |
9398 void test_implicitThisReferenceInInitializer_invocation() { | |
9399 Source source = addSource(EngineTestCase.createSource([ | |
9400 "class A {", | |
9401 " var v;", | |
9402 " A() : v = f();", | |
9403 " f() {}", | |
9404 "}"])); | |
9405 resolve(source); | |
9406 assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIA
LIZER]); | |
9407 verify([source]); | |
9408 } | |
9409 void test_implicitThisReferenceInInitializer_invocationInStatic() { | |
9410 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c var F = m();", " m() {}", "}"])); | |
9411 resolve(source); | |
9412 assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIA
LIZER]); | |
9413 verify([source]); | |
9414 } | |
9415 void test_implicitThisReferenceInInitializer_redirectingConstructorInvocation(
) { | |
9416 Source source = addSource(EngineTestCase.createSource([ | |
9417 "class A {", | |
9418 " A(p) {}", | |
9419 " A.named() : this(f);", | |
9420 " var f;", | |
9421 "}"])); | |
9422 resolve(source); | |
9423 assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIA
LIZER]); | |
9424 verify([source]); | |
9425 } | |
9426 void test_implicitThisReferenceInInitializer_superConstructorInvocation() { | |
9427 Source source = addSource(EngineTestCase.createSource([ | |
9428 "class A {", | |
9429 " A(p) {}", | |
9430 "}", | |
9431 "class B extends A {", | |
9432 " B() : super(f);", | |
9433 " var f;", | |
9434 "}"])); | |
9435 resolve(source); | |
9436 assertErrors(source, [CompileTimeErrorCode.IMPLICIT_THIS_REFERENCE_IN_INITIA
LIZER]); | |
9437 verify([source]); | |
9438 } | |
9439 void test_importInternalLibrary() { | |
9440 Source source = addSource(EngineTestCase.createSource(["import 'dart:_interc
eptors';"])); | |
9441 resolve(source); | |
9442 assertErrors(source, [ | |
9443 CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, | |
9444 HintCode.UNUSED_IMPORT]); | |
9445 verify([source]); | |
9446 } | |
9447 void test_importInternalLibrary_collection() { | |
9448 Source source = addSource(EngineTestCase.createSource(["import 'dart:_collec
tion-dev';"])); | |
9449 resolve(source); | |
9450 assertErrors(source, [ | |
9451 CompileTimeErrorCode.IMPORT_INTERNAL_LIBRARY, | |
9452 HintCode.UNUSED_IMPORT]); | |
9453 verify([source]); | |
9454 } | |
9455 void test_importOfNonLibrary() { | |
9456 Source source = addSource(EngineTestCase.createSource(["library lib;", "impo
rt 'part.dart';", "A a;"])); | |
9457 addSource2("/part.dart", EngineTestCase.createSource(["part of lib;", "class
A{}"])); | |
9458 resolve(source); | |
9459 assertErrors(source, [CompileTimeErrorCode.IMPORT_OF_NON_LIBRARY]); | |
9460 verify([source]); | |
9461 } | |
9462 void test_inconsistentCaseExpressionTypes() { | |
9463 Source source = addSource(EngineTestCase.createSource([ | |
9464 "f(var p) {", | |
9465 " switch (p) {", | |
9466 " case 1:", | |
9467 " break;", | |
9468 " case 'a':", | |
9469 " break;", | |
9470 " }", | |
9471 "}"])); | |
9472 resolve(source); | |
9473 assertErrors(source, [CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPE
S]); | |
9474 verify([source]); | |
9475 } | |
9476 void test_inconsistentCaseExpressionTypes_repeated() { | |
9477 Source source = addSource(EngineTestCase.createSource([ | |
9478 "f(var p) {", | |
9479 " switch (p) {", | |
9480 " case 1:", | |
9481 " break;", | |
9482 " case 'a':", | |
9483 " break;", | |
9484 " case 'b':", | |
9485 " break;", | |
9486 " }", | |
9487 "}"])); | |
9488 resolve(source); | |
9489 assertErrors(source, [ | |
9490 CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES, | |
9491 CompileTimeErrorCode.INCONSISTENT_CASE_EXPRESSION_TYPES]); | |
9492 verify([source]); | |
9493 } | |
9494 void test_initializerForNonExistant_initializer() { | |
9495 Source source = addSource(EngineTestCase.createSource(["class A {", " A() :
x = 0 {}", "}"])); | |
9496 resolve(source); | |
9497 assertErrors(source, [CompileTimeErrorCode.INITIALIZER_FOR_NON_EXISTANT_FIEL
D]); | |
9498 } | |
9499 void test_initializerForStaticField() { | |
9500 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c int x;", " A() : x = 0 {}", "}"])); | |
9501 resolve(source); | |
9502 assertErrors(source, [CompileTimeErrorCode.INITIALIZER_FOR_STATIC_FIELD]); | |
9503 verify([source]); | |
9504 } | |
9505 void test_initializingFormalForNonExistantField() { | |
9506 Source source = addSource(EngineTestCase.createSource(["class A {", " A(thi
s.x) {}", "}"])); | |
9507 resolve(source); | |
9508 assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXIST
ANT_FIELD]); | |
9509 verify([source]); | |
9510 } | |
9511 void test_initializingFormalForNonExistantField_notInEnclosingClass() { | |
9512 Source source = addSource(EngineTestCase.createSource([ | |
9513 "class A {", | |
9514 "int x;", | |
9515 "}", | |
9516 "class B extends A {", | |
9517 " B(this.x) {}", | |
9518 "}"])); | |
9519 resolve(source); | |
9520 assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXIST
ANT_FIELD]); | |
9521 verify([source]); | |
9522 } | |
9523 void test_initializingFormalForNonExistantField_optional() { | |
9524 Source source = addSource(EngineTestCase.createSource(["class A {", " A([th
is.x]) {}", "}"])); | |
9525 resolve(source); | |
9526 assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXIST
ANT_FIELD]); | |
9527 verify([source]); | |
9528 } | |
9529 void test_initializingFormalForNonExistantField_synthetic() { | |
9530 Source source = addSource(EngineTestCase.createSource(["class A {", " int g
et x => 1;", " A(this.x) {}", "}"])); | |
9531 resolve(source); | |
9532 assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_NON_EXIST
ANT_FIELD]); | |
9533 verify([source]); | |
9534 } | |
9535 void test_initializingFormalForStaticField() { | |
9536 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c int x;", " A([this.x]) {}", "}"])); | |
9537 resolve(source); | |
9538 assertErrors(source, [CompileTimeErrorCode.INITIALIZING_FORMAL_FOR_STATIC_FI
ELD]); | |
9539 verify([source]); | |
9540 } | |
9541 void test_instanceMemberAccessFromStatic_field() { | |
9542 Source source = addSource(EngineTestCase.createSource([ | |
9543 "class A {", | |
9544 " int f;", | |
9545 " static foo() {", | |
9546 " f;", | |
9547 " }", | |
9548 "}"])); | |
9549 resolve(source); | |
9550 assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATI
C]); | |
9551 verify([source]); | |
9552 } | |
9553 void test_instanceMemberAccessFromStatic_getter() { | |
9554 Source source = addSource(EngineTestCase.createSource([ | |
9555 "class A {", | |
9556 " get g => null;", | |
9557 " static foo() {", | |
9558 " g;", | |
9559 " }", | |
9560 "}"])); | |
9561 resolve(source); | |
9562 assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATI
C]); | |
9563 verify([source]); | |
9564 } | |
9565 void test_instanceMemberAccessFromStatic_method() { | |
9566 Source source = addSource(EngineTestCase.createSource([ | |
9567 "class A {", | |
9568 " m() {}", | |
9569 " static foo() {", | |
9570 " m();", | |
9571 " }", | |
9572 "}"])); | |
9573 resolve(source); | |
9574 assertErrors(source, [CompileTimeErrorCode.INSTANCE_MEMBER_ACCESS_FROM_STATI
C]); | |
9575 verify([source]); | |
9576 } | |
9577 void test_invalidAnnotation_getter() { | |
9578 Source source = addSource(EngineTestCase.createSource(["get V => 0;", "@V",
"main() {", "}"])); | |
9579 resolve(source); | |
9580 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9581 verify([source]); | |
9582 } | |
9583 void test_invalidAnnotation_importWithPrefix_getter() { | |
9584 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "get V
=> 0;"])); | |
9585 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "@p.V", "main() {", "}"])); | |
9586 resolve(source); | |
9587 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9588 verify([source]); | |
9589 } | |
9590 void test_invalidAnnotation_importWithPrefix_notConstantVariable() { | |
9591 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "final
V = 0;"])); | |
9592 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "@p.V", "main() {", "}"])); | |
9593 resolve(source); | |
9594 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9595 verify([source]); | |
9596 } | |
9597 void test_invalidAnnotation_importWithPrefix_notVariableOrConstructorInvocatio
n() { | |
9598 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "typede
f V();"])); | |
9599 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "@p.V", "main() {", "}"])); | |
9600 resolve(source); | |
9601 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9602 verify([source]); | |
9603 } | |
9604 void test_invalidAnnotation_notConstantVariable() { | |
9605 Source source = addSource(EngineTestCase.createSource(["final V = 0;", "@V",
"main() {", "}"])); | |
9606 resolve(source); | |
9607 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9608 verify([source]); | |
9609 } | |
9610 void test_invalidAnnotation_notVariableOrConstructorInvocation() { | |
9611 Source source = addSource(EngineTestCase.createSource(["typedef V();", "@V",
"main() {", "}"])); | |
9612 resolve(source); | |
9613 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9614 verify([source]); | |
9615 } | |
9616 void test_invalidAnnotation_staticMethodReference() { | |
9617 Source source = addSource(EngineTestCase.createSource([ | |
9618 "class A {", | |
9619 " static f() {}", | |
9620 "}", | |
9621 "@A.f", | |
9622 "main() {", | |
9623 "}"])); | |
9624 resolve(source); | |
9625 assertErrors(source, [CompileTimeErrorCode.INVALID_ANNOTATION]); | |
9626 verify([source]); | |
9627 } | |
9628 void test_invalidConstructorName_notEnclosingClassName_defined() { | |
9629 Source source = addSource(EngineTestCase.createSource(["class A {", " B() :
super();", "}", "class B {}"])); | |
9630 resolve(source); | |
9631 assertErrors(source, [CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME]); | |
9632 } | |
9633 void test_invalidConstructorName_notEnclosingClassName_undefined() { | |
9634 Source source = addSource(EngineTestCase.createSource(["class A {", " B() :
super();", "}"])); | |
9635 resolve(source); | |
9636 assertErrors(source, [CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME]); | |
9637 } | |
9638 void test_invalidFactoryNameNotAClass_notClassName() { | |
9639 Source source = addSource(EngineTestCase.createSource(["int B;", "class A {"
, " factory B() {}", "}"])); | |
9640 resolve(source); | |
9641 assertErrors(source, [CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS]
); | |
9642 verify([source]); | |
9643 } | |
9644 void test_invalidFactoryNameNotAClass_notEnclosingClassName() { | |
9645 Source source = addSource(EngineTestCase.createSource(["class A {", " facto
ry B() {}", "}"])); | |
9646 resolve(source); | |
9647 assertErrors(source, [CompileTimeErrorCode.INVALID_FACTORY_NAME_NOT_A_CLASS]
); | |
9648 } | |
9649 void test_invalidReferenceToThis_factoryConstructor() { | |
9650 Source source = addSource(EngineTestCase.createSource(["class A {", " facto
ry A() { return this; }", "}"])); | |
9651 resolve(source); | |
9652 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9653 verify([source]); | |
9654 } | |
9655 void test_invalidReferenceToThis_instanceVariableInitializer_inConstructor() { | |
9656 Source source = addSource(EngineTestCase.createSource(["class A {", " var f
;", " A() : f = this;", "}"])); | |
9657 resolve(source); | |
9658 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9659 verify([source]); | |
9660 } | |
9661 void test_invalidReferenceToThis_instanceVariableInitializer_inDeclaration() { | |
9662 Source source = addSource(EngineTestCase.createSource(["class A {", " var f
= this;", "}"])); | |
9663 resolve(source); | |
9664 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9665 verify([source]); | |
9666 } | |
9667 void test_invalidReferenceToThis_staticMethod() { | |
9668 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c m() { return this; }", "}"])); | |
9669 resolve(source); | |
9670 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9671 verify([source]); | |
9672 } | |
9673 void test_invalidReferenceToThis_staticVariableInitializer() { | |
9674 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c A f = this;", "}"])); | |
9675 resolve(source); | |
9676 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9677 verify([source]); | |
9678 } | |
9679 void test_invalidReferenceToThis_superInitializer() { | |
9680 Source source = addSource(EngineTestCase.createSource([ | |
9681 "class A {", | |
9682 " A(var x) {}", | |
9683 "}", | |
9684 "class B extends A {", | |
9685 " B() : super(this);", | |
9686 "}"])); | |
9687 resolve(source); | |
9688 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9689 verify([source]); | |
9690 } | |
9691 void test_invalidReferenceToThis_topLevelFunction() { | |
9692 Source source = addSource("f() { return this; }"); | |
9693 resolve(source); | |
9694 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9695 verify([source]); | |
9696 } | |
9697 void test_invalidReferenceToThis_variableInitializer() { | |
9698 Source source = addSource("int x = this;"); | |
9699 resolve(source); | |
9700 assertErrors(source, [CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS]); | |
9701 verify([source]); | |
9702 } | |
9703 void test_invalidTypeArgumentInConstList() { | |
9704 Source source = addSource(EngineTestCase.createSource([ | |
9705 "class A<E> {", | |
9706 " m() {", | |
9707 " return const <E>[];", | |
9708 " }", | |
9709 "}"])); | |
9710 resolve(source); | |
9711 assertErrors(source, [CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_LI
ST]); | |
9712 verify([source]); | |
9713 } | |
9714 void test_invalidTypeArgumentInConstMap() { | |
9715 Source source = addSource(EngineTestCase.createSource([ | |
9716 "class A<E> {", | |
9717 " m() {", | |
9718 " return const <String, E>{};", | |
9719 " }", | |
9720 "}"])); | |
9721 resolve(source); | |
9722 assertErrors(source, [CompileTimeErrorCode.INVALID_TYPE_ARGUMENT_IN_CONST_MA
P]); | |
9723 verify([source]); | |
9724 } | |
9725 void test_invalidUri_export() { | |
9726 Source source = addSource(EngineTestCase.createSource(["export 'ht:';"])); | |
9727 resolve(source); | |
9728 assertErrors(source, [CompileTimeErrorCode.INVALID_URI]); | |
9729 } | |
9730 void test_invalidUri_import() { | |
9731 Source source = addSource(EngineTestCase.createSource(["import 'ht:';"])); | |
9732 resolve(source); | |
9733 assertErrors(source, [CompileTimeErrorCode.INVALID_URI]); | |
9734 } | |
9735 void test_invalidUri_part() { | |
9736 Source source = addSource(EngineTestCase.createSource(["part 'ht:';"])); | |
9737 resolve(source); | |
9738 assertErrors(source, [CompileTimeErrorCode.INVALID_URI]); | |
9739 } | |
9740 void test_labelInOuterScope() { | |
9741 Source source = addSource(EngineTestCase.createSource([ | |
9742 "class A {", | |
9743 " void m(int i) {", | |
9744 " l: while (i > 0) {", | |
9745 " void f() {", | |
9746 " break l;", | |
9747 " };", | |
9748 " }", | |
9749 " }", | |
9750 "}"])); | |
9751 resolve(source); | |
9752 assertErrors(source, [CompileTimeErrorCode.LABEL_IN_OUTER_SCOPE]); | |
9753 } | |
9754 void test_labelUndefined_break() { | |
9755 Source source = addSource(EngineTestCase.createSource([ | |
9756 "f() {", | |
9757 " x: while (true) {", | |
9758 " break y;", | |
9759 " }", | |
9760 "}"])); | |
9761 resolve(source); | |
9762 assertErrors(source, [CompileTimeErrorCode.LABEL_UNDEFINED]); | |
9763 } | |
9764 void test_labelUndefined_continue() { | |
9765 Source source = addSource(EngineTestCase.createSource([ | |
9766 "f() {", | |
9767 " x: while (true) {", | |
9768 " continue y;", | |
9769 " }", | |
9770 "}"])); | |
9771 resolve(source); | |
9772 assertErrors(source, [CompileTimeErrorCode.LABEL_UNDEFINED]); | |
9773 } | |
9774 void test_listElementTypeNotAssignable() { | |
9775 Source source = addSource(EngineTestCase.createSource(["var v = const <Strin
g> [42];"])); | |
9776 resolve(source); | |
9777 assertErrors(source, [CompileTimeErrorCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]
); | |
9778 verify([source]); | |
9779 } | |
9780 void test_mapKeyTypeNotAssignable() { | |
9781 Source source = addSource(EngineTestCase.createSource(["var v = const <Strin
g, int > {1 : 2};"])); | |
9782 resolve(source); | |
9783 assertErrors(source, [CompileTimeErrorCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]); | |
9784 verify([source]); | |
9785 } | |
9786 void test_mapValueTypeNotAssignable() { | |
9787 Source source = addSource(EngineTestCase.createSource(["var v = const <Strin
g, String> {'a' : 2};"])); | |
9788 resolve(source); | |
9789 assertErrors(source, [CompileTimeErrorCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]); | |
9790 verify([source]); | |
9791 } | |
9792 void test_memberWithClassName_field() { | |
9793 Source source = addSource(EngineTestCase.createSource(["class A {", " int A
= 0;", "}"])); | |
9794 resolve(source); | |
9795 assertErrors(source, [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME]); | |
9796 verify([source]); | |
9797 } | |
9798 void test_memberWithClassName_field2() { | |
9799 Source source = addSource(EngineTestCase.createSource(["class A {", " int z
, A, b = 0;", "}"])); | |
9800 resolve(source); | |
9801 assertErrors(source, [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME]); | |
9802 verify([source]); | |
9803 } | |
9804 void test_memberWithClassName_getter() { | |
9805 Source source = addSource(EngineTestCase.createSource(["class A {", " get A
=> 0;", "}"])); | |
9806 resolve(source); | |
9807 assertErrors(source, [CompileTimeErrorCode.MEMBER_WITH_CLASS_NAME]); | |
9808 verify([source]); | |
9809 } | |
9810 void test_memberWithClassName_method() { | |
9811 } | |
9812 void test_methodAndGetterWithSameName() { | |
9813 Source source = addSource(EngineTestCase.createSource(["class A {", " get x
=> 0;", " x(y) {}", "}"])); | |
9814 resolve(source); | |
9815 assertErrors(source, [CompileTimeErrorCode.METHOD_AND_GETTER_WITH_SAME_NAME]
); | |
9816 verify([source]); | |
9817 } | |
9818 void test_mixinDeclaresConstructor_classDeclaration() { | |
9819 Source source = addSource(EngineTestCase.createSource([ | |
9820 "class A {", | |
9821 " A() {}", | |
9822 "}", | |
9823 "class B extends Object with A {}"])); | |
9824 resolve(source); | |
9825 assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]); | |
9826 verify([source]); | |
9827 } | |
9828 void test_mixinDeclaresConstructor_typeAlias() { | |
9829 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
}", "}", "class B = Object with A;"])); | |
9830 resolve(source); | |
9831 assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]); | |
9832 verify([source]); | |
9833 } | |
9834 void test_mixinInheritsFromNotObject_classDeclaration_extends() { | |
9835 Source source = addSource(EngineTestCase.createSource([ | |
9836 "class A {}", | |
9837 "class B extends A {}", | |
9838 "class C extends Object with B {}"])); | |
9839 resolve(source); | |
9840 assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]); | |
9841 verify([source]); | |
9842 } | |
9843 void test_mixinInheritsFromNotObject_classDeclaration_with() { | |
9844 Source source = addSource(EngineTestCase.createSource([ | |
9845 "class A {}", | |
9846 "class B extends Object with A {}", | |
9847 "class C extends Object with B {}"])); | |
9848 resolve(source); | |
9849 assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]); | |
9850 verify([source]); | |
9851 } | |
9852 void test_mixinInheritsFromNotObject_typeAlias_extends() { | |
9853 Source source = addSource(EngineTestCase.createSource([ | |
9854 "class A {}", | |
9855 "class B extends A {}", | |
9856 "class C = Object with B;"])); | |
9857 resolve(source); | |
9858 assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]); | |
9859 verify([source]); | |
9860 } | |
9861 void test_mixinInheritsFromNotObject_typeAlias_with() { | |
9862 Source source = addSource(EngineTestCase.createSource([ | |
9863 "class A {}", | |
9864 "class B extends Object with A {}", | |
9865 "class C = Object with B;"])); | |
9866 resolve(source); | |
9867 assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]); | |
9868 verify([source]); | |
9869 } | |
9870 void test_mixinOfDisallowedClass_bool() { | |
9871 Source source = addSource(EngineTestCase.createSource(["class A extends Obje
ct with bool {}"])); | |
9872 resolve(source); | |
9873 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]); | |
9874 verify([source]); | |
9875 } | |
9876 void test_mixinOfDisallowedClass_double() { | |
9877 Source source = addSource(EngineTestCase.createSource(["class A extends Obje
ct with double {}"])); | |
9878 resolve(source); | |
9879 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]); | |
9880 verify([source]); | |
9881 } | |
9882 void test_mixinOfDisallowedClass_int() { | |
9883 Source source = addSource(EngineTestCase.createSource(["class A extends Obje
ct with int {}"])); | |
9884 resolve(source); | |
9885 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]); | |
9886 verify([source]); | |
9887 } | |
9888 void test_mixinOfDisallowedClass_Null() { | |
9889 Source source = addSource(EngineTestCase.createSource(["class A extends Obje
ct with Null {}"])); | |
9890 resolve(source); | |
9891 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]); | |
9892 verify([source]); | |
9893 } | |
9894 void test_mixinOfDisallowedClass_num() { | |
9895 Source source = addSource(EngineTestCase.createSource(["class A extends Obje
ct with num {}"])); | |
9896 resolve(source); | |
9897 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]); | |
9898 verify([source]); | |
9899 } | |
9900 void test_mixinOfDisallowedClass_String() { | |
9901 Source source = addSource(EngineTestCase.createSource(["class A extends Obje
ct with String {}"])); | |
9902 resolve(source); | |
9903 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_DISALLOWED_CLASS]); | |
9904 verify([source]); | |
9905 } | |
9906 void test_mixinOfNonClass_class() { | |
9907 Source source = addSource(EngineTestCase.createSource(["int A;", "class B ex
tends Object with A {}"])); | |
9908 resolve(source); | |
9909 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]); | |
9910 verify([source]); | |
9911 } | |
9912 void test_mixinOfNonClass_typeAlias() { | |
9913 Source source = addSource(EngineTestCase.createSource(["class A {}", "int B;
", "class C = A with B;"])); | |
9914 resolve(source); | |
9915 assertErrors(source, [CompileTimeErrorCode.MIXIN_OF_NON_CLASS]); | |
9916 verify([source]); | |
9917 } | |
9918 void test_mixinReferencesSuper() { | |
9919 Source source = addSource(EngineTestCase.createSource([ | |
9920 "class A {", | |
9921 " toString() => super.toString();", | |
9922 "}", | |
9923 "class B extends Object with A {}"])); | |
9924 resolve(source); | |
9925 assertErrors(source, [CompileTimeErrorCode.MIXIN_REFERENCES_SUPER]); | |
9926 verify([source]); | |
9927 } | |
9928 void test_mixinWithNonClassSuperclass_class() { | |
9929 Source source = addSource(EngineTestCase.createSource(["int A;", "class B {}
", "class C extends A with B {}"])); | |
9930 resolve(source); | |
9931 assertErrors(source, [CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS])
; | |
9932 verify([source]); | |
9933 } | |
9934 void test_mixinWithNonClassSuperclass_typeAlias() { | |
9935 Source source = addSource(EngineTestCase.createSource(["int A;", "class B {}
", "class C = A with B;"])); | |
9936 resolve(source); | |
9937 assertErrors(source, [CompileTimeErrorCode.MIXIN_WITH_NON_CLASS_SUPERCLASS])
; | |
9938 verify([source]); | |
9939 } | |
9940 void test_multipleRedirectingConstructorInvocations() { | |
9941 Source source = addSource(EngineTestCase.createSource([ | |
9942 "class A {", | |
9943 " A() : this.a(), this.b();", | |
9944 " A.a() {}", | |
9945 " A.b() {}", | |
9946 "}"])); | |
9947 resolve(source); | |
9948 assertErrors(source, [CompileTimeErrorCode.MULTIPLE_REDIRECTING_CONSTRUCTOR_
INVOCATIONS]); | |
9949 verify([source]); | |
9950 } | |
9951 void test_multipleSuperInitializers() { | |
9952 Source source = addSource(EngineTestCase.createSource([ | |
9953 "class A {}", | |
9954 "class B extends A {", | |
9955 " B() : super(), super() {}", | |
9956 "}"])); | |
9957 resolve(source); | |
9958 assertErrors(source, [CompileTimeErrorCode.MULTIPLE_SUPER_INITIALIZERS]); | |
9959 verify([source]); | |
9960 } | |
9961 void test_nativeClauseInNonSDKCode() { | |
9962 Source source = addSource(EngineTestCase.createSource(["class A native 'stri
ng' {}"])); | |
9963 resolve(source); | |
9964 assertErrors(source, [ParserErrorCode.NATIVE_CLAUSE_IN_NON_SDK_CODE]); | |
9965 verify([source]); | |
9966 } | |
9967 void test_nativeFunctionBodyInNonSDKCode_function() { | |
9968 Source source = addSource(EngineTestCase.createSource(["int m(a) native 'str
ing';"])); | |
9969 resolve(source); | |
9970 assertErrors(source, [ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE])
; | |
9971 verify([source]); | |
9972 } | |
9973 void test_nativeFunctionBodyInNonSDKCode_method() { | |
9974 Source source = addSource(EngineTestCase.createSource(["class A{", " static
int m(a) native 'string';", "}"])); | |
9975 resolve(source); | |
9976 assertErrors(source, [ParserErrorCode.NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE])
; | |
9977 verify([source]); | |
9978 } | |
9979 void test_noAnnotationConstructorArguments() { | |
9980 Source source = addSource(EngineTestCase.createSource(["class A {", " const
A();", "}", "@A", "main() {", "}"])); | |
9981 resolve(source); | |
9982 assertErrors(source, [CompileTimeErrorCode.NO_ANNOTATION_CONSTRUCTOR_ARGUMEN
TS]); | |
9983 verify([source]); | |
9984 } | |
9985 void test_noDefaultSuperConstructorExplicit() { | |
9986 Source source = addSource(EngineTestCase.createSource([ | |
9987 "class A {", | |
9988 " A(p);", | |
9989 "}", | |
9990 "class B extends A {", | |
9991 " B() {}", | |
9992 "}"])); | |
9993 resolve(source); | |
9994 assertErrors(source, [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_EXPL
ICIT]); | |
9995 verify([source]); | |
9996 } | |
9997 void test_noDefaultSuperConstructorImplicit_superHasParameters() { | |
9998 Source source = addSource(EngineTestCase.createSource(["class A {", " A(p);
", "}", "class B extends A {", "}"])); | |
9999 resolve(source); | |
10000 assertErrors(source, [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPL
ICIT]); | |
10001 verify([source]); | |
10002 } | |
10003 void test_noDefaultSuperConstructorImplicit_superOnlyNamed() { | |
10004 Source source = addSource(EngineTestCase.createSource(["class A { A.named()
{} }", "class B extends A {}"])); | |
10005 resolve(source); | |
10006 assertErrors(source, [CompileTimeErrorCode.NO_DEFAULT_SUPER_CONSTRUCTOR_IMPL
ICIT]); | |
10007 verify([source]); | |
10008 } | |
10009 void test_nonConstantAnnotationConstructor_named() { | |
10010 Source source = addSource(EngineTestCase.createSource([ | |
10011 "class A {", | |
10012 " A.fromInt() {}", | |
10013 "}", | |
10014 "@A.fromInt()", | |
10015 "main() {", | |
10016 "}"])); | |
10017 resolve(source); | |
10018 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCT
OR]); | |
10019 verify([source]); | |
10020 } | |
10021 void test_nonConstantAnnotationConstructor_unnamed() { | |
10022 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
}", "}", "@A()", "main() {", "}"])); | |
10023 resolve(source); | |
10024 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_ANNOTATION_CONSTRUCT
OR]); | |
10025 verify([source]); | |
10026 } | |
10027 void test_nonConstantDefaultValue_function_named() { | |
10028 Source source = addSource(EngineTestCase.createSource(["int y;", "f({x : y})
{}"])); | |
10029 resolve(source); | |
10030 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]); | |
10031 verify([source]); | |
10032 } | |
10033 void test_nonConstantDefaultValue_function_positional() { | |
10034 Source source = addSource(EngineTestCase.createSource(["int y;", "f([x = y])
{}"])); | |
10035 resolve(source); | |
10036 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]); | |
10037 verify([source]); | |
10038 } | |
10039 void test_nonConstantDefaultValue_inConstructor_named() { | |
10040 Source source = addSource(EngineTestCase.createSource(["class A {", " int y
;", " A({x : y}) {}", "}"])); | |
10041 resolve(source); | |
10042 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]); | |
10043 verify([source]); | |
10044 } | |
10045 void test_nonConstantDefaultValue_inConstructor_positional() { | |
10046 Source source = addSource(EngineTestCase.createSource(["class A {", " int y
;", " A([x = y]) {}", "}"])); | |
10047 resolve(source); | |
10048 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]); | |
10049 verify([source]); | |
10050 } | |
10051 void test_nonConstantDefaultValue_method_named() { | |
10052 Source source = addSource(EngineTestCase.createSource(["class A {", " int y
;", " m({x : y}) {}", "}"])); | |
10053 resolve(source); | |
10054 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]); | |
10055 verify([source]); | |
10056 } | |
10057 void test_nonConstantDefaultValue_method_positional() { | |
10058 Source source = addSource(EngineTestCase.createSource(["class A {", " int y
;", " m([x = y]) {}", "}"])); | |
10059 resolve(source); | |
10060 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_DEFAULT_VALUE]); | |
10061 verify([source]); | |
10062 } | |
10063 void test_nonConstCaseExpression() { | |
10064 Source source = addSource(EngineTestCase.createSource([ | |
10065 "f(int p, int q) {", | |
10066 " switch (p) {", | |
10067 " case 3 + q:", | |
10068 " break;", | |
10069 " }", | |
10070 "}"])); | |
10071 resolve(source); | |
10072 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_CASE_EXPRESSION]); | |
10073 verify([source]); | |
10074 } | |
10075 void test_nonConstListElement() { | |
10076 Source source = addSource(EngineTestCase.createSource(["f(a) {", " return c
onst [a];", "}"])); | |
10077 resolve(source); | |
10078 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_LIST_ELEMENT]); | |
10079 verify([source]); | |
10080 } | |
10081 void test_nonConstMapAsExpressionStatement_begin() { | |
10082 Source source = addSource(EngineTestCase.createSource(["f() {", " {'a' : 0,
'b' : 1}.length;", "}"])); | |
10083 resolve(source); | |
10084 assertErrors(source, [CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATE
MENT]); | |
10085 verify([source]); | |
10086 } | |
10087 void test_nonConstMapAsExpressionStatement_only() { | |
10088 Source source = addSource(EngineTestCase.createSource(["f() {", " {'a' : 0,
'b' : 1};", "}"])); | |
10089 resolve(source); | |
10090 assertErrors(source, [CompileTimeErrorCode.NON_CONST_MAP_AS_EXPRESSION_STATE
MENT]); | |
10091 verify([source]); | |
10092 } | |
10093 void test_nonConstMapKey() { | |
10094 Source source = addSource(EngineTestCase.createSource(["f(a) {", " return c
onst {a : 0};", "}"])); | |
10095 resolve(source); | |
10096 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_KEY]); | |
10097 verify([source]); | |
10098 } | |
10099 void test_nonConstMapValue() { | |
10100 Source source = addSource(EngineTestCase.createSource(["f(a) {", " return c
onst {'a' : a};", "}"])); | |
10101 resolve(source); | |
10102 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_MAP_VALUE]); | |
10103 verify([source]); | |
10104 } | |
10105 void test_nonConstValueInInitializer_binary_notBool_left() { | |
10106 Source source = addSource(EngineTestCase.createSource([ | |
10107 "class A {", | |
10108 " final bool a;", | |
10109 " const A(String p) : a = p && true;", | |
10110 "}"])); | |
10111 resolve(source); | |
10112 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]); | |
10113 verify([source]); | |
10114 } | |
10115 void test_nonConstValueInInitializer_binary_notBool_right() { | |
10116 Source source = addSource(EngineTestCase.createSource([ | |
10117 "class A {", | |
10118 " final bool a;", | |
10119 " const A(String p) : a = true && p;", | |
10120 "}"])); | |
10121 resolve(source); | |
10122 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]); | |
10123 verify([source]); | |
10124 } | |
10125 void test_nonConstValueInInitializer_binary_notInt() { | |
10126 Source source = addSource(EngineTestCase.createSource([ | |
10127 "class A {", | |
10128 " final int a;", | |
10129 " const A(String p) : a = 5 & p;", | |
10130 "}"])); | |
10131 resolve(source); | |
10132 assertErrors(source, [ | |
10133 CompileTimeErrorCode.CONST_EVAL_TYPE_INT, | |
10134 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
10135 verify([source]); | |
10136 } | |
10137 void test_nonConstValueInInitializer_binary_notNum() { | |
10138 Source source = addSource(EngineTestCase.createSource([ | |
10139 "class A {", | |
10140 " final int a;", | |
10141 " const A(String p) : a = 5 + p;", | |
10142 "}"])); | |
10143 resolve(source); | |
10144 assertErrors(source, [ | |
10145 CompileTimeErrorCode.CONST_EVAL_TYPE_NUM, | |
10146 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
10147 verify([source]); | |
10148 } | |
10149 void test_nonConstValueInInitializer_field() { | |
10150 Source source = addSource(EngineTestCase.createSource([ | |
10151 "class A {", | |
10152 " static int C;", | |
10153 " final int a;", | |
10154 " const A() : a = C;", | |
10155 "}"])); | |
10156 resolve(source); | |
10157 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER
]); | |
10158 verify([source]); | |
10159 } | |
10160 void test_nonConstValueInInitializer_redirecting() { | |
10161 Source source = addSource(EngineTestCase.createSource([ | |
10162 "class A {", | |
10163 " static var C;", | |
10164 " const A.named(p);", | |
10165 " const A() : this.named(C);", | |
10166 "}"])); | |
10167 resolve(source); | |
10168 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER
]); | |
10169 verify([source]); | |
10170 } | |
10171 void test_nonConstValueInInitializer_super() { | |
10172 Source source = addSource(EngineTestCase.createSource([ | |
10173 "class A {", | |
10174 " const A(p);", | |
10175 "}", | |
10176 "class B extends A {", | |
10177 " static var C;", | |
10178 " const B() : super(C);", | |
10179 "}"])); | |
10180 resolve(source); | |
10181 assertErrors(source, [CompileTimeErrorCode.NON_CONSTANT_VALUE_IN_INITIALIZER
]); | |
10182 verify([source]); | |
10183 } | |
10184 void test_nonGenerativeConstructor_explicit() { | |
10185 Source source = addSource(EngineTestCase.createSource([ | |
10186 "class A {", | |
10187 " factory A.named() {}", | |
10188 "}", | |
10189 "class B extends A {", | |
10190 " B() : super.named();", | |
10191 "}"])); | |
10192 resolve(source); | |
10193 assertErrors(source, [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR]); | |
10194 verify([source]); | |
10195 } | |
10196 void test_nonGenerativeConstructor_implicit() { | |
10197 Source source = addSource(EngineTestCase.createSource([ | |
10198 "class A {", | |
10199 " factory A() {}", | |
10200 "}", | |
10201 "class B extends A {", | |
10202 " B();", | |
10203 "}"])); | |
10204 resolve(source); | |
10205 assertErrors(source, [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR]); | |
10206 verify([source]); | |
10207 } | |
10208 void test_nonGenerativeConstructor_implicit2() { | |
10209 Source source = addSource(EngineTestCase.createSource([ | |
10210 "class A {", | |
10211 " factory A() {}", | |
10212 "}", | |
10213 "class B extends A {", | |
10214 "}"])); | |
10215 resolve(source); | |
10216 assertErrors(source, [CompileTimeErrorCode.NON_GENERATIVE_CONSTRUCTOR]); | |
10217 verify([source]); | |
10218 } | |
10219 void test_notEnoughRequiredArguments_const() { | |
10220 Source source = addSource(EngineTestCase.createSource([ | |
10221 "class A {", | |
10222 " const A(int p);", | |
10223 "}", | |
10224 "main() {", | |
10225 " const A();", | |
10226 "}"])); | |
10227 resolve(source); | |
10228 assertErrors(source, [CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); | |
10229 verify([source]); | |
10230 } | |
10231 void test_notEnoughRequiredArguments_const_super() { | |
10232 Source source = addSource(EngineTestCase.createSource([ | |
10233 "class A {", | |
10234 " const A(int p);", | |
10235 "}", | |
10236 "class B extends A {", | |
10237 " const B() : super();", | |
10238 "}"])); | |
10239 resolve(source); | |
10240 assertErrors(source, [CompileTimeErrorCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); | |
10241 verify([source]); | |
10242 } | |
10243 void test_optionalParameterInOperator_named() { | |
10244 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor +({p}) {}", "}"])); | |
10245 resolve(source); | |
10246 assertErrors(source, [CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR]); | |
10247 verify([source]); | |
10248 } | |
10249 void test_optionalParameterInOperator_positional() { | |
10250 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor +([p]) {}", "}"])); | |
10251 resolve(source); | |
10252 assertErrors(source, [CompileTimeErrorCode.OPTIONAL_PARAMETER_IN_OPERATOR]); | |
10253 verify([source]); | |
10254 } | |
10255 void test_partOfNonPart() { | |
10256 Source source = addSource(EngineTestCase.createSource(["library l1;", "part
'l2.dart';"])); | |
10257 addSource2("/l2.dart", EngineTestCase.createSource(["library l2;"])); | |
10258 resolve(source); | |
10259 assertErrors(source, [CompileTimeErrorCode.PART_OF_NON_PART]); | |
10260 verify([source]); | |
10261 } | |
10262 void test_prefixCollidesWithTopLevelMembers_functionTypeAlias() { | |
10263 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A{}"])); | |
10264 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "typedef p();", "p.A a;"])); | |
10265 resolve(source); | |
10266 assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_ME
MBER]); | |
10267 verify([source]); | |
10268 } | |
10269 void test_prefixCollidesWithTopLevelMembers_topLevelFunction() { | |
10270 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A{}"])); | |
10271 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "p() {}", "p.A a;"])); | |
10272 resolve(source); | |
10273 assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_ME
MBER]); | |
10274 verify([source]); | |
10275 } | |
10276 void test_prefixCollidesWithTopLevelMembers_topLevelVariable() { | |
10277 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A{}"])); | |
10278 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "var p = null;", "p.A a;"])); | |
10279 resolve(source); | |
10280 assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_ME
MBER]); | |
10281 verify([source]); | |
10282 } | |
10283 void test_prefixCollidesWithTopLevelMembers_type() { | |
10284 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A{}"])); | |
10285 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
p;", "class p {}", "p.A a;"])); | |
10286 resolve(source); | |
10287 assertErrors(source, [CompileTimeErrorCode.PREFIX_COLLIDES_WITH_TOP_LEVEL_ME
MBER]); | |
10288 verify([source]); | |
10289 } | |
10290 void test_privateOptionalParameter() { | |
10291 Source source = addSource(EngineTestCase.createSource(["f({var _p}) {}"])); | |
10292 resolve(source); | |
10293 assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]); | |
10294 verify([source]); | |
10295 } | |
10296 void test_privateOptionalParameter_fieldFormal() { | |
10297 Source source = addSource(EngineTestCase.createSource(["class A {", " var _
p;", " A({this._p: 0});", "}"])); | |
10298 resolve(source); | |
10299 assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]); | |
10300 verify([source]); | |
10301 } | |
10302 void test_privateOptionalParameter_withDefaultValue() { | |
10303 Source source = addSource(EngineTestCase.createSource(["f({_p : 0}) {}"])); | |
10304 resolve(source); | |
10305 assertErrors(source, [CompileTimeErrorCode.PRIVATE_OPTIONAL_PARAMETER]); | |
10306 verify([source]); | |
10307 } | |
10308 void test_recursiveConstructorRedirect() { | |
10309 Source source = addSource(EngineTestCase.createSource([ | |
10310 "class A {", | |
10311 " A.a() : this.b();", | |
10312 " A.b() : this.a();", | |
10313 "}"])); | |
10314 resolve(source); | |
10315 assertErrors(source, [ | |
10316 CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT, | |
10317 CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT]); | |
10318 verify([source]); | |
10319 } | |
10320 void test_recursiveConstructorRedirect_directSelfReference() { | |
10321 Source source = addSource(EngineTestCase.createSource(["class A {", " A() :
this();", "}"])); | |
10322 resolve(source); | |
10323 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_CONSTRUCTOR_REDIRECT]); | |
10324 verify([source]); | |
10325 } | |
10326 void test_recursiveFactoryRedirect() { | |
10327 Source source = addSource(EngineTestCase.createSource([ | |
10328 "class A implements B {", | |
10329 " factory A() = C;", | |
10330 "}", | |
10331 "class B implements C {", | |
10332 " factory B() = A;", | |
10333 "}", | |
10334 "class C implements A {", | |
10335 " factory C() = B;", | |
10336 "}"])); | |
10337 resolve(source); | |
10338 assertErrors(source, [ | |
10339 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10340 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10341 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10342 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10343 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10344 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10345 verify([source]); | |
10346 } | |
10347 void test_recursiveFactoryRedirect_directSelfReference() { | |
10348 Source source = addSource(EngineTestCase.createSource(["class A {", " facto
ry A() = A;", "}"])); | |
10349 resolve(source); | |
10350 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT]); | |
10351 verify([source]); | |
10352 } | |
10353 void test_recursiveFactoryRedirect_generic() { | |
10354 Source source = addSource(EngineTestCase.createSource([ | |
10355 "class A<T> implements B<T> {", | |
10356 " factory A() = C;", | |
10357 "}", | |
10358 "class B<T> implements C<T> {", | |
10359 " factory B() = A;", | |
10360 "}", | |
10361 "class C<T> implements A<T> {", | |
10362 " factory C() = B;", | |
10363 "}"])); | |
10364 resolve(source); | |
10365 assertErrors(source, [ | |
10366 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10367 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10368 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10369 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10370 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10371 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10372 verify([source]); | |
10373 } | |
10374 void test_recursiveFactoryRedirect_named() { | |
10375 Source source = addSource(EngineTestCase.createSource([ | |
10376 "class A implements B {", | |
10377 " factory A.nameA() = C.nameC;", | |
10378 "}", | |
10379 "class B implements C {", | |
10380 " factory B.nameB() = A.nameA;", | |
10381 "}", | |
10382 "class C implements A {", | |
10383 " factory C.nameC() = B.nameB;", | |
10384 "}"])); | |
10385 resolve(source); | |
10386 assertErrors(source, [ | |
10387 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10388 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10389 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10390 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10391 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10392 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10393 verify([source]); | |
10394 } | |
10395 | |
10396 /** | |
10397 * "A" references "C" which has cycle with "B". But we should not report probl
em for "A" - it is | |
10398 * not the part of a cycle. | |
10399 */ | |
10400 void test_recursiveFactoryRedirect_outsideCycle() { | |
10401 Source source = addSource(EngineTestCase.createSource([ | |
10402 "class A {", | |
10403 " factory A() = C;", | |
10404 "}", | |
10405 "class B implements C {", | |
10406 " factory B() = C;", | |
10407 "}", | |
10408 "class C implements A, B {", | |
10409 " factory C() = B;", | |
10410 "}"])); | |
10411 resolve(source); | |
10412 assertErrors(source, [ | |
10413 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10414 CompileTimeErrorCode.RECURSIVE_FACTORY_REDIRECT, | |
10415 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10416 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10417 verify([source]); | |
10418 } | |
10419 void test_recursiveInterfaceInheritance_extends() { | |
10420 Source source = addSource(EngineTestCase.createSource(["class A extends B {}
", "class B extends A {}"])); | |
10421 resolve(source); | |
10422 assertErrors(source, [ | |
10423 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10424 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10425 verify([source]); | |
10426 } | |
10427 void test_recursiveInterfaceInheritance_extends_implements() { | |
10428 Source source = addSource(EngineTestCase.createSource(["class A extends B {}
", "class B implements A {}"])); | |
10429 resolve(source); | |
10430 assertErrors(source, [ | |
10431 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10432 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10433 verify([source]); | |
10434 } | |
10435 void test_recursiveInterfaceInheritance_implements() { | |
10436 Source source = addSource(EngineTestCase.createSource(["class A implements B
{}", "class B implements A {}"])); | |
10437 resolve(source); | |
10438 assertErrors(source, [ | |
10439 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10440 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10441 verify([source]); | |
10442 } | |
10443 void test_recursiveInterfaceInheritance_tail() { | |
10444 Source source = addSource(EngineTestCase.createSource([ | |
10445 "abstract class A implements A {}", | |
10446 "class B implements A {}"])); | |
10447 resolve(source); | |
10448 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_B
ASE_CASE_IMPLEMENTS]); | |
10449 verify([source]); | |
10450 } | |
10451 void test_recursiveInterfaceInheritance_tail2() { | |
10452 Source source = addSource(EngineTestCase.createSource([ | |
10453 "abstract class A implements B {}", | |
10454 "abstract class B implements A {}", | |
10455 "class C implements A {}"])); | |
10456 resolve(source); | |
10457 assertErrors(source, [ | |
10458 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10459 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10460 verify([source]); | |
10461 } | |
10462 void test_recursiveInterfaceInheritance_tail3() { | |
10463 Source source = addSource(EngineTestCase.createSource([ | |
10464 "abstract class A implements B {}", | |
10465 "abstract class B implements C {}", | |
10466 "abstract class C implements A {}", | |
10467 "class D implements A {}"])); | |
10468 resolve(source); | |
10469 assertErrors(source, [ | |
10470 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10471 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE, | |
10472 CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE]); | |
10473 verify([source]); | |
10474 } | |
10475 void test_recursiveInterfaceInheritanceBaseCaseExtends() { | |
10476 Source source = addSource(EngineTestCase.createSource(["class A extends A {}
"])); | |
10477 resolve(source); | |
10478 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_B
ASE_CASE_EXTENDS]); | |
10479 verify([source]); | |
10480 } | |
10481 void test_recursiveInterfaceInheritanceBaseCaseImplements() { | |
10482 Source source = addSource(EngineTestCase.createSource(["class A implements A
{}"])); | |
10483 resolve(source); | |
10484 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_B
ASE_CASE_IMPLEMENTS]); | |
10485 verify([source]); | |
10486 } | |
10487 void test_recursiveInterfaceInheritanceBaseCaseImplements_typeAlias() { | |
10488 Source source = addSource(EngineTestCase.createSource([ | |
10489 "class A {}", | |
10490 "class M {}", | |
10491 "class B = A with M implements B;"])); | |
10492 resolve(source); | |
10493 assertErrors(source, [CompileTimeErrorCode.RECURSIVE_INTERFACE_INHERITANCE_B
ASE_CASE_IMPLEMENTS]); | |
10494 verify([source]); | |
10495 } | |
10496 void test_redirectToNonConstConstructor() { | |
10497 Source source = addSource(EngineTestCase.createSource([ | |
10498 "class A {", | |
10499 " A.a() {}", | |
10500 " const factory A.b() = A.a;", | |
10501 "}"])); | |
10502 resolve(source); | |
10503 assertErrors(source, [CompileTimeErrorCode.REDIRECT_TO_NON_CONST_CONSTRUCTOR
]); | |
10504 verify([source]); | |
10505 } | |
10506 void test_referencedBeforeDeclaration_hideInBlock_function() { | |
10507 Source source = addSource(EngineTestCase.createSource([ | |
10508 "var v = 1;", | |
10509 "main() {", | |
10510 " print(v);", | |
10511 " v() {}", | |
10512 "}", | |
10513 "print(x) {}"])); | |
10514 resolve(source); | |
10515 assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]); | |
10516 } | |
10517 void test_referencedBeforeDeclaration_hideInBlock_local() { | |
10518 Source source = addSource(EngineTestCase.createSource([ | |
10519 "var v = 1;", | |
10520 "main() {", | |
10521 " print(v);", | |
10522 " var v = 2;", | |
10523 "}", | |
10524 "print(x) {}"])); | |
10525 resolve(source); | |
10526 assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]); | |
10527 } | |
10528 void test_referencedBeforeDeclaration_hideInBlock_subBlock() { | |
10529 Source source = addSource(EngineTestCase.createSource([ | |
10530 "var v = 1;", | |
10531 "main() {", | |
10532 " {", | |
10533 " print(v);", | |
10534 " }", | |
10535 " var v = 2;", | |
10536 "}", | |
10537 "print(x) {}"])); | |
10538 resolve(source); | |
10539 assertErrors(source, [CompileTimeErrorCode.REFERENCED_BEFORE_DECLARATION]); | |
10540 } | |
10541 void test_referenceToDeclaredVariableInInitializer_closure() { | |
10542 Source source = addSource(EngineTestCase.createSource(["f() {", " var x = (
x) {};", "}"])); | |
10543 resolve(source); | |
10544 assertErrors(source, [CompileTimeErrorCode.REFERENCE_TO_DECLARED_VARIABLE_IN
_INITIALIZER]); | |
10545 verify([source]); | |
10546 } | |
10547 void test_referenceToDeclaredVariableInInitializer_getter() { | |
10548 Source source = addSource(EngineTestCase.createSource(["f() {", " int x = x
+ 1;", "}"])); | |
10549 resolve(source); | |
10550 assertErrors(source, [CompileTimeErrorCode.REFERENCE_TO_DECLARED_VARIABLE_IN
_INITIALIZER]); | |
10551 verify([source]); | |
10552 } | |
10553 void test_referenceToDeclaredVariableInInitializer_setter() { | |
10554 Source source = addSource(EngineTestCase.createSource(["f() {", " int x = x
++;", "}"])); | |
10555 resolve(source); | |
10556 assertErrors(source, [CompileTimeErrorCode.REFERENCE_TO_DECLARED_VARIABLE_IN
_INITIALIZER]); | |
10557 verify([source]); | |
10558 } | |
10559 void test_referenceToDeclaredVariableInInitializer_unqualifiedInvocation() { | |
10560 Source source = addSource(EngineTestCase.createSource(["f() {", " var x = x
();", "}"])); | |
10561 resolve(source); | |
10562 assertErrors(source, [CompileTimeErrorCode.REFERENCE_TO_DECLARED_VARIABLE_IN
_INITIALIZER]); | |
10563 verify([source]); | |
10564 } | |
10565 void test_rethrowOutsideCatch() { | |
10566 Source source = addSource(EngineTestCase.createSource(["f() {", " rethrow;"
, "}"])); | |
10567 resolve(source); | |
10568 assertErrors(source, [CompileTimeErrorCode.RETHROW_OUTSIDE_CATCH]); | |
10569 verify([source]); | |
10570 } | |
10571 void test_returnInGenerativeConstructor() { | |
10572 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
return 0; }", "}"])); | |
10573 resolve(source); | |
10574 assertErrors(source, [CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR]
); | |
10575 verify([source]); | |
10576 } | |
10577 void test_returnInGenerativeConstructor_expressionFunctionBody() { | |
10578 Source source = addSource(EngineTestCase.createSource(["class A {", " A() =
> null;", "}"])); | |
10579 resolve(source); | |
10580 assertErrors(source, [CompileTimeErrorCode.RETURN_IN_GENERATIVE_CONSTRUCTOR]
); | |
10581 verify([source]); | |
10582 } | |
10583 void test_superInInvalidContext_binaryExpression() { | |
10584 Source source = addSource(EngineTestCase.createSource(["var v = super + 0;"]
)); | |
10585 resolve(source); | |
10586 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10587 } | |
10588 void test_superInInvalidContext_constructorFieldInitializer() { | |
10589 Source source = addSource(EngineTestCase.createSource([ | |
10590 "class A {", | |
10591 " m() {}", | |
10592 "}", | |
10593 "class B extends A {", | |
10594 " var f;", | |
10595 " B() : f = super.m();", | |
10596 "}"])); | |
10597 resolve(source); | |
10598 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10599 } | |
10600 void test_superInInvalidContext_factoryConstructor() { | |
10601 Source source = addSource(EngineTestCase.createSource([ | |
10602 "class A {", | |
10603 " m() {}", | |
10604 "}", | |
10605 "class B extends A {", | |
10606 " factory B() {", | |
10607 " super.m();", | |
10608 " }", | |
10609 "}"])); | |
10610 resolve(source); | |
10611 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10612 } | |
10613 void test_superInInvalidContext_instanceVariableInitializer() { | |
10614 Source source = addSource(EngineTestCase.createSource([ | |
10615 "class A {", | |
10616 " var a;", | |
10617 "}", | |
10618 "class B extends A {", | |
10619 " var b = super.a;", | |
10620 "}"])); | |
10621 resolve(source); | |
10622 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10623 } | |
10624 void test_superInInvalidContext_staticMethod() { | |
10625 Source source = addSource(EngineTestCase.createSource([ | |
10626 "class A {", | |
10627 " static m() {}", | |
10628 "}", | |
10629 "class B extends A {", | |
10630 " static n() { return super.m(); }", | |
10631 "}"])); | |
10632 resolve(source); | |
10633 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10634 } | |
10635 void test_superInInvalidContext_staticVariableInitializer() { | |
10636 Source source = addSource(EngineTestCase.createSource([ | |
10637 "class A {", | |
10638 " static int a = 0;", | |
10639 "}", | |
10640 "class B extends A {", | |
10641 " static int b = super.a;", | |
10642 "}"])); | |
10643 resolve(source); | |
10644 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10645 } | |
10646 void test_superInInvalidContext_topLevelFunction() { | |
10647 Source source = addSource(EngineTestCase.createSource(["f() {", " super.f()
;", "}"])); | |
10648 resolve(source); | |
10649 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10650 } | |
10651 void test_superInInvalidContext_topLevelVariableInitializer() { | |
10652 Source source = addSource(EngineTestCase.createSource(["var v = super.y;"]))
; | |
10653 resolve(source); | |
10654 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_INVALID_CONTEXT]); | |
10655 } | |
10656 void test_superInRedirectingConstructor_redirectionSuper() { | |
10657 Source source = addSource(EngineTestCase.createSource([ | |
10658 "class A {}", | |
10659 "class B {", | |
10660 " B() : this.name(), super();", | |
10661 " B.name() {}", | |
10662 "}"])); | |
10663 resolve(source); | |
10664 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR]
); | |
10665 verify([source]); | |
10666 } | |
10667 void test_superInRedirectingConstructor_superRedirection() { | |
10668 Source source = addSource(EngineTestCase.createSource([ | |
10669 "class A {}", | |
10670 "class B {", | |
10671 " B() : super(), this.name();", | |
10672 " B.name() {}", | |
10673 "}"])); | |
10674 resolve(source); | |
10675 assertErrors(source, [CompileTimeErrorCode.SUPER_IN_REDIRECTING_CONSTRUCTOR]
); | |
10676 verify([source]); | |
10677 } | |
10678 void test_typeAliasCannotReferenceItself_parameterType_named() { | |
10679 Source source = addSource(EngineTestCase.createSource(["typedef A({A a});"])
); | |
10680 resolve(source); | |
10681 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10682 verify([source]); | |
10683 } | |
10684 void test_typeAliasCannotReferenceItself_parameterType_positional() { | |
10685 Source source = addSource(EngineTestCase.createSource(["typedef A([A a]);"])
); | |
10686 resolve(source); | |
10687 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10688 verify([source]); | |
10689 } | |
10690 void test_typeAliasCannotReferenceItself_parameterType_required() { | |
10691 Source source = addSource(EngineTestCase.createSource(["typedef A(A a);"])); | |
10692 resolve(source); | |
10693 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10694 verify([source]); | |
10695 } | |
10696 void test_typeAliasCannotReferenceItself_parameterType_typeArgument() { | |
10697 Source source = addSource(EngineTestCase.createSource(["typedef A(List<A> a)
;"])); | |
10698 resolve(source); | |
10699 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10700 verify([source]); | |
10701 } | |
10702 void test_typeAliasCannotReferenceItself_returnClass_withTypeAlias() { | |
10703 Source source = addSource(EngineTestCase.createSource([ | |
10704 "typedef C A();", | |
10705 "typedef A B();", | |
10706 "class C {", | |
10707 " B a;", | |
10708 "}"])); | |
10709 resolve(source); | |
10710 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10711 verify([source]); | |
10712 } | |
10713 void test_typeAliasCannotReferenceItself_returnType() { | |
10714 Source source = addSource(EngineTestCase.createSource(["typedef A A();"])); | |
10715 resolve(source); | |
10716 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10717 verify([source]); | |
10718 } | |
10719 void test_typeAliasCannotReferenceItself_returnType_indirect() { | |
10720 Source source = addSource(EngineTestCase.createSource(["typedef B A();", "ty
pedef A B();"])); | |
10721 resolve(source); | |
10722 assertErrors(source, [ | |
10723 CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, | |
10724 CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]); | |
10725 verify([source]); | |
10726 } | |
10727 void test_typeAliasCannotReferenceItself_typeVariableBounds() { | |
10728 Source source = addSource(EngineTestCase.createSource(["typedef A<T extends
A>();"])); | |
10729 resolve(source); | |
10730 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10731 verify([source]); | |
10732 } | |
10733 void test_typeAliasCannotRereferenceItself_mixin_direct() { | |
10734 Source source = addSource(EngineTestCase.createSource(["class M = Object wit
h M;"])); | |
10735 resolve(source); | |
10736 assertErrors(source, [CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSEL
F]); | |
10737 verify([source]); | |
10738 } | |
10739 void test_typeAliasCannotRereferenceItself_mixin_indirect() { | |
10740 Source source = addSource(EngineTestCase.createSource([ | |
10741 "class M1 = Object with M2;", | |
10742 "class M2 = Object with M1;"])); | |
10743 resolve(source); | |
10744 assertErrors(source, [ | |
10745 CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF, | |
10746 CompileTimeErrorCode.TYPE_ALIAS_CANNOT_REFERENCE_ITSELF]); | |
10747 verify([source]); | |
10748 } | |
10749 void test_typeArgumentNotMatchingBounds_const() { | |
10750 Source source = addSource(EngineTestCase.createSource([ | |
10751 "class A {}", | |
10752 "class B {}", | |
10753 "class G<E extends A> {", | |
10754 " const G();", | |
10755 "}", | |
10756 "f() { return const G<B>(); }"])); | |
10757 resolve(source); | |
10758 assertErrors(source, [CompileTimeErrorCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
]); | |
10759 verify([source]); | |
10760 } | |
10761 void test_undefinedClass_const() { | |
10762 Source source = addSource(EngineTestCase.createSource(["f() {", " return co
nst A();", "}"])); | |
10763 resolve(source); | |
10764 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CLASS]); | |
10765 verify([source]); | |
10766 } | |
10767 void test_undefinedConstructorInInitializer_explicit_named() { | |
10768 Source source = addSource(EngineTestCase.createSource([ | |
10769 "class A {}", | |
10770 "class B extends A {", | |
10771 " B() : super.named();", | |
10772 "}"])); | |
10773 resolve(source); | |
10774 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALI
ZER]); | |
10775 } | |
10776 void test_undefinedConstructorInInitializer_explicit_unnamed() { | |
10777 Source source = addSource(EngineTestCase.createSource([ | |
10778 "class A {", | |
10779 " A.named() {}", | |
10780 "}", | |
10781 "class B extends A {", | |
10782 " B() : super();", | |
10783 "}"])); | |
10784 resolve(source); | |
10785 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALI
ZER_DEFAULT]); | |
10786 verify([source]); | |
10787 } | |
10788 void test_undefinedConstructorInInitializer_implicit() { | |
10789 Source source = addSource(EngineTestCase.createSource([ | |
10790 "class A {", | |
10791 " A.named() {}", | |
10792 "}", | |
10793 "class B extends A {", | |
10794 " B();", | |
10795 "}"])); | |
10796 resolve(source); | |
10797 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALI
ZER_DEFAULT]); | |
10798 verify([source]); | |
10799 } | |
10800 void test_undefinedFunction() { | |
10801 Source source = addSource(EngineTestCase.createSource(["void f() {", " g();
", "}"])); | |
10802 resolve(source); | |
10803 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_FUNCTION]); | |
10804 } | |
10805 void test_undefinedFunction_hasImportPrefix() { | |
10806 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
f;", "main() { return f(); }"])); | |
10807 addSource2("/lib.dart", "library lib;"); | |
10808 resolve(source); | |
10809 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_FUNCTION]); | |
10810 } | |
10811 void test_undefinedFunction_inCatch() { | |
10812 Source source = addSource(EngineTestCase.createSource([ | |
10813 "void f() {", | |
10814 " try {", | |
10815 " } on Object {", | |
10816 " g();", | |
10817 " }", | |
10818 "}"])); | |
10819 resolve(source); | |
10820 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_FUNCTION]); | |
10821 } | |
10822 void test_undefinedNamedParameter() { | |
10823 Source source = addSource(EngineTestCase.createSource([ | |
10824 "class A {", | |
10825 " const A();", | |
10826 "}", | |
10827 "main() {", | |
10828 " const A(p: 0);", | |
10829 "}"])); | |
10830 resolve(source); | |
10831 assertErrors(source, [CompileTimeErrorCode.UNDEFINED_NAMED_PARAMETER]); | |
10832 } | |
10833 void test_uriDoesNotExist_export() { | |
10834 Source source = addSource(EngineTestCase.createSource(["export 'unknown.dart
';"])); | |
10835 resolve(source); | |
10836 assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]); | |
10837 } | |
10838 void test_uriDoesNotExist_import() { | |
10839 Source source = addSource(EngineTestCase.createSource(["import 'unknown.dart
';"])); | |
10840 resolve(source); | |
10841 assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]); | |
10842 } | |
10843 void test_uriDoesNotExist_part() { | |
10844 Source source = addSource(EngineTestCase.createSource(["part 'unknown.dart';
"])); | |
10845 resolve(source); | |
10846 assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]); | |
10847 } | |
10848 void test_uriWithInterpolation_constant() { | |
10849 Source source = addSource(EngineTestCase.createSource(["import 'stuff_\$plat
form.dart';"])); | |
10850 resolve(source); | |
10851 assertErrors(source, [ | |
10852 CompileTimeErrorCode.URI_WITH_INTERPOLATION, | |
10853 StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
10854 } | |
10855 void test_uriWithInterpolation_nonConstant() { | |
10856 Source source = addSource(EngineTestCase.createSource(["library lib;", "part
'\${'a'}.dart';"])); | |
10857 resolve(source); | |
10858 assertErrors(source, [CompileTimeErrorCode.URI_WITH_INTERPOLATION]); | |
10859 } | |
10860 void test_wrongNumberOfParametersForOperator_minus() { | |
10861 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor -(a, b) {}", "}"])); | |
10862 resolve(source); | |
10863 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OP
ERATOR_MINUS]); | |
10864 verify([source]); | |
10865 reset(); | |
10866 } | |
10867 void test_wrongNumberOfParametersForOperator_tilde() { | |
10868 check_wrongNumberOfParametersForOperator("~", "a"); | |
10869 check_wrongNumberOfParametersForOperator("~", "a, b"); | |
10870 } | |
10871 void test_wrongNumberOfParametersForOperator1() { | |
10872 check_wrongNumberOfParametersForOperator1("<"); | |
10873 check_wrongNumberOfParametersForOperator1(">"); | |
10874 check_wrongNumberOfParametersForOperator1("<="); | |
10875 check_wrongNumberOfParametersForOperator1(">="); | |
10876 check_wrongNumberOfParametersForOperator1("+"); | |
10877 check_wrongNumberOfParametersForOperator1("/"); | |
10878 check_wrongNumberOfParametersForOperator1("~/"); | |
10879 check_wrongNumberOfParametersForOperator1("*"); | |
10880 check_wrongNumberOfParametersForOperator1("%"); | |
10881 check_wrongNumberOfParametersForOperator1("|"); | |
10882 check_wrongNumberOfParametersForOperator1("^"); | |
10883 check_wrongNumberOfParametersForOperator1("&"); | |
10884 check_wrongNumberOfParametersForOperator1("<<"); | |
10885 check_wrongNumberOfParametersForOperator1(">>"); | |
10886 check_wrongNumberOfParametersForOperator1("[]"); | |
10887 } | |
10888 void test_wrongNumberOfParametersForSetter_function_named() { | |
10889 Source source = addSource("set x({p}) {}"); | |
10890 resolve(source); | |
10891 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10892 verify([source]); | |
10893 } | |
10894 void test_wrongNumberOfParametersForSetter_function_optional() { | |
10895 Source source = addSource("set x([p]) {}"); | |
10896 resolve(source); | |
10897 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10898 verify([source]); | |
10899 } | |
10900 void test_wrongNumberOfParametersForSetter_function_tooFew() { | |
10901 Source source = addSource("set x() {}"); | |
10902 resolve(source); | |
10903 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10904 verify([source]); | |
10905 } | |
10906 void test_wrongNumberOfParametersForSetter_function_tooMany() { | |
10907 Source source = addSource("set x(a, b) {}"); | |
10908 resolve(source); | |
10909 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10910 verify([source]); | |
10911 } | |
10912 void test_wrongNumberOfParametersForSetter_method_named() { | |
10913 Source source = addSource(EngineTestCase.createSource(["class A {", " set x
({p}) {}", "}"])); | |
10914 resolve(source); | |
10915 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10916 verify([source]); | |
10917 } | |
10918 void test_wrongNumberOfParametersForSetter_method_optional() { | |
10919 Source source = addSource(EngineTestCase.createSource(["class A {", " set x
([p]) {}", "}"])); | |
10920 resolve(source); | |
10921 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10922 verify([source]); | |
10923 } | |
10924 void test_wrongNumberOfParametersForSetter_method_tooFew() { | |
10925 Source source = addSource(EngineTestCase.createSource(["class A {", " set x
() {}", "}"])); | |
10926 resolve(source); | |
10927 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10928 verify([source]); | |
10929 } | |
10930 void test_wrongNumberOfParametersForSetter_method_tooMany() { | |
10931 Source source = addSource(EngineTestCase.createSource(["class A {", " set x
(a, b) {}", "}"])); | |
10932 resolve(source); | |
10933 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SE
TTER]); | |
10934 verify([source]); | |
10935 } | |
10936 void check_constEvalThrowsException_binary_null(String expr, bool resolved) { | |
10937 Source source = addSource("const C = ${expr};"); | |
10938 resolve(source); | |
10939 if (resolved) { | |
10940 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]); | |
10941 verify([source]); | |
10942 } else { | |
10943 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION]); | |
10944 } | |
10945 reset(); | |
10946 } | |
10947 void check_constEvalTypeBool_withParameter_binary(String expr) { | |
10948 Source source = addSource(EngineTestCase.createSource([ | |
10949 "class A {", | |
10950 " final a;", | |
10951 " const A(bool p) : a = ${expr};", | |
10952 "}"])); | |
10953 resolve(source); | |
10954 assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_BOOL]); | |
10955 verify([source]); | |
10956 reset(); | |
10957 } | |
10958 void check_constEvalTypeInt_withParameter_binary(String expr) { | |
10959 Source source = addSource(EngineTestCase.createSource([ | |
10960 "class A {", | |
10961 " final a;", | |
10962 " const A(int p) : a = ${expr};", | |
10963 "}"])); | |
10964 resolve(source); | |
10965 assertErrors(source, [ | |
10966 CompileTimeErrorCode.CONST_EVAL_TYPE_INT, | |
10967 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
10968 verify([source]); | |
10969 reset(); | |
10970 } | |
10971 void check_constEvalTypeNum_withParameter_binary(String expr) { | |
10972 Source source = addSource(EngineTestCase.createSource([ | |
10973 "class A {", | |
10974 " final a;", | |
10975 " const A(num p) : a = ${expr};", | |
10976 "}"])); | |
10977 resolve(source); | |
10978 assertErrors(source, [ | |
10979 CompileTimeErrorCode.CONST_EVAL_TYPE_NUM, | |
10980 StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
10981 verify([source]); | |
10982 reset(); | |
10983 } | |
10984 void check_wrongNumberOfParametersForOperator(String name, String parameters)
{ | |
10985 Source source = addSource(EngineTestCase.createSource(["class A {", " opera
tor ${name}(${parameters}) {}", "}"])); | |
10986 resolve(source); | |
10987 assertErrors(source, [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OP
ERATOR]); | |
10988 verify([source]); | |
10989 reset(); | |
10990 } | |
10991 void check_wrongNumberOfParametersForOperator1(String name) { | |
10992 check_wrongNumberOfParametersForOperator(name, ""); | |
10993 check_wrongNumberOfParametersForOperator(name, "a, b"); | |
10994 } | |
10995 static dartSuite() { | |
10996 _ut.group('CompileTimeErrorCodeTest', () { | |
10997 _ut.test('test_ambiguousExport', () { | |
10998 final __test = new CompileTimeErrorCodeTest(); | |
10999 runJUnitTest(__test, __test.test_ambiguousExport); | |
11000 }); | |
11001 _ut.test('test_ambiguousImport_function', () { | |
11002 final __test = new CompileTimeErrorCodeTest(); | |
11003 runJUnitTest(__test, __test.test_ambiguousImport_function); | |
11004 }); | |
11005 _ut.test('test_argumentDefinitionTestNonParameter', () { | |
11006 final __test = new CompileTimeErrorCodeTest(); | |
11007 runJUnitTest(__test, __test.test_argumentDefinitionTestNonParameter); | |
11008 }); | |
11009 _ut.test('test_builtInIdentifierAsMixinName_classTypeAlias', () { | |
11010 final __test = new CompileTimeErrorCodeTest(); | |
11011 runJUnitTest(__test, __test.test_builtInIdentifierAsMixinName_classTypeA
lias); | |
11012 }); | |
11013 _ut.test('test_builtInIdentifierAsTypeName', () { | |
11014 final __test = new CompileTimeErrorCodeTest(); | |
11015 runJUnitTest(__test, __test.test_builtInIdentifierAsTypeName); | |
11016 }); | |
11017 _ut.test('test_builtInIdentifierAsTypeParameterName', () { | |
11018 final __test = new CompileTimeErrorCodeTest(); | |
11019 runJUnitTest(__test, __test.test_builtInIdentifierAsTypeParameterName); | |
11020 }); | |
11021 _ut.test('test_builtInIdentifierAsType_formalParameter_field', () { | |
11022 final __test = new CompileTimeErrorCodeTest(); | |
11023 runJUnitTest(__test, __test.test_builtInIdentifierAsType_formalParameter
_field); | |
11024 }); | |
11025 _ut.test('test_builtInIdentifierAsType_formalParameter_simple', () { | |
11026 final __test = new CompileTimeErrorCodeTest(); | |
11027 runJUnitTest(__test, __test.test_builtInIdentifierAsType_formalParameter
_simple); | |
11028 }); | |
11029 _ut.test('test_builtInIdentifierAsType_variableDeclaration', () { | |
11030 final __test = new CompileTimeErrorCodeTest(); | |
11031 runJUnitTest(__test, __test.test_builtInIdentifierAsType_variableDeclara
tion); | |
11032 }); | |
11033 _ut.test('test_builtInIdentifierAsTypedefName_functionTypeAlias', () { | |
11034 final __test = new CompileTimeErrorCodeTest(); | |
11035 runJUnitTest(__test, __test.test_builtInIdentifierAsTypedefName_function
TypeAlias); | |
11036 }); | |
11037 _ut.test('test_caseExpressionTypeImplementsEquals', () { | |
11038 final __test = new CompileTimeErrorCodeTest(); | |
11039 runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals); | |
11040 }); | |
11041 _ut.test('test_conflictingConstructorNameAndMember_field', () { | |
11042 final __test = new CompileTimeErrorCodeTest(); | |
11043 runJUnitTest(__test, __test.test_conflictingConstructorNameAndMember_fie
ld); | |
11044 }); | |
11045 _ut.test('test_conflictingConstructorNameAndMember_method', () { | |
11046 final __test = new CompileTimeErrorCodeTest(); | |
11047 runJUnitTest(__test, __test.test_conflictingConstructorNameAndMember_met
hod); | |
11048 }); | |
11049 _ut.test('test_conflictingGetterAndMethod_field_method', () { | |
11050 final __test = new CompileTimeErrorCodeTest(); | |
11051 runJUnitTest(__test, __test.test_conflictingGetterAndMethod_field_method
); | |
11052 }); | |
11053 _ut.test('test_conflictingGetterAndMethod_getter_method', () { | |
11054 final __test = new CompileTimeErrorCodeTest(); | |
11055 runJUnitTest(__test, __test.test_conflictingGetterAndMethod_getter_metho
d); | |
11056 }); | |
11057 _ut.test('test_conflictingGetterAndMethod_method_field', () { | |
11058 final __test = new CompileTimeErrorCodeTest(); | |
11059 runJUnitTest(__test, __test.test_conflictingGetterAndMethod_method_field
); | |
11060 }); | |
11061 _ut.test('test_conflictingGetterAndMethod_method_getter', () { | |
11062 final __test = new CompileTimeErrorCodeTest(); | |
11063 runJUnitTest(__test, __test.test_conflictingGetterAndMethod_method_gette
r); | |
11064 }); | |
11065 _ut.test('test_conflictingTypeVariableAndClass', () { | |
11066 final __test = new CompileTimeErrorCodeTest(); | |
11067 runJUnitTest(__test, __test.test_conflictingTypeVariableAndClass); | |
11068 }); | |
11069 _ut.test('test_conflictingTypeVariableAndMember_field', () { | |
11070 final __test = new CompileTimeErrorCodeTest(); | |
11071 runJUnitTest(__test, __test.test_conflictingTypeVariableAndMember_field)
; | |
11072 }); | |
11073 _ut.test('test_conflictingTypeVariableAndMember_getter', () { | |
11074 final __test = new CompileTimeErrorCodeTest(); | |
11075 runJUnitTest(__test, __test.test_conflictingTypeVariableAndMember_getter
); | |
11076 }); | |
11077 _ut.test('test_conflictingTypeVariableAndMember_method', () { | |
11078 final __test = new CompileTimeErrorCodeTest(); | |
11079 runJUnitTest(__test, __test.test_conflictingTypeVariableAndMember_method
); | |
11080 }); | |
11081 _ut.test('test_conflictingTypeVariableAndMember_method_static', () { | |
11082 final __test = new CompileTimeErrorCodeTest(); | |
11083 runJUnitTest(__test, __test.test_conflictingTypeVariableAndMember_method
_static); | |
11084 }); | |
11085 _ut.test('test_conflictingTypeVariableAndMember_setter', () { | |
11086 final __test = new CompileTimeErrorCodeTest(); | |
11087 runJUnitTest(__test, __test.test_conflictingTypeVariableAndMember_setter
); | |
11088 }); | |
11089 _ut.test('test_constConstructorWithNonConstSuper_explicit', () { | |
11090 final __test = new CompileTimeErrorCodeTest(); | |
11091 runJUnitTest(__test, __test.test_constConstructorWithNonConstSuper_expli
cit); | |
11092 }); | |
11093 _ut.test('test_constConstructorWithNonConstSuper_implicit', () { | |
11094 final __test = new CompileTimeErrorCodeTest(); | |
11095 runJUnitTest(__test, __test.test_constConstructorWithNonConstSuper_impli
cit); | |
11096 }); | |
11097 _ut.test('test_constConstructorWithNonFinalField_mixin', () { | |
11098 final __test = new CompileTimeErrorCodeTest(); | |
11099 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_mixin
); | |
11100 }); | |
11101 _ut.test('test_constConstructorWithNonFinalField_super', () { | |
11102 final __test = new CompileTimeErrorCodeTest(); | |
11103 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_super
); | |
11104 }); | |
11105 _ut.test('test_constConstructorWithNonFinalField_this', () { | |
11106 final __test = new CompileTimeErrorCodeTest(); | |
11107 runJUnitTest(__test, __test.test_constConstructorWithNonFinalField_this)
; | |
11108 }); | |
11109 _ut.test('test_constEvalThrowsException_binaryMinus_null', () { | |
11110 final __test = new CompileTimeErrorCodeTest(); | |
11111 runJUnitTest(__test, __test.test_constEvalThrowsException_binaryMinus_nu
ll); | |
11112 }); | |
11113 _ut.test('test_constEvalThrowsException_binaryPlus_null', () { | |
11114 final __test = new CompileTimeErrorCodeTest(); | |
11115 runJUnitTest(__test, __test.test_constEvalThrowsException_binaryPlus_nul
l); | |
11116 }); | |
11117 _ut.test('test_constEvalThrowsException_divisionByZero', () { | |
11118 final __test = new CompileTimeErrorCodeTest(); | |
11119 runJUnitTest(__test, __test.test_constEvalThrowsException_divisionByZero
); | |
11120 }); | |
11121 _ut.test('test_constEvalThrowsException_unaryBitNot_null', () { | |
11122 final __test = new CompileTimeErrorCodeTest(); | |
11123 runJUnitTest(__test, __test.test_constEvalThrowsException_unaryBitNot_nu
ll); | |
11124 }); | |
11125 _ut.test('test_constEvalThrowsException_unaryNegated_null', () { | |
11126 final __test = new CompileTimeErrorCodeTest(); | |
11127 runJUnitTest(__test, __test.test_constEvalThrowsException_unaryNegated_n
ull); | |
11128 }); | |
11129 _ut.test('test_constEvalThrowsException_unaryNot_null', () { | |
11130 final __test = new CompileTimeErrorCodeTest(); | |
11131 runJUnitTest(__test, __test.test_constEvalThrowsException_unaryNot_null)
; | |
11132 }); | |
11133 _ut.test('test_constEvalTypeBoolNumString_equal', () { | |
11134 final __test = new CompileTimeErrorCodeTest(); | |
11135 runJUnitTest(__test, __test.test_constEvalTypeBoolNumString_equal); | |
11136 }); | |
11137 _ut.test('test_constEvalTypeBoolNumString_notEqual', () { | |
11138 final __test = new CompileTimeErrorCodeTest(); | |
11139 runJUnitTest(__test, __test.test_constEvalTypeBoolNumString_notEqual); | |
11140 }); | |
11141 _ut.test('test_constEvalTypeBool_binary', () { | |
11142 final __test = new CompileTimeErrorCodeTest(); | |
11143 runJUnitTest(__test, __test.test_constEvalTypeBool_binary); | |
11144 }); | |
11145 _ut.test('test_constEvalTypeBool_binary_leftTrue', () { | |
11146 final __test = new CompileTimeErrorCodeTest(); | |
11147 runJUnitTest(__test, __test.test_constEvalTypeBool_binary_leftTrue); | |
11148 }); | |
11149 _ut.test('test_constEvalTypeInt_binary', () { | |
11150 final __test = new CompileTimeErrorCodeTest(); | |
11151 runJUnitTest(__test, __test.test_constEvalTypeInt_binary); | |
11152 }); | |
11153 _ut.test('test_constEvalTypeNum_binary', () { | |
11154 final __test = new CompileTimeErrorCodeTest(); | |
11155 runJUnitTest(__test, __test.test_constEvalTypeNum_binary); | |
11156 }); | |
11157 _ut.test('test_constEvalTypeNum_plus_String', () { | |
11158 final __test = new CompileTimeErrorCodeTest(); | |
11159 runJUnitTest(__test, __test.test_constEvalTypeNum_plus_String); | |
11160 }); | |
11161 _ut.test('test_constEval_newInstance_constConstructor', () { | |
11162 final __test = new CompileTimeErrorCodeTest(); | |
11163 runJUnitTest(__test, __test.test_constEval_newInstance_constConstructor)
; | |
11164 }); | |
11165 _ut.test('test_constEval_propertyExtraction_targetNotConst', () { | |
11166 final __test = new CompileTimeErrorCodeTest(); | |
11167 runJUnitTest(__test, __test.test_constEval_propertyExtraction_targetNotC
onst); | |
11168 }); | |
11169 _ut.test('test_constFormalParameter_fieldFormalParameter', () { | |
11170 final __test = new CompileTimeErrorCodeTest(); | |
11171 runJUnitTest(__test, __test.test_constFormalParameter_fieldFormalParamet
er); | |
11172 }); | |
11173 _ut.test('test_constFormalParameter_simpleFormalParameter', () { | |
11174 final __test = new CompileTimeErrorCodeTest(); | |
11175 runJUnitTest(__test, __test.test_constFormalParameter_simpleFormalParame
ter); | |
11176 }); | |
11177 _ut.test('test_constInitializedWithNonConstValue', () { | |
11178 final __test = new CompileTimeErrorCodeTest(); | |
11179 runJUnitTest(__test, __test.test_constInitializedWithNonConstValue); | |
11180 }); | |
11181 _ut.test('test_constInitializedWithNonConstValue_missingConstInListLiteral
', () { | |
11182 final __test = new CompileTimeErrorCodeTest(); | |
11183 runJUnitTest(__test, __test.test_constInitializedWithNonConstValue_missi
ngConstInListLiteral); | |
11184 }); | |
11185 _ut.test('test_constInitializedWithNonConstValue_missingConstInMapLiteral'
, () { | |
11186 final __test = new CompileTimeErrorCodeTest(); | |
11187 runJUnitTest(__test, __test.test_constInitializedWithNonConstValue_missi
ngConstInMapLiteral); | |
11188 }); | |
11189 _ut.test('test_constInstanceField', () { | |
11190 final __test = new CompileTimeErrorCodeTest(); | |
11191 runJUnitTest(__test, __test.test_constInstanceField); | |
11192 }); | |
11193 _ut.test('test_constMapKeyTypeImplementsEquals_direct', () { | |
11194 final __test = new CompileTimeErrorCodeTest(); | |
11195 runJUnitTest(__test, __test.test_constMapKeyTypeImplementsEquals_direct)
; | |
11196 }); | |
11197 _ut.test('test_constMapKeyTypeImplementsEquals_super', () { | |
11198 final __test = new CompileTimeErrorCodeTest(); | |
11199 runJUnitTest(__test, __test.test_constMapKeyTypeImplementsEquals_super); | |
11200 }); | |
11201 _ut.test('test_constWithInvalidTypeParameters', () { | |
11202 final __test = new CompileTimeErrorCodeTest(); | |
11203 runJUnitTest(__test, __test.test_constWithInvalidTypeParameters); | |
11204 }); | |
11205 _ut.test('test_constWithInvalidTypeParameters_tooFew', () { | |
11206 final __test = new CompileTimeErrorCodeTest(); | |
11207 runJUnitTest(__test, __test.test_constWithInvalidTypeParameters_tooFew); | |
11208 }); | |
11209 _ut.test('test_constWithInvalidTypeParameters_tooMany', () { | |
11210 final __test = new CompileTimeErrorCodeTest(); | |
11211 runJUnitTest(__test, __test.test_constWithInvalidTypeParameters_tooMany)
; | |
11212 }); | |
11213 _ut.test('test_constWithNonConst', () { | |
11214 final __test = new CompileTimeErrorCodeTest(); | |
11215 runJUnitTest(__test, __test.test_constWithNonConst); | |
11216 }); | |
11217 _ut.test('test_constWithNonConstantArgument_annotation', () { | |
11218 final __test = new CompileTimeErrorCodeTest(); | |
11219 runJUnitTest(__test, __test.test_constWithNonConstantArgument_annotation
); | |
11220 }); | |
11221 _ut.test('test_constWithNonConstantArgument_instanceCreation', () { | |
11222 final __test = new CompileTimeErrorCodeTest(); | |
11223 runJUnitTest(__test, __test.test_constWithNonConstantArgument_instanceCr
eation); | |
11224 }); | |
11225 _ut.test('test_constWithNonType', () { | |
11226 final __test = new CompileTimeErrorCodeTest(); | |
11227 runJUnitTest(__test, __test.test_constWithNonType); | |
11228 }); | |
11229 _ut.test('test_constWithNonType_fromLibrary', () { | |
11230 final __test = new CompileTimeErrorCodeTest(); | |
11231 runJUnitTest(__test, __test.test_constWithNonType_fromLibrary); | |
11232 }); | |
11233 _ut.test('test_constWithTypeParameters_direct', () { | |
11234 final __test = new CompileTimeErrorCodeTest(); | |
11235 runJUnitTest(__test, __test.test_constWithTypeParameters_direct); | |
11236 }); | |
11237 _ut.test('test_constWithTypeParameters_indirect', () { | |
11238 final __test = new CompileTimeErrorCodeTest(); | |
11239 runJUnitTest(__test, __test.test_constWithTypeParameters_indirect); | |
11240 }); | |
11241 _ut.test('test_constWithUndefinedConstructor', () { | |
11242 final __test = new CompileTimeErrorCodeTest(); | |
11243 runJUnitTest(__test, __test.test_constWithUndefinedConstructor); | |
11244 }); | |
11245 _ut.test('test_constWithUndefinedConstructorDefault', () { | |
11246 final __test = new CompileTimeErrorCodeTest(); | |
11247 runJUnitTest(__test, __test.test_constWithUndefinedConstructorDefault); | |
11248 }); | |
11249 _ut.test('test_defaultValueInFunctionTypeAlias', () { | |
11250 final __test = new CompileTimeErrorCodeTest(); | |
11251 runJUnitTest(__test, __test.test_defaultValueInFunctionTypeAlias); | |
11252 }); | |
11253 _ut.test('test_defaultValueInFunctionTypedParameter_named', () { | |
11254 final __test = new CompileTimeErrorCodeTest(); | |
11255 runJUnitTest(__test, __test.test_defaultValueInFunctionTypedParameter_na
med); | |
11256 }); | |
11257 _ut.test('test_defaultValueInFunctionTypedParameter_optional', () { | |
11258 final __test = new CompileTimeErrorCodeTest(); | |
11259 runJUnitTest(__test, __test.test_defaultValueInFunctionTypedParameter_op
tional); | |
11260 }); | |
11261 _ut.test('test_defaultValueInRedirectingFactoryConstructor', () { | |
11262 final __test = new CompileTimeErrorCodeTest(); | |
11263 runJUnitTest(__test, __test.test_defaultValueInRedirectingFactoryConstru
ctor); | |
11264 }); | |
11265 _ut.test('test_duplicateConstructorName_named', () { | |
11266 final __test = new CompileTimeErrorCodeTest(); | |
11267 runJUnitTest(__test, __test.test_duplicateConstructorName_named); | |
11268 }); | |
11269 _ut.test('test_duplicateConstructorName_unnamed', () { | |
11270 final __test = new CompileTimeErrorCodeTest(); | |
11271 runJUnitTest(__test, __test.test_duplicateConstructorName_unnamed); | |
11272 }); | |
11273 _ut.test('test_duplicateDefinition', () { | |
11274 final __test = new CompileTimeErrorCodeTest(); | |
11275 runJUnitTest(__test, __test.test_duplicateDefinition); | |
11276 }); | |
11277 _ut.test('test_duplicateDefinitionInheritance_instanceGetterAbstract_stati
cGetter', () { | |
11278 final __test = new CompileTimeErrorCodeTest(); | |
11279 runJUnitTest(__test, __test.test_duplicateDefinitionInheritance_instance
GetterAbstract_staticGetter); | |
11280 }); | |
11281 _ut.test('test_duplicateDefinitionInheritance_instanceGetter_staticGetter'
, () { | |
11282 final __test = new CompileTimeErrorCodeTest(); | |
11283 runJUnitTest(__test, __test.test_duplicateDefinitionInheritance_instance
Getter_staticGetter); | |
11284 }); | |
11285 _ut.test('test_duplicateDefinitionInheritance_instanceMethodAbstract_stati
cMethod', () { | |
11286 final __test = new CompileTimeErrorCodeTest(); | |
11287 runJUnitTest(__test, __test.test_duplicateDefinitionInheritance_instance
MethodAbstract_staticMethod); | |
11288 }); | |
11289 _ut.test('test_duplicateDefinitionInheritance_instanceMethod_staticMethod'
, () { | |
11290 final __test = new CompileTimeErrorCodeTest(); | |
11291 runJUnitTest(__test, __test.test_duplicateDefinitionInheritance_instance
Method_staticMethod); | |
11292 }); | |
11293 _ut.test('test_duplicateDefinitionInheritance_instanceSetterAbstract_stati
cSetter', () { | |
11294 final __test = new CompileTimeErrorCodeTest(); | |
11295 runJUnitTest(__test, __test.test_duplicateDefinitionInheritance_instance
SetterAbstract_staticSetter); | |
11296 }); | |
11297 _ut.test('test_duplicateDefinitionInheritance_instanceSetter_staticSetter'
, () { | |
11298 final __test = new CompileTimeErrorCodeTest(); | |
11299 runJUnitTest(__test, __test.test_duplicateDefinitionInheritance_instance
Setter_staticSetter); | |
11300 }); | |
11301 _ut.test('test_duplicateDefinition_acrossLibraries', () { | |
11302 final __test = new CompileTimeErrorCodeTest(); | |
11303 runJUnitTest(__test, __test.test_duplicateDefinition_acrossLibraries); | |
11304 }); | |
11305 _ut.test('test_duplicateDefinition_classMembers_fields', () { | |
11306 final __test = new CompileTimeErrorCodeTest(); | |
11307 runJUnitTest(__test, __test.test_duplicateDefinition_classMembers_fields
); | |
11308 }); | |
11309 _ut.test('test_duplicateDefinition_classMembers_fields_oneStatic', () { | |
11310 final __test = new CompileTimeErrorCodeTest(); | |
11311 runJUnitTest(__test, __test.test_duplicateDefinition_classMembers_fields
_oneStatic); | |
11312 }); | |
11313 _ut.test('test_duplicateDefinition_classMembers_methods', () { | |
11314 final __test = new CompileTimeErrorCodeTest(); | |
11315 runJUnitTest(__test, __test.test_duplicateDefinition_classMembers_method
s); | |
11316 }); | |
11317 _ut.test('test_duplicateDefinition_localFields', () { | |
11318 final __test = new CompileTimeErrorCodeTest(); | |
11319 runJUnitTest(__test, __test.test_duplicateDefinition_localFields); | |
11320 }); | |
11321 _ut.test('test_duplicateDefinition_parameterWithFunctionName_local', () { | |
11322 final __test = new CompileTimeErrorCodeTest(); | |
11323 runJUnitTest(__test, __test.test_duplicateDefinition_parameterWithFuncti
onName_local); | |
11324 }); | |
11325 _ut.test('test_duplicateDefinition_parameterWithFunctionName_topLevel', ()
{ | |
11326 final __test = new CompileTimeErrorCodeTest(); | |
11327 runJUnitTest(__test, __test.test_duplicateDefinition_parameterWithFuncti
onName_topLevel); | |
11328 }); | |
11329 _ut.test('test_duplicateNamedArgument', () { | |
11330 final __test = new CompileTimeErrorCodeTest(); | |
11331 runJUnitTest(__test, __test.test_duplicateNamedArgument); | |
11332 }); | |
11333 _ut.test('test_exportInternalLibrary', () { | |
11334 final __test = new CompileTimeErrorCodeTest(); | |
11335 runJUnitTest(__test, __test.test_exportInternalLibrary); | |
11336 }); | |
11337 _ut.test('test_exportOfNonLibrary', () { | |
11338 final __test = new CompileTimeErrorCodeTest(); | |
11339 runJUnitTest(__test, __test.test_exportOfNonLibrary); | |
11340 }); | |
11341 _ut.test('test_extendsDisallowedClass_Null', () { | |
11342 final __test = new CompileTimeErrorCodeTest(); | |
11343 runJUnitTest(__test, __test.test_extendsDisallowedClass_Null); | |
11344 }); | |
11345 _ut.test('test_extendsDisallowedClass_String', () { | |
11346 final __test = new CompileTimeErrorCodeTest(); | |
11347 runJUnitTest(__test, __test.test_extendsDisallowedClass_String); | |
11348 }); | |
11349 _ut.test('test_extendsDisallowedClass_bool', () { | |
11350 final __test = new CompileTimeErrorCodeTest(); | |
11351 runJUnitTest(__test, __test.test_extendsDisallowedClass_bool); | |
11352 }); | |
11353 _ut.test('test_extendsDisallowedClass_double', () { | |
11354 final __test = new CompileTimeErrorCodeTest(); | |
11355 runJUnitTest(__test, __test.test_extendsDisallowedClass_double); | |
11356 }); | |
11357 _ut.test('test_extendsDisallowedClass_int', () { | |
11358 final __test = new CompileTimeErrorCodeTest(); | |
11359 runJUnitTest(__test, __test.test_extendsDisallowedClass_int); | |
11360 }); | |
11361 _ut.test('test_extendsDisallowedClass_num', () { | |
11362 final __test = new CompileTimeErrorCodeTest(); | |
11363 runJUnitTest(__test, __test.test_extendsDisallowedClass_num); | |
11364 }); | |
11365 _ut.test('test_extendsNonClass_class', () { | |
11366 final __test = new CompileTimeErrorCodeTest(); | |
11367 runJUnitTest(__test, __test.test_extendsNonClass_class); | |
11368 }); | |
11369 _ut.test('test_extendsNonClass_dynamic', () { | |
11370 final __test = new CompileTimeErrorCodeTest(); | |
11371 runJUnitTest(__test, __test.test_extendsNonClass_dynamic); | |
11372 }); | |
11373 _ut.test('test_extraPositionalArguments_const', () { | |
11374 final __test = new CompileTimeErrorCodeTest(); | |
11375 runJUnitTest(__test, __test.test_extraPositionalArguments_const); | |
11376 }); | |
11377 _ut.test('test_extraPositionalArguments_const_super', () { | |
11378 final __test = new CompileTimeErrorCodeTest(); | |
11379 runJUnitTest(__test, __test.test_extraPositionalArguments_const_super); | |
11380 }); | |
11381 _ut.test('test_fieldInitializedByMultipleInitializers', () { | |
11382 final __test = new CompileTimeErrorCodeTest(); | |
11383 runJUnitTest(__test, __test.test_fieldInitializedByMultipleInitializers)
; | |
11384 }); | |
11385 _ut.test('test_fieldInitializedByMultipleInitializers_multipleInits', () { | |
11386 final __test = new CompileTimeErrorCodeTest(); | |
11387 runJUnitTest(__test, __test.test_fieldInitializedByMultipleInitializers_
multipleInits); | |
11388 }); | |
11389 _ut.test('test_fieldInitializedByMultipleInitializers_multipleNames', () { | |
11390 final __test = new CompileTimeErrorCodeTest(); | |
11391 runJUnitTest(__test, __test.test_fieldInitializedByMultipleInitializers_
multipleNames); | |
11392 }); | |
11393 _ut.test('test_fieldInitializedInParameterAndInitializer', () { | |
11394 final __test = new CompileTimeErrorCodeTest(); | |
11395 runJUnitTest(__test, __test.test_fieldInitializedInParameterAndInitializ
er); | |
11396 }); | |
11397 _ut.test('test_fieldInitializerFactoryConstructor', () { | |
11398 final __test = new CompileTimeErrorCodeTest(); | |
11399 runJUnitTest(__test, __test.test_fieldInitializerFactoryConstructor); | |
11400 }); | |
11401 _ut.test('test_fieldInitializerNotAssignable', () { | |
11402 final __test = new CompileTimeErrorCodeTest(); | |
11403 runJUnitTest(__test, __test.test_fieldInitializerNotAssignable); | |
11404 }); | |
11405 _ut.test('test_fieldInitializerOutsideConstructor', () { | |
11406 final __test = new CompileTimeErrorCodeTest(); | |
11407 runJUnitTest(__test, __test.test_fieldInitializerOutsideConstructor); | |
11408 }); | |
11409 _ut.test('test_fieldInitializerOutsideConstructor_defaultParameter', () { | |
11410 final __test = new CompileTimeErrorCodeTest(); | |
11411 runJUnitTest(__test, __test.test_fieldInitializerOutsideConstructor_defa
ultParameter); | |
11412 }); | |
11413 _ut.test('test_fieldInitializerRedirectingConstructor_afterRedirection', (
) { | |
11414 final __test = new CompileTimeErrorCodeTest(); | |
11415 runJUnitTest(__test, __test.test_fieldInitializerRedirectingConstructor_
afterRedirection); | |
11416 }); | |
11417 _ut.test('test_fieldInitializerRedirectingConstructor_beforeRedirection',
() { | |
11418 final __test = new CompileTimeErrorCodeTest(); | |
11419 runJUnitTest(__test, __test.test_fieldInitializerRedirectingConstructor_
beforeRedirection); | |
11420 }); | |
11421 _ut.test('test_fieldInitializingFormalRedirectingConstructor', () { | |
11422 final __test = new CompileTimeErrorCodeTest(); | |
11423 runJUnitTest(__test, __test.test_fieldInitializingFormalRedirectingConst
ructor); | |
11424 }); | |
11425 _ut.test('test_finalInitializedMultipleTimes_initializers', () { | |
11426 final __test = new CompileTimeErrorCodeTest(); | |
11427 runJUnitTest(__test, __test.test_finalInitializedMultipleTimes_initializ
ers); | |
11428 }); | |
11429 _ut.test('test_finalInitializedMultipleTimes_initializingFormal_initialize
r', () { | |
11430 final __test = new CompileTimeErrorCodeTest(); | |
11431 runJUnitTest(__test, __test.test_finalInitializedMultipleTimes_initializ
ingFormal_initializer); | |
11432 }); | |
11433 _ut.test('test_finalInitializedMultipleTimes_initializingFormals', () { | |
11434 final __test = new CompileTimeErrorCodeTest(); | |
11435 runJUnitTest(__test, __test.test_finalInitializedMultipleTimes_initializ
ingFormals); | |
11436 }); | |
11437 _ut.test('test_finalNotInitialized_instanceField_const_static', () { | |
11438 final __test = new CompileTimeErrorCodeTest(); | |
11439 runJUnitTest(__test, __test.test_finalNotInitialized_instanceField_const
_static); | |
11440 }); | |
11441 _ut.test('test_finalNotInitialized_library_const', () { | |
11442 final __test = new CompileTimeErrorCodeTest(); | |
11443 runJUnitTest(__test, __test.test_finalNotInitialized_library_const); | |
11444 }); | |
11445 _ut.test('test_finalNotInitialized_local_const', () { | |
11446 final __test = new CompileTimeErrorCodeTest(); | |
11447 runJUnitTest(__test, __test.test_finalNotInitialized_local_const); | |
11448 }); | |
11449 _ut.test('test_getterAndMethodWithSameName', () { | |
11450 final __test = new CompileTimeErrorCodeTest(); | |
11451 runJUnitTest(__test, __test.test_getterAndMethodWithSameName); | |
11452 }); | |
11453 _ut.test('test_implementsDisallowedClass_Null', () { | |
11454 final __test = new CompileTimeErrorCodeTest(); | |
11455 runJUnitTest(__test, __test.test_implementsDisallowedClass_Null); | |
11456 }); | |
11457 _ut.test('test_implementsDisallowedClass_String', () { | |
11458 final __test = new CompileTimeErrorCodeTest(); | |
11459 runJUnitTest(__test, __test.test_implementsDisallowedClass_String); | |
11460 }); | |
11461 _ut.test('test_implementsDisallowedClass_bool', () { | |
11462 final __test = new CompileTimeErrorCodeTest(); | |
11463 runJUnitTest(__test, __test.test_implementsDisallowedClass_bool); | |
11464 }); | |
11465 _ut.test('test_implementsDisallowedClass_double', () { | |
11466 final __test = new CompileTimeErrorCodeTest(); | |
11467 runJUnitTest(__test, __test.test_implementsDisallowedClass_double); | |
11468 }); | |
11469 _ut.test('test_implementsDisallowedClass_int', () { | |
11470 final __test = new CompileTimeErrorCodeTest(); | |
11471 runJUnitTest(__test, __test.test_implementsDisallowedClass_int); | |
11472 }); | |
11473 _ut.test('test_implementsDisallowedClass_num', () { | |
11474 final __test = new CompileTimeErrorCodeTest(); | |
11475 runJUnitTest(__test, __test.test_implementsDisallowedClass_num); | |
11476 }); | |
11477 _ut.test('test_implementsDynamic', () { | |
11478 final __test = new CompileTimeErrorCodeTest(); | |
11479 runJUnitTest(__test, __test.test_implementsDynamic); | |
11480 }); | |
11481 _ut.test('test_implementsNonClass_class', () { | |
11482 final __test = new CompileTimeErrorCodeTest(); | |
11483 runJUnitTest(__test, __test.test_implementsNonClass_class); | |
11484 }); | |
11485 _ut.test('test_implementsNonClass_typeAlias', () { | |
11486 final __test = new CompileTimeErrorCodeTest(); | |
11487 runJUnitTest(__test, __test.test_implementsNonClass_typeAlias); | |
11488 }); | |
11489 _ut.test('test_implementsRepeated', () { | |
11490 final __test = new CompileTimeErrorCodeTest(); | |
11491 runJUnitTest(__test, __test.test_implementsRepeated); | |
11492 }); | |
11493 _ut.test('test_implementsRepeated_3times', () { | |
11494 final __test = new CompileTimeErrorCodeTest(); | |
11495 runJUnitTest(__test, __test.test_implementsRepeated_3times); | |
11496 }); | |
11497 _ut.test('test_implementsSuperClass', () { | |
11498 final __test = new CompileTimeErrorCodeTest(); | |
11499 runJUnitTest(__test, __test.test_implementsSuperClass); | |
11500 }); | |
11501 _ut.test('test_implementsSuperClass_Object', () { | |
11502 final __test = new CompileTimeErrorCodeTest(); | |
11503 runJUnitTest(__test, __test.test_implementsSuperClass_Object); | |
11504 }); | |
11505 _ut.test('test_implicitThisReferenceInInitializer_field', () { | |
11506 final __test = new CompileTimeErrorCodeTest(); | |
11507 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_fiel
d); | |
11508 }); | |
11509 _ut.test('test_implicitThisReferenceInInitializer_field2', () { | |
11510 final __test = new CompileTimeErrorCodeTest(); | |
11511 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_fiel
d2); | |
11512 }); | |
11513 _ut.test('test_implicitThisReferenceInInitializer_invocation', () { | |
11514 final __test = new CompileTimeErrorCodeTest(); | |
11515 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_invo
cation); | |
11516 }); | |
11517 _ut.test('test_implicitThisReferenceInInitializer_invocationInStatic', ()
{ | |
11518 final __test = new CompileTimeErrorCodeTest(); | |
11519 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_invo
cationInStatic); | |
11520 }); | |
11521 _ut.test('test_implicitThisReferenceInInitializer_redirectingConstructorIn
vocation', () { | |
11522 final __test = new CompileTimeErrorCodeTest(); | |
11523 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_redi
rectingConstructorInvocation); | |
11524 }); | |
11525 _ut.test('test_implicitThisReferenceInInitializer_superConstructorInvocati
on', () { | |
11526 final __test = new CompileTimeErrorCodeTest(); | |
11527 runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_supe
rConstructorInvocation); | |
11528 }); | |
11529 _ut.test('test_importInternalLibrary', () { | |
11530 final __test = new CompileTimeErrorCodeTest(); | |
11531 runJUnitTest(__test, __test.test_importInternalLibrary); | |
11532 }); | |
11533 _ut.test('test_importInternalLibrary_collection', () { | |
11534 final __test = new CompileTimeErrorCodeTest(); | |
11535 runJUnitTest(__test, __test.test_importInternalLibrary_collection); | |
11536 }); | |
11537 _ut.test('test_importOfNonLibrary', () { | |
11538 final __test = new CompileTimeErrorCodeTest(); | |
11539 runJUnitTest(__test, __test.test_importOfNonLibrary); | |
11540 }); | |
11541 _ut.test('test_inconsistentCaseExpressionTypes', () { | |
11542 final __test = new CompileTimeErrorCodeTest(); | |
11543 runJUnitTest(__test, __test.test_inconsistentCaseExpressionTypes); | |
11544 }); | |
11545 _ut.test('test_inconsistentCaseExpressionTypes_repeated', () { | |
11546 final __test = new CompileTimeErrorCodeTest(); | |
11547 runJUnitTest(__test, __test.test_inconsistentCaseExpressionTypes_repeate
d); | |
11548 }); | |
11549 _ut.test('test_initializerForNonExistant_initializer', () { | |
11550 final __test = new CompileTimeErrorCodeTest(); | |
11551 runJUnitTest(__test, __test.test_initializerForNonExistant_initializer); | |
11552 }); | |
11553 _ut.test('test_initializerForStaticField', () { | |
11554 final __test = new CompileTimeErrorCodeTest(); | |
11555 runJUnitTest(__test, __test.test_initializerForStaticField); | |
11556 }); | |
11557 _ut.test('test_initializingFormalForNonExistantField', () { | |
11558 final __test = new CompileTimeErrorCodeTest(); | |
11559 runJUnitTest(__test, __test.test_initializingFormalForNonExistantField); | |
11560 }); | |
11561 _ut.test('test_initializingFormalForNonExistantField_notInEnclosingClass',
() { | |
11562 final __test = new CompileTimeErrorCodeTest(); | |
11563 runJUnitTest(__test, __test.test_initializingFormalForNonExistantField_n
otInEnclosingClass); | |
11564 }); | |
11565 _ut.test('test_initializingFormalForNonExistantField_optional', () { | |
11566 final __test = new CompileTimeErrorCodeTest(); | |
11567 runJUnitTest(__test, __test.test_initializingFormalForNonExistantField_o
ptional); | |
11568 }); | |
11569 _ut.test('test_initializingFormalForNonExistantField_synthetic', () { | |
11570 final __test = new CompileTimeErrorCodeTest(); | |
11571 runJUnitTest(__test, __test.test_initializingFormalForNonExistantField_s
ynthetic); | |
11572 }); | |
11573 _ut.test('test_initializingFormalForStaticField', () { | |
11574 final __test = new CompileTimeErrorCodeTest(); | |
11575 runJUnitTest(__test, __test.test_initializingFormalForStaticField); | |
11576 }); | |
11577 _ut.test('test_instanceMemberAccessFromStatic_field', () { | |
11578 final __test = new CompileTimeErrorCodeTest(); | |
11579 runJUnitTest(__test, __test.test_instanceMemberAccessFromStatic_field); | |
11580 }); | |
11581 _ut.test('test_instanceMemberAccessFromStatic_getter', () { | |
11582 final __test = new CompileTimeErrorCodeTest(); | |
11583 runJUnitTest(__test, __test.test_instanceMemberAccessFromStatic_getter); | |
11584 }); | |
11585 _ut.test('test_instanceMemberAccessFromStatic_method', () { | |
11586 final __test = new CompileTimeErrorCodeTest(); | |
11587 runJUnitTest(__test, __test.test_instanceMemberAccessFromStatic_method); | |
11588 }); | |
11589 _ut.test('test_invalidAnnotation_getter', () { | |
11590 final __test = new CompileTimeErrorCodeTest(); | |
11591 runJUnitTest(__test, __test.test_invalidAnnotation_getter); | |
11592 }); | |
11593 _ut.test('test_invalidAnnotation_importWithPrefix_getter', () { | |
11594 final __test = new CompileTimeErrorCodeTest(); | |
11595 runJUnitTest(__test, __test.test_invalidAnnotation_importWithPrefix_gett
er); | |
11596 }); | |
11597 _ut.test('test_invalidAnnotation_importWithPrefix_notConstantVariable', ()
{ | |
11598 final __test = new CompileTimeErrorCodeTest(); | |
11599 runJUnitTest(__test, __test.test_invalidAnnotation_importWithPrefix_notC
onstantVariable); | |
11600 }); | |
11601 _ut.test('test_invalidAnnotation_importWithPrefix_notVariableOrConstructor
Invocation', () { | |
11602 final __test = new CompileTimeErrorCodeTest(); | |
11603 runJUnitTest(__test, __test.test_invalidAnnotation_importWithPrefix_notV
ariableOrConstructorInvocation); | |
11604 }); | |
11605 _ut.test('test_invalidAnnotation_notConstantVariable', () { | |
11606 final __test = new CompileTimeErrorCodeTest(); | |
11607 runJUnitTest(__test, __test.test_invalidAnnotation_notConstantVariable); | |
11608 }); | |
11609 _ut.test('test_invalidAnnotation_notVariableOrConstructorInvocation', () { | |
11610 final __test = new CompileTimeErrorCodeTest(); | |
11611 runJUnitTest(__test, __test.test_invalidAnnotation_notVariableOrConstruc
torInvocation); | |
11612 }); | |
11613 _ut.test('test_invalidAnnotation_staticMethodReference', () { | |
11614 final __test = new CompileTimeErrorCodeTest(); | |
11615 runJUnitTest(__test, __test.test_invalidAnnotation_staticMethodReference
); | |
11616 }); | |
11617 _ut.test('test_invalidConstructorName_notEnclosingClassName_defined', () { | |
11618 final __test = new CompileTimeErrorCodeTest(); | |
11619 runJUnitTest(__test, __test.test_invalidConstructorName_notEnclosingClas
sName_defined); | |
11620 }); | |
11621 _ut.test('test_invalidConstructorName_notEnclosingClassName_undefined', ()
{ | |
11622 final __test = new CompileTimeErrorCodeTest(); | |
11623 runJUnitTest(__test, __test.test_invalidConstructorName_notEnclosingClas
sName_undefined); | |
11624 }); | |
11625 _ut.test('test_invalidFactoryNameNotAClass_notClassName', () { | |
11626 final __test = new CompileTimeErrorCodeTest(); | |
11627 runJUnitTest(__test, __test.test_invalidFactoryNameNotAClass_notClassNam
e); | |
11628 }); | |
11629 _ut.test('test_invalidFactoryNameNotAClass_notEnclosingClassName', () { | |
11630 final __test = new CompileTimeErrorCodeTest(); | |
11631 runJUnitTest(__test, __test.test_invalidFactoryNameNotAClass_notEnclosin
gClassName); | |
11632 }); | |
11633 _ut.test('test_invalidReferenceToThis_factoryConstructor', () { | |
11634 final __test = new CompileTimeErrorCodeTest(); | |
11635 runJUnitTest(__test, __test.test_invalidReferenceToThis_factoryConstruct
or); | |
11636 }); | |
11637 _ut.test('test_invalidReferenceToThis_instanceVariableInitializer_inConstr
uctor', () { | |
11638 final __test = new CompileTimeErrorCodeTest(); | |
11639 runJUnitTest(__test, __test.test_invalidReferenceToThis_instanceVariable
Initializer_inConstructor); | |
11640 }); | |
11641 _ut.test('test_invalidReferenceToThis_instanceVariableInitializer_inDeclar
ation', () { | |
11642 final __test = new CompileTimeErrorCodeTest(); | |
11643 runJUnitTest(__test, __test.test_invalidReferenceToThis_instanceVariable
Initializer_inDeclaration); | |
11644 }); | |
11645 _ut.test('test_invalidReferenceToThis_staticMethod', () { | |
11646 final __test = new CompileTimeErrorCodeTest(); | |
11647 runJUnitTest(__test, __test.test_invalidReferenceToThis_staticMethod); | |
11648 }); | |
11649 _ut.test('test_invalidReferenceToThis_staticVariableInitializer', () { | |
11650 final __test = new CompileTimeErrorCodeTest(); | |
11651 runJUnitTest(__test, __test.test_invalidReferenceToThis_staticVariableIn
itializer); | |
11652 }); | |
11653 _ut.test('test_invalidReferenceToThis_superInitializer', () { | |
11654 final __test = new CompileTimeErrorCodeTest(); | |
11655 runJUnitTest(__test, __test.test_invalidReferenceToThis_superInitializer
); | |
11656 }); | |
11657 _ut.test('test_invalidReferenceToThis_topLevelFunction', () { | |
11658 final __test = new CompileTimeErrorCodeTest(); | |
11659 runJUnitTest(__test, __test.test_invalidReferenceToThis_topLevelFunction
); | |
11660 }); | |
11661 _ut.test('test_invalidReferenceToThis_variableInitializer', () { | |
11662 final __test = new CompileTimeErrorCodeTest(); | |
11663 runJUnitTest(__test, __test.test_invalidReferenceToThis_variableInitiali
zer); | |
11664 }); | |
11665 _ut.test('test_invalidTypeArgumentInConstList', () { | |
11666 final __test = new CompileTimeErrorCodeTest(); | |
11667 runJUnitTest(__test, __test.test_invalidTypeArgumentInConstList); | |
11668 }); | |
11669 _ut.test('test_invalidTypeArgumentInConstMap', () { | |
11670 final __test = new CompileTimeErrorCodeTest(); | |
11671 runJUnitTest(__test, __test.test_invalidTypeArgumentInConstMap); | |
11672 }); | |
11673 _ut.test('test_invalidUri_export', () { | |
11674 final __test = new CompileTimeErrorCodeTest(); | |
11675 runJUnitTest(__test, __test.test_invalidUri_export); | |
11676 }); | |
11677 _ut.test('test_invalidUri_import', () { | |
11678 final __test = new CompileTimeErrorCodeTest(); | |
11679 runJUnitTest(__test, __test.test_invalidUri_import); | |
11680 }); | |
11681 _ut.test('test_invalidUri_part', () { | |
11682 final __test = new CompileTimeErrorCodeTest(); | |
11683 runJUnitTest(__test, __test.test_invalidUri_part); | |
11684 }); | |
11685 _ut.test('test_labelInOuterScope', () { | |
11686 final __test = new CompileTimeErrorCodeTest(); | |
11687 runJUnitTest(__test, __test.test_labelInOuterScope); | |
11688 }); | |
11689 _ut.test('test_labelUndefined_break', () { | |
11690 final __test = new CompileTimeErrorCodeTest(); | |
11691 runJUnitTest(__test, __test.test_labelUndefined_break); | |
11692 }); | |
11693 _ut.test('test_labelUndefined_continue', () { | |
11694 final __test = new CompileTimeErrorCodeTest(); | |
11695 runJUnitTest(__test, __test.test_labelUndefined_continue); | |
11696 }); | |
11697 _ut.test('test_listElementTypeNotAssignable', () { | |
11698 final __test = new CompileTimeErrorCodeTest(); | |
11699 runJUnitTest(__test, __test.test_listElementTypeNotAssignable); | |
11700 }); | |
11701 _ut.test('test_mapKeyTypeNotAssignable', () { | |
11702 final __test = new CompileTimeErrorCodeTest(); | |
11703 runJUnitTest(__test, __test.test_mapKeyTypeNotAssignable); | |
11704 }); | |
11705 _ut.test('test_mapValueTypeNotAssignable', () { | |
11706 final __test = new CompileTimeErrorCodeTest(); | |
11707 runJUnitTest(__test, __test.test_mapValueTypeNotAssignable); | |
11708 }); | |
11709 _ut.test('test_memberWithClassName_field', () { | |
11710 final __test = new CompileTimeErrorCodeTest(); | |
11711 runJUnitTest(__test, __test.test_memberWithClassName_field); | |
11712 }); | |
11713 _ut.test('test_memberWithClassName_field2', () { | |
11714 final __test = new CompileTimeErrorCodeTest(); | |
11715 runJUnitTest(__test, __test.test_memberWithClassName_field2); | |
11716 }); | |
11717 _ut.test('test_memberWithClassName_getter', () { | |
11718 final __test = new CompileTimeErrorCodeTest(); | |
11719 runJUnitTest(__test, __test.test_memberWithClassName_getter); | |
11720 }); | |
11721 _ut.test('test_memberWithClassName_method', () { | |
11722 final __test = new CompileTimeErrorCodeTest(); | |
11723 runJUnitTest(__test, __test.test_memberWithClassName_method); | |
11724 }); | |
11725 _ut.test('test_methodAndGetterWithSameName', () { | |
11726 final __test = new CompileTimeErrorCodeTest(); | |
11727 runJUnitTest(__test, __test.test_methodAndGetterWithSameName); | |
11728 }); | |
11729 _ut.test('test_mixinDeclaresConstructor_classDeclaration', () { | |
11730 final __test = new CompileTimeErrorCodeTest(); | |
11731 runJUnitTest(__test, __test.test_mixinDeclaresConstructor_classDeclarati
on); | |
11732 }); | |
11733 _ut.test('test_mixinDeclaresConstructor_typeAlias', () { | |
11734 final __test = new CompileTimeErrorCodeTest(); | |
11735 runJUnitTest(__test, __test.test_mixinDeclaresConstructor_typeAlias); | |
11736 }); | |
11737 _ut.test('test_mixinInheritsFromNotObject_classDeclaration_extends', () { | |
11738 final __test = new CompileTimeErrorCodeTest(); | |
11739 runJUnitTest(__test, __test.test_mixinInheritsFromNotObject_classDeclara
tion_extends); | |
11740 }); | |
11741 _ut.test('test_mixinInheritsFromNotObject_classDeclaration_with', () { | |
11742 final __test = new CompileTimeErrorCodeTest(); | |
11743 runJUnitTest(__test, __test.test_mixinInheritsFromNotObject_classDeclara
tion_with); | |
11744 }); | |
11745 _ut.test('test_mixinInheritsFromNotObject_typeAlias_extends', () { | |
11746 final __test = new CompileTimeErrorCodeTest(); | |
11747 runJUnitTest(__test, __test.test_mixinInheritsFromNotObject_typeAlias_ex
tends); | |
11748 }); | |
11749 _ut.test('test_mixinInheritsFromNotObject_typeAlias_with', () { | |
11750 final __test = new CompileTimeErrorCodeTest(); | |
11751 runJUnitTest(__test, __test.test_mixinInheritsFromNotObject_typeAlias_wi
th); | |
11752 }); | |
11753 _ut.test('test_mixinOfDisallowedClass_Null', () { | |
11754 final __test = new CompileTimeErrorCodeTest(); | |
11755 runJUnitTest(__test, __test.test_mixinOfDisallowedClass_Null); | |
11756 }); | |
11757 _ut.test('test_mixinOfDisallowedClass_String', () { | |
11758 final __test = new CompileTimeErrorCodeTest(); | |
11759 runJUnitTest(__test, __test.test_mixinOfDisallowedClass_String); | |
11760 }); | |
11761 _ut.test('test_mixinOfDisallowedClass_bool', () { | |
11762 final __test = new CompileTimeErrorCodeTest(); | |
11763 runJUnitTest(__test, __test.test_mixinOfDisallowedClass_bool); | |
11764 }); | |
11765 _ut.test('test_mixinOfDisallowedClass_double', () { | |
11766 final __test = new CompileTimeErrorCodeTest(); | |
11767 runJUnitTest(__test, __test.test_mixinOfDisallowedClass_double); | |
11768 }); | |
11769 _ut.test('test_mixinOfDisallowedClass_int', () { | |
11770 final __test = new CompileTimeErrorCodeTest(); | |
11771 runJUnitTest(__test, __test.test_mixinOfDisallowedClass_int); | |
11772 }); | |
11773 _ut.test('test_mixinOfDisallowedClass_num', () { | |
11774 final __test = new CompileTimeErrorCodeTest(); | |
11775 runJUnitTest(__test, __test.test_mixinOfDisallowedClass_num); | |
11776 }); | |
11777 _ut.test('test_mixinOfNonClass_class', () { | |
11778 final __test = new CompileTimeErrorCodeTest(); | |
11779 runJUnitTest(__test, __test.test_mixinOfNonClass_class); | |
11780 }); | |
11781 _ut.test('test_mixinOfNonClass_typeAlias', () { | |
11782 final __test = new CompileTimeErrorCodeTest(); | |
11783 runJUnitTest(__test, __test.test_mixinOfNonClass_typeAlias); | |
11784 }); | |
11785 _ut.test('test_mixinReferencesSuper', () { | |
11786 final __test = new CompileTimeErrorCodeTest(); | |
11787 runJUnitTest(__test, __test.test_mixinReferencesSuper); | |
11788 }); | |
11789 _ut.test('test_mixinWithNonClassSuperclass_class', () { | |
11790 final __test = new CompileTimeErrorCodeTest(); | |
11791 runJUnitTest(__test, __test.test_mixinWithNonClassSuperclass_class); | |
11792 }); | |
11793 _ut.test('test_mixinWithNonClassSuperclass_typeAlias', () { | |
11794 final __test = new CompileTimeErrorCodeTest(); | |
11795 runJUnitTest(__test, __test.test_mixinWithNonClassSuperclass_typeAlias); | |
11796 }); | |
11797 _ut.test('test_multipleRedirectingConstructorInvocations', () { | |
11798 final __test = new CompileTimeErrorCodeTest(); | |
11799 runJUnitTest(__test, __test.test_multipleRedirectingConstructorInvocatio
ns); | |
11800 }); | |
11801 _ut.test('test_multipleSuperInitializers', () { | |
11802 final __test = new CompileTimeErrorCodeTest(); | |
11803 runJUnitTest(__test, __test.test_multipleSuperInitializers); | |
11804 }); | |
11805 _ut.test('test_nativeClauseInNonSDKCode', () { | |
11806 final __test = new CompileTimeErrorCodeTest(); | |
11807 runJUnitTest(__test, __test.test_nativeClauseInNonSDKCode); | |
11808 }); | |
11809 _ut.test('test_nativeFunctionBodyInNonSDKCode_function', () { | |
11810 final __test = new CompileTimeErrorCodeTest(); | |
11811 runJUnitTest(__test, __test.test_nativeFunctionBodyInNonSDKCode_function
); | |
11812 }); | |
11813 _ut.test('test_nativeFunctionBodyInNonSDKCode_method', () { | |
11814 final __test = new CompileTimeErrorCodeTest(); | |
11815 runJUnitTest(__test, __test.test_nativeFunctionBodyInNonSDKCode_method); | |
11816 }); | |
11817 _ut.test('test_noAnnotationConstructorArguments', () { | |
11818 final __test = new CompileTimeErrorCodeTest(); | |
11819 runJUnitTest(__test, __test.test_noAnnotationConstructorArguments); | |
11820 }); | |
11821 _ut.test('test_noDefaultSuperConstructorExplicit', () { | |
11822 final __test = new CompileTimeErrorCodeTest(); | |
11823 runJUnitTest(__test, __test.test_noDefaultSuperConstructorExplicit); | |
11824 }); | |
11825 _ut.test('test_noDefaultSuperConstructorImplicit_superHasParameters', () { | |
11826 final __test = new CompileTimeErrorCodeTest(); | |
11827 runJUnitTest(__test, __test.test_noDefaultSuperConstructorImplicit_super
HasParameters); | |
11828 }); | |
11829 _ut.test('test_noDefaultSuperConstructorImplicit_superOnlyNamed', () { | |
11830 final __test = new CompileTimeErrorCodeTest(); | |
11831 runJUnitTest(__test, __test.test_noDefaultSuperConstructorImplicit_super
OnlyNamed); | |
11832 }); | |
11833 _ut.test('test_nonConstCaseExpression', () { | |
11834 final __test = new CompileTimeErrorCodeTest(); | |
11835 runJUnitTest(__test, __test.test_nonConstCaseExpression); | |
11836 }); | |
11837 _ut.test('test_nonConstListElement', () { | |
11838 final __test = new CompileTimeErrorCodeTest(); | |
11839 runJUnitTest(__test, __test.test_nonConstListElement); | |
11840 }); | |
11841 _ut.test('test_nonConstMapAsExpressionStatement_begin', () { | |
11842 final __test = new CompileTimeErrorCodeTest(); | |
11843 runJUnitTest(__test, __test.test_nonConstMapAsExpressionStatement_begin)
; | |
11844 }); | |
11845 _ut.test('test_nonConstMapAsExpressionStatement_only', () { | |
11846 final __test = new CompileTimeErrorCodeTest(); | |
11847 runJUnitTest(__test, __test.test_nonConstMapAsExpressionStatement_only); | |
11848 }); | |
11849 _ut.test('test_nonConstMapKey', () { | |
11850 final __test = new CompileTimeErrorCodeTest(); | |
11851 runJUnitTest(__test, __test.test_nonConstMapKey); | |
11852 }); | |
11853 _ut.test('test_nonConstMapValue', () { | |
11854 final __test = new CompileTimeErrorCodeTest(); | |
11855 runJUnitTest(__test, __test.test_nonConstMapValue); | |
11856 }); | |
11857 _ut.test('test_nonConstValueInInitializer_binary_notBool_left', () { | |
11858 final __test = new CompileTimeErrorCodeTest(); | |
11859 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_notBo
ol_left); | |
11860 }); | |
11861 _ut.test('test_nonConstValueInInitializer_binary_notBool_right', () { | |
11862 final __test = new CompileTimeErrorCodeTest(); | |
11863 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_notBo
ol_right); | |
11864 }); | |
11865 _ut.test('test_nonConstValueInInitializer_binary_notInt', () { | |
11866 final __test = new CompileTimeErrorCodeTest(); | |
11867 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_notIn
t); | |
11868 }); | |
11869 _ut.test('test_nonConstValueInInitializer_binary_notNum', () { | |
11870 final __test = new CompileTimeErrorCodeTest(); | |
11871 runJUnitTest(__test, __test.test_nonConstValueInInitializer_binary_notNu
m); | |
11872 }); | |
11873 _ut.test('test_nonConstValueInInitializer_field', () { | |
11874 final __test = new CompileTimeErrorCodeTest(); | |
11875 runJUnitTest(__test, __test.test_nonConstValueInInitializer_field); | |
11876 }); | |
11877 _ut.test('test_nonConstValueInInitializer_redirecting', () { | |
11878 final __test = new CompileTimeErrorCodeTest(); | |
11879 runJUnitTest(__test, __test.test_nonConstValueInInitializer_redirecting)
; | |
11880 }); | |
11881 _ut.test('test_nonConstValueInInitializer_super', () { | |
11882 final __test = new CompileTimeErrorCodeTest(); | |
11883 runJUnitTest(__test, __test.test_nonConstValueInInitializer_super); | |
11884 }); | |
11885 _ut.test('test_nonConstantAnnotationConstructor_named', () { | |
11886 final __test = new CompileTimeErrorCodeTest(); | |
11887 runJUnitTest(__test, __test.test_nonConstantAnnotationConstructor_named)
; | |
11888 }); | |
11889 _ut.test('test_nonConstantAnnotationConstructor_unnamed', () { | |
11890 final __test = new CompileTimeErrorCodeTest(); | |
11891 runJUnitTest(__test, __test.test_nonConstantAnnotationConstructor_unname
d); | |
11892 }); | |
11893 _ut.test('test_nonConstantDefaultValue_function_named', () { | |
11894 final __test = new CompileTimeErrorCodeTest(); | |
11895 runJUnitTest(__test, __test.test_nonConstantDefaultValue_function_named)
; | |
11896 }); | |
11897 _ut.test('test_nonConstantDefaultValue_function_positional', () { | |
11898 final __test = new CompileTimeErrorCodeTest(); | |
11899 runJUnitTest(__test, __test.test_nonConstantDefaultValue_function_positi
onal); | |
11900 }); | |
11901 _ut.test('test_nonConstantDefaultValue_inConstructor_named', () { | |
11902 final __test = new CompileTimeErrorCodeTest(); | |
11903 runJUnitTest(__test, __test.test_nonConstantDefaultValue_inConstructor_n
amed); | |
11904 }); | |
11905 _ut.test('test_nonConstantDefaultValue_inConstructor_positional', () { | |
11906 final __test = new CompileTimeErrorCodeTest(); | |
11907 runJUnitTest(__test, __test.test_nonConstantDefaultValue_inConstructor_p
ositional); | |
11908 }); | |
11909 _ut.test('test_nonConstantDefaultValue_method_named', () { | |
11910 final __test = new CompileTimeErrorCodeTest(); | |
11911 runJUnitTest(__test, __test.test_nonConstantDefaultValue_method_named); | |
11912 }); | |
11913 _ut.test('test_nonConstantDefaultValue_method_positional', () { | |
11914 final __test = new CompileTimeErrorCodeTest(); | |
11915 runJUnitTest(__test, __test.test_nonConstantDefaultValue_method_position
al); | |
11916 }); | |
11917 _ut.test('test_nonGenerativeConstructor_explicit', () { | |
11918 final __test = new CompileTimeErrorCodeTest(); | |
11919 runJUnitTest(__test, __test.test_nonGenerativeConstructor_explicit); | |
11920 }); | |
11921 _ut.test('test_nonGenerativeConstructor_implicit', () { | |
11922 final __test = new CompileTimeErrorCodeTest(); | |
11923 runJUnitTest(__test, __test.test_nonGenerativeConstructor_implicit); | |
11924 }); | |
11925 _ut.test('test_nonGenerativeConstructor_implicit2', () { | |
11926 final __test = new CompileTimeErrorCodeTest(); | |
11927 runJUnitTest(__test, __test.test_nonGenerativeConstructor_implicit2); | |
11928 }); | |
11929 _ut.test('test_notEnoughRequiredArguments_const', () { | |
11930 final __test = new CompileTimeErrorCodeTest(); | |
11931 runJUnitTest(__test, __test.test_notEnoughRequiredArguments_const); | |
11932 }); | |
11933 _ut.test('test_notEnoughRequiredArguments_const_super', () { | |
11934 final __test = new CompileTimeErrorCodeTest(); | |
11935 runJUnitTest(__test, __test.test_notEnoughRequiredArguments_const_super)
; | |
11936 }); | |
11937 _ut.test('test_optionalParameterInOperator_named', () { | |
11938 final __test = new CompileTimeErrorCodeTest(); | |
11939 runJUnitTest(__test, __test.test_optionalParameterInOperator_named); | |
11940 }); | |
11941 _ut.test('test_optionalParameterInOperator_positional', () { | |
11942 final __test = new CompileTimeErrorCodeTest(); | |
11943 runJUnitTest(__test, __test.test_optionalParameterInOperator_positional)
; | |
11944 }); | |
11945 _ut.test('test_partOfNonPart', () { | |
11946 final __test = new CompileTimeErrorCodeTest(); | |
11947 runJUnitTest(__test, __test.test_partOfNonPart); | |
11948 }); | |
11949 _ut.test('test_prefixCollidesWithTopLevelMembers_functionTypeAlias', () { | |
11950 final __test = new CompileTimeErrorCodeTest(); | |
11951 runJUnitTest(__test, __test.test_prefixCollidesWithTopLevelMembers_funct
ionTypeAlias); | |
11952 }); | |
11953 _ut.test('test_prefixCollidesWithTopLevelMembers_topLevelFunction', () { | |
11954 final __test = new CompileTimeErrorCodeTest(); | |
11955 runJUnitTest(__test, __test.test_prefixCollidesWithTopLevelMembers_topLe
velFunction); | |
11956 }); | |
11957 _ut.test('test_prefixCollidesWithTopLevelMembers_topLevelVariable', () { | |
11958 final __test = new CompileTimeErrorCodeTest(); | |
11959 runJUnitTest(__test, __test.test_prefixCollidesWithTopLevelMembers_topLe
velVariable); | |
11960 }); | |
11961 _ut.test('test_prefixCollidesWithTopLevelMembers_type', () { | |
11962 final __test = new CompileTimeErrorCodeTest(); | |
11963 runJUnitTest(__test, __test.test_prefixCollidesWithTopLevelMembers_type)
; | |
11964 }); | |
11965 _ut.test('test_privateOptionalParameter', () { | |
11966 final __test = new CompileTimeErrorCodeTest(); | |
11967 runJUnitTest(__test, __test.test_privateOptionalParameter); | |
11968 }); | |
11969 _ut.test('test_privateOptionalParameter_fieldFormal', () { | |
11970 final __test = new CompileTimeErrorCodeTest(); | |
11971 runJUnitTest(__test, __test.test_privateOptionalParameter_fieldFormal); | |
11972 }); | |
11973 _ut.test('test_privateOptionalParameter_withDefaultValue', () { | |
11974 final __test = new CompileTimeErrorCodeTest(); | |
11975 runJUnitTest(__test, __test.test_privateOptionalParameter_withDefaultVal
ue); | |
11976 }); | |
11977 _ut.test('test_recursiveConstructorRedirect', () { | |
11978 final __test = new CompileTimeErrorCodeTest(); | |
11979 runJUnitTest(__test, __test.test_recursiveConstructorRedirect); | |
11980 }); | |
11981 _ut.test('test_recursiveConstructorRedirect_directSelfReference', () { | |
11982 final __test = new CompileTimeErrorCodeTest(); | |
11983 runJUnitTest(__test, __test.test_recursiveConstructorRedirect_directSelf
Reference); | |
11984 }); | |
11985 _ut.test('test_recursiveFactoryRedirect', () { | |
11986 final __test = new CompileTimeErrorCodeTest(); | |
11987 runJUnitTest(__test, __test.test_recursiveFactoryRedirect); | |
11988 }); | |
11989 _ut.test('test_recursiveFactoryRedirect_directSelfReference', () { | |
11990 final __test = new CompileTimeErrorCodeTest(); | |
11991 runJUnitTest(__test, __test.test_recursiveFactoryRedirect_directSelfRefe
rence); | |
11992 }); | |
11993 _ut.test('test_recursiveFactoryRedirect_generic', () { | |
11994 final __test = new CompileTimeErrorCodeTest(); | |
11995 runJUnitTest(__test, __test.test_recursiveFactoryRedirect_generic); | |
11996 }); | |
11997 _ut.test('test_recursiveFactoryRedirect_named', () { | |
11998 final __test = new CompileTimeErrorCodeTest(); | |
11999 runJUnitTest(__test, __test.test_recursiveFactoryRedirect_named); | |
12000 }); | |
12001 _ut.test('test_recursiveFactoryRedirect_outsideCycle', () { | |
12002 final __test = new CompileTimeErrorCodeTest(); | |
12003 runJUnitTest(__test, __test.test_recursiveFactoryRedirect_outsideCycle); | |
12004 }); | |
12005 _ut.test('test_recursiveInterfaceInheritanceBaseCaseExtends', () { | |
12006 final __test = new CompileTimeErrorCodeTest(); | |
12007 runJUnitTest(__test, __test.test_recursiveInterfaceInheritanceBaseCaseEx
tends); | |
12008 }); | |
12009 _ut.test('test_recursiveInterfaceInheritanceBaseCaseImplements', () { | |
12010 final __test = new CompileTimeErrorCodeTest(); | |
12011 runJUnitTest(__test, __test.test_recursiveInterfaceInheritanceBaseCaseIm
plements); | |
12012 }); | |
12013 _ut.test('test_recursiveInterfaceInheritanceBaseCaseImplements_typeAlias',
() { | |
12014 final __test = new CompileTimeErrorCodeTest(); | |
12015 runJUnitTest(__test, __test.test_recursiveInterfaceInheritanceBaseCaseIm
plements_typeAlias); | |
12016 }); | |
12017 _ut.test('test_recursiveInterfaceInheritance_extends', () { | |
12018 final __test = new CompileTimeErrorCodeTest(); | |
12019 runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_extends); | |
12020 }); | |
12021 _ut.test('test_recursiveInterfaceInheritance_extends_implements', () { | |
12022 final __test = new CompileTimeErrorCodeTest(); | |
12023 runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_extends_i
mplements); | |
12024 }); | |
12025 _ut.test('test_recursiveInterfaceInheritance_implements', () { | |
12026 final __test = new CompileTimeErrorCodeTest(); | |
12027 runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_implement
s); | |
12028 }); | |
12029 _ut.test('test_recursiveInterfaceInheritance_tail', () { | |
12030 final __test = new CompileTimeErrorCodeTest(); | |
12031 runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_tail); | |
12032 }); | |
12033 _ut.test('test_recursiveInterfaceInheritance_tail2', () { | |
12034 final __test = new CompileTimeErrorCodeTest(); | |
12035 runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_tail2); | |
12036 }); | |
12037 _ut.test('test_recursiveInterfaceInheritance_tail3', () { | |
12038 final __test = new CompileTimeErrorCodeTest(); | |
12039 runJUnitTest(__test, __test.test_recursiveInterfaceInheritance_tail3); | |
12040 }); | |
12041 _ut.test('test_redirectToNonConstConstructor', () { | |
12042 final __test = new CompileTimeErrorCodeTest(); | |
12043 runJUnitTest(__test, __test.test_redirectToNonConstConstructor); | |
12044 }); | |
12045 _ut.test('test_referenceToDeclaredVariableInInitializer_closure', () { | |
12046 final __test = new CompileTimeErrorCodeTest(); | |
12047 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_closure); | |
12048 }); | |
12049 _ut.test('test_referenceToDeclaredVariableInInitializer_getter', () { | |
12050 final __test = new CompileTimeErrorCodeTest(); | |
12051 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_getter); | |
12052 }); | |
12053 _ut.test('test_referenceToDeclaredVariableInInitializer_setter', () { | |
12054 final __test = new CompileTimeErrorCodeTest(); | |
12055 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_setter); | |
12056 }); | |
12057 _ut.test('test_referenceToDeclaredVariableInInitializer_unqualifiedInvocat
ion', () { | |
12058 final __test = new CompileTimeErrorCodeTest(); | |
12059 runJUnitTest(__test, __test.test_referenceToDeclaredVariableInInitialize
r_unqualifiedInvocation); | |
12060 }); | |
12061 _ut.test('test_referencedBeforeDeclaration_hideInBlock_function', () { | |
12062 final __test = new CompileTimeErrorCodeTest(); | |
12063 runJUnitTest(__test, __test.test_referencedBeforeDeclaration_hideInBlock
_function); | |
12064 }); | |
12065 _ut.test('test_referencedBeforeDeclaration_hideInBlock_local', () { | |
12066 final __test = new CompileTimeErrorCodeTest(); | |
12067 runJUnitTest(__test, __test.test_referencedBeforeDeclaration_hideInBlock
_local); | |
12068 }); | |
12069 _ut.test('test_referencedBeforeDeclaration_hideInBlock_subBlock', () { | |
12070 final __test = new CompileTimeErrorCodeTest(); | |
12071 runJUnitTest(__test, __test.test_referencedBeforeDeclaration_hideInBlock
_subBlock); | |
12072 }); | |
12073 _ut.test('test_rethrowOutsideCatch', () { | |
12074 final __test = new CompileTimeErrorCodeTest(); | |
12075 runJUnitTest(__test, __test.test_rethrowOutsideCatch); | |
12076 }); | |
12077 _ut.test('test_returnInGenerativeConstructor', () { | |
12078 final __test = new CompileTimeErrorCodeTest(); | |
12079 runJUnitTest(__test, __test.test_returnInGenerativeConstructor); | |
12080 }); | |
12081 _ut.test('test_returnInGenerativeConstructor_expressionFunctionBody', () { | |
12082 final __test = new CompileTimeErrorCodeTest(); | |
12083 runJUnitTest(__test, __test.test_returnInGenerativeConstructor_expressio
nFunctionBody); | |
12084 }); | |
12085 _ut.test('test_superInInvalidContext_binaryExpression', () { | |
12086 final __test = new CompileTimeErrorCodeTest(); | |
12087 runJUnitTest(__test, __test.test_superInInvalidContext_binaryExpression)
; | |
12088 }); | |
12089 _ut.test('test_superInInvalidContext_constructorFieldInitializer', () { | |
12090 final __test = new CompileTimeErrorCodeTest(); | |
12091 runJUnitTest(__test, __test.test_superInInvalidContext_constructorFieldI
nitializer); | |
12092 }); | |
12093 _ut.test('test_superInInvalidContext_factoryConstructor', () { | |
12094 final __test = new CompileTimeErrorCodeTest(); | |
12095 runJUnitTest(__test, __test.test_superInInvalidContext_factoryConstructo
r); | |
12096 }); | |
12097 _ut.test('test_superInInvalidContext_instanceVariableInitializer', () { | |
12098 final __test = new CompileTimeErrorCodeTest(); | |
12099 runJUnitTest(__test, __test.test_superInInvalidContext_instanceVariableI
nitializer); | |
12100 }); | |
12101 _ut.test('test_superInInvalidContext_staticMethod', () { | |
12102 final __test = new CompileTimeErrorCodeTest(); | |
12103 runJUnitTest(__test, __test.test_superInInvalidContext_staticMethod); | |
12104 }); | |
12105 _ut.test('test_superInInvalidContext_staticVariableInitializer', () { | |
12106 final __test = new CompileTimeErrorCodeTest(); | |
12107 runJUnitTest(__test, __test.test_superInInvalidContext_staticVariableIni
tializer); | |
12108 }); | |
12109 _ut.test('test_superInInvalidContext_topLevelFunction', () { | |
12110 final __test = new CompileTimeErrorCodeTest(); | |
12111 runJUnitTest(__test, __test.test_superInInvalidContext_topLevelFunction)
; | |
12112 }); | |
12113 _ut.test('test_superInInvalidContext_topLevelVariableInitializer', () { | |
12114 final __test = new CompileTimeErrorCodeTest(); | |
12115 runJUnitTest(__test, __test.test_superInInvalidContext_topLevelVariableI
nitializer); | |
12116 }); | |
12117 _ut.test('test_superInRedirectingConstructor_redirectionSuper', () { | |
12118 final __test = new CompileTimeErrorCodeTest(); | |
12119 runJUnitTest(__test, __test.test_superInRedirectingConstructor_redirecti
onSuper); | |
12120 }); | |
12121 _ut.test('test_superInRedirectingConstructor_superRedirection', () { | |
12122 final __test = new CompileTimeErrorCodeTest(); | |
12123 runJUnitTest(__test, __test.test_superInRedirectingConstructor_superRedi
rection); | |
12124 }); | |
12125 _ut.test('test_typeAliasCannotReferenceItself_parameterType_named', () { | |
12126 final __test = new CompileTimeErrorCodeTest(); | |
12127 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_paramete
rType_named); | |
12128 }); | |
12129 _ut.test('test_typeAliasCannotReferenceItself_parameterType_positional', (
) { | |
12130 final __test = new CompileTimeErrorCodeTest(); | |
12131 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_paramete
rType_positional); | |
12132 }); | |
12133 _ut.test('test_typeAliasCannotReferenceItself_parameterType_required', ()
{ | |
12134 final __test = new CompileTimeErrorCodeTest(); | |
12135 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_paramete
rType_required); | |
12136 }); | |
12137 _ut.test('test_typeAliasCannotReferenceItself_parameterType_typeArgument',
() { | |
12138 final __test = new CompileTimeErrorCodeTest(); | |
12139 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_paramete
rType_typeArgument); | |
12140 }); | |
12141 _ut.test('test_typeAliasCannotReferenceItself_returnClass_withTypeAlias',
() { | |
12142 final __test = new CompileTimeErrorCodeTest(); | |
12143 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_returnCl
ass_withTypeAlias); | |
12144 }); | |
12145 _ut.test('test_typeAliasCannotReferenceItself_returnType', () { | |
12146 final __test = new CompileTimeErrorCodeTest(); | |
12147 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_returnTy
pe); | |
12148 }); | |
12149 _ut.test('test_typeAliasCannotReferenceItself_returnType_indirect', () { | |
12150 final __test = new CompileTimeErrorCodeTest(); | |
12151 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_returnTy
pe_indirect); | |
12152 }); | |
12153 _ut.test('test_typeAliasCannotReferenceItself_typeVariableBounds', () { | |
12154 final __test = new CompileTimeErrorCodeTest(); | |
12155 runJUnitTest(__test, __test.test_typeAliasCannotReferenceItself_typeVari
ableBounds); | |
12156 }); | |
12157 _ut.test('test_typeAliasCannotRereferenceItself_mixin_direct', () { | |
12158 final __test = new CompileTimeErrorCodeTest(); | |
12159 runJUnitTest(__test, __test.test_typeAliasCannotRereferenceItself_mixin_
direct); | |
12160 }); | |
12161 _ut.test('test_typeAliasCannotRereferenceItself_mixin_indirect', () { | |
12162 final __test = new CompileTimeErrorCodeTest(); | |
12163 runJUnitTest(__test, __test.test_typeAliasCannotRereferenceItself_mixin_
indirect); | |
12164 }); | |
12165 _ut.test('test_typeArgumentNotMatchingBounds_const', () { | |
12166 final __test = new CompileTimeErrorCodeTest(); | |
12167 runJUnitTest(__test, __test.test_typeArgumentNotMatchingBounds_const); | |
12168 }); | |
12169 _ut.test('test_undefinedClass_const', () { | |
12170 final __test = new CompileTimeErrorCodeTest(); | |
12171 runJUnitTest(__test, __test.test_undefinedClass_const); | |
12172 }); | |
12173 _ut.test('test_undefinedConstructorInInitializer_explicit_named', () { | |
12174 final __test = new CompileTimeErrorCodeTest(); | |
12175 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_expli
cit_named); | |
12176 }); | |
12177 _ut.test('test_undefinedConstructorInInitializer_explicit_unnamed', () { | |
12178 final __test = new CompileTimeErrorCodeTest(); | |
12179 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_expli
cit_unnamed); | |
12180 }); | |
12181 _ut.test('test_undefinedConstructorInInitializer_implicit', () { | |
12182 final __test = new CompileTimeErrorCodeTest(); | |
12183 runJUnitTest(__test, __test.test_undefinedConstructorInInitializer_impli
cit); | |
12184 }); | |
12185 _ut.test('test_undefinedFunction', () { | |
12186 final __test = new CompileTimeErrorCodeTest(); | |
12187 runJUnitTest(__test, __test.test_undefinedFunction); | |
12188 }); | |
12189 _ut.test('test_undefinedFunction_hasImportPrefix', () { | |
12190 final __test = new CompileTimeErrorCodeTest(); | |
12191 runJUnitTest(__test, __test.test_undefinedFunction_hasImportPrefix); | |
12192 }); | |
12193 _ut.test('test_undefinedFunction_inCatch', () { | |
12194 final __test = new CompileTimeErrorCodeTest(); | |
12195 runJUnitTest(__test, __test.test_undefinedFunction_inCatch); | |
12196 }); | |
12197 _ut.test('test_undefinedNamedParameter', () { | |
12198 final __test = new CompileTimeErrorCodeTest(); | |
12199 runJUnitTest(__test, __test.test_undefinedNamedParameter); | |
12200 }); | |
12201 _ut.test('test_uriDoesNotExist_export', () { | |
12202 final __test = new CompileTimeErrorCodeTest(); | |
12203 runJUnitTest(__test, __test.test_uriDoesNotExist_export); | |
12204 }); | |
12205 _ut.test('test_uriDoesNotExist_import', () { | |
12206 final __test = new CompileTimeErrorCodeTest(); | |
12207 runJUnitTest(__test, __test.test_uriDoesNotExist_import); | |
12208 }); | |
12209 _ut.test('test_uriDoesNotExist_part', () { | |
12210 final __test = new CompileTimeErrorCodeTest(); | |
12211 runJUnitTest(__test, __test.test_uriDoesNotExist_part); | |
12212 }); | |
12213 _ut.test('test_uriWithInterpolation_constant', () { | |
12214 final __test = new CompileTimeErrorCodeTest(); | |
12215 runJUnitTest(__test, __test.test_uriWithInterpolation_constant); | |
12216 }); | |
12217 _ut.test('test_uriWithInterpolation_nonConstant', () { | |
12218 final __test = new CompileTimeErrorCodeTest(); | |
12219 runJUnitTest(__test, __test.test_uriWithInterpolation_nonConstant); | |
12220 }); | |
12221 _ut.test('test_wrongNumberOfParametersForOperator1', () { | |
12222 final __test = new CompileTimeErrorCodeTest(); | |
12223 runJUnitTest(__test, __test.test_wrongNumberOfParametersForOperator1); | |
12224 }); | |
12225 _ut.test('test_wrongNumberOfParametersForOperator_minus', () { | |
12226 final __test = new CompileTimeErrorCodeTest(); | |
12227 runJUnitTest(__test, __test.test_wrongNumberOfParametersForOperator_minu
s); | |
12228 }); | |
12229 _ut.test('test_wrongNumberOfParametersForOperator_tilde', () { | |
12230 final __test = new CompileTimeErrorCodeTest(); | |
12231 runJUnitTest(__test, __test.test_wrongNumberOfParametersForOperator_tild
e); | |
12232 }); | |
12233 _ut.test('test_wrongNumberOfParametersForSetter_function_named', () { | |
12234 final __test = new CompileTimeErrorCodeTest(); | |
12235 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_functi
on_named); | |
12236 }); | |
12237 _ut.test('test_wrongNumberOfParametersForSetter_function_optional', () { | |
12238 final __test = new CompileTimeErrorCodeTest(); | |
12239 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_functi
on_optional); | |
12240 }); | |
12241 _ut.test('test_wrongNumberOfParametersForSetter_function_tooFew', () { | |
12242 final __test = new CompileTimeErrorCodeTest(); | |
12243 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_functi
on_tooFew); | |
12244 }); | |
12245 _ut.test('test_wrongNumberOfParametersForSetter_function_tooMany', () { | |
12246 final __test = new CompileTimeErrorCodeTest(); | |
12247 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_functi
on_tooMany); | |
12248 }); | |
12249 _ut.test('test_wrongNumberOfParametersForSetter_method_named', () { | |
12250 final __test = new CompileTimeErrorCodeTest(); | |
12251 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_method
_named); | |
12252 }); | |
12253 _ut.test('test_wrongNumberOfParametersForSetter_method_optional', () { | |
12254 final __test = new CompileTimeErrorCodeTest(); | |
12255 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_method
_optional); | |
12256 }); | |
12257 _ut.test('test_wrongNumberOfParametersForSetter_method_tooFew', () { | |
12258 final __test = new CompileTimeErrorCodeTest(); | |
12259 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_method
_tooFew); | |
12260 }); | |
12261 _ut.test('test_wrongNumberOfParametersForSetter_method_tooMany', () { | |
12262 final __test = new CompileTimeErrorCodeTest(); | |
12263 runJUnitTest(__test, __test.test_wrongNumberOfParametersForSetter_method
_tooMany); | |
12264 }); | |
12265 }); | |
12266 } | |
12267 } | |
12268 /** | |
12269 * Instances of the class `StaticTypeVerifier` verify that all of the nodes in a
n AST | |
12270 * structure that should have a static type associated with them do have a stati
c type. | |
12271 */ | |
12272 class StaticTypeVerifier extends GeneralizingASTVisitor<Object> { | |
12273 | |
12274 /** | |
12275 * A list containing all of the AST Expression nodes that were not resolved. | |
12276 */ | |
12277 List<Expression> _unresolvedExpressions = new List<Expression>(); | |
12278 | |
12279 /** | |
12280 * A list containing all of the AST Expression nodes for which a propagated ty
pe was computed but | |
12281 * where that type was not more specific than the static type. | |
12282 */ | |
12283 List<Expression> _invalidlyPropagatedExpressions = new List<Expression>(); | |
12284 | |
12285 /** | |
12286 * A list containing all of the AST TypeName nodes that were not resolved. | |
12287 */ | |
12288 List<TypeName> _unresolvedTypes = new List<TypeName>(); | |
12289 | |
12290 /** | |
12291 * Counter for the number of Expression nodes visited that are resolved. | |
12292 */ | |
12293 int _resolvedExpressionCount = 0; | |
12294 | |
12295 /** | |
12296 * Counter for the number of Expression nodes visited that have propagated typ
e information. | |
12297 */ | |
12298 int _propagatedExpressionCount = 0; | |
12299 | |
12300 /** | |
12301 * Counter for the number of TypeName nodes visited that are resolved. | |
12302 */ | |
12303 int _resolvedTypeCount = 0; | |
12304 | |
12305 /** | |
12306 * Assert that all of the visited nodes have a static type associated with the
m. | |
12307 */ | |
12308 void assertResolved() { | |
12309 if (!_unresolvedExpressions.isEmpty || !_unresolvedTypes.isEmpty) { | |
12310 PrintStringWriter writer = new PrintStringWriter(); | |
12311 int unresolvedTypeCount = _unresolvedTypes.length; | |
12312 if (unresolvedTypeCount > 0) { | |
12313 writer.print("Failed to resolve "); | |
12314 writer.print(unresolvedTypeCount); | |
12315 writer.print(" of "); | |
12316 writer.print(_resolvedTypeCount + unresolvedTypeCount); | |
12317 writer.println(" type names:"); | |
12318 for (TypeName identifier in _unresolvedTypes) { | |
12319 writer.print(" "); | |
12320 writer.print(identifier.toString()); | |
12321 writer.print(" ("); | |
12322 writer.print(getFileName(identifier)); | |
12323 writer.print(" : "); | |
12324 writer.print(identifier.offset); | |
12325 writer.println(")"); | |
12326 } | |
12327 } | |
12328 int unresolvedExpressionCount = _unresolvedExpressions.length; | |
12329 if (unresolvedExpressionCount > 0) { | |
12330 writer.println("Failed to resolve "); | |
12331 writer.print(unresolvedExpressionCount); | |
12332 writer.print(" of "); | |
12333 writer.print(_resolvedExpressionCount + unresolvedExpressionCount); | |
12334 writer.println(" expressions:"); | |
12335 for (Expression expression in _unresolvedExpressions) { | |
12336 writer.print(" "); | |
12337 writer.print(expression.toString()); | |
12338 writer.print(" ("); | |
12339 writer.print(getFileName(expression)); | |
12340 writer.print(" : "); | |
12341 writer.print(expression.offset); | |
12342 writer.println(")"); | |
12343 } | |
12344 } | |
12345 int invalidlyPropagatedExpressionCount = _invalidlyPropagatedExpressions.l
ength; | |
12346 if (invalidlyPropagatedExpressionCount > 0) { | |
12347 writer.println("Incorrectly propagated "); | |
12348 writer.print(invalidlyPropagatedExpressionCount); | |
12349 writer.print(" of "); | |
12350 writer.print(_propagatedExpressionCount); | |
12351 writer.println(" expressions:"); | |
12352 for (Expression expression in _invalidlyPropagatedExpressions) { | |
12353 writer.print(" "); | |
12354 writer.print(expression.toString()); | |
12355 writer.print(" ["); | |
12356 writer.print(expression.staticType.displayName); | |
12357 writer.print(", "); | |
12358 writer.print(expression.propagatedType.displayName); | |
12359 writer.println("]"); | |
12360 writer.print(" "); | |
12361 writer.print(getFileName(expression)); | |
12362 writer.print(" : "); | |
12363 writer.print(expression.offset); | |
12364 writer.println(")"); | |
12365 } | |
12366 } | |
12367 JUnitTestCase.fail(writer.toString()); | |
12368 } | |
12369 } | |
12370 Object visitBreakStatement(BreakStatement node) => null; | |
12371 Object visitCommentReference(CommentReference node) => null; | |
12372 Object visitContinueStatement(ContinueStatement node) => null; | |
12373 Object visitExportDirective(ExportDirective node) => null; | |
12374 Object visitExpression(Expression node) { | |
12375 node.visitChildren(this); | |
12376 Type2 staticType = node.staticType; | |
12377 if (staticType == null) { | |
12378 _unresolvedExpressions.add(node); | |
12379 } else { | |
12380 _resolvedExpressionCount++; | |
12381 Type2 propagatedType = node.propagatedType; | |
12382 if (propagatedType != null) { | |
12383 _propagatedExpressionCount++; | |
12384 if (!propagatedType.isMoreSpecificThan(staticType)) { | |
12385 _invalidlyPropagatedExpressions.add(node); | |
12386 } | |
12387 } | |
12388 } | |
12389 return null; | |
12390 } | |
12391 Object visitImportDirective(ImportDirective node) => null; | |
12392 Object visitLabel(Label node) => null; | |
12393 Object visitLibraryIdentifier(LibraryIdentifier node) => null; | |
12394 Object visitPrefixedIdentifier(PrefixedIdentifier node) { | |
12395 if (node.staticType == null && identical(node.prefix.staticType, DynamicType
Impl.instance)) { | |
12396 return null; | |
12397 } | |
12398 return super.visitPrefixedIdentifier(node); | |
12399 } | |
12400 Object visitSimpleIdentifier(SimpleIdentifier node) { | |
12401 ASTNode parent = node.parent; | |
12402 if (parent is MethodInvocation && identical(node, ((parent as MethodInvocati
on)).methodName)) { | |
12403 return null; | |
12404 } else if (parent is RedirectingConstructorInvocation && identical(node, ((p
arent as RedirectingConstructorInvocation)).constructorName)) { | |
12405 return null; | |
12406 } else if (parent is SuperConstructorInvocation && identical(node, ((parent
as SuperConstructorInvocation)).constructorName)) { | |
12407 return null; | |
12408 } else if (parent is ConstructorName && identical(node, ((parent as Construc
torName)).name)) { | |
12409 return null; | |
12410 } else if (parent is ConstructorFieldInitializer && identical(node, ((parent
as ConstructorFieldInitializer)).fieldName)) { | |
12411 return null; | |
12412 } else if (node.staticElement is PrefixElement) { | |
12413 return null; | |
12414 } | |
12415 return super.visitSimpleIdentifier(node); | |
12416 } | |
12417 Object visitTypeName(TypeName node) { | |
12418 if (node.type == null) { | |
12419 _unresolvedTypes.add(node); | |
12420 } else { | |
12421 _resolvedTypeCount++; | |
12422 } | |
12423 return null; | |
12424 } | |
12425 String getFileName(ASTNode node) { | |
12426 if (node != null) { | |
12427 ASTNode root = node.root; | |
12428 if (root is CompilationUnit) { | |
12429 CompilationUnit rootCU = root as CompilationUnit; | |
12430 if (rootCU.element != null) { | |
12431 return rootCU.element.source.fullName; | |
12432 } else { | |
12433 return "<unknown file- CompilationUnit.getElement() returned null>"; | |
12434 } | |
12435 } else { | |
12436 return "<unknown file- CompilationUnit.getRoot() is not a CompilationUni
t>"; | |
12437 } | |
12438 } | |
12439 return "<unknown file- ASTNode is null>"; | |
12440 } | |
12441 } | |
12442 /** | |
12443 * The class `StrictModeTest` contains tests to ensure that the correct errors a
nd warnings | |
12444 * are reported when the analysis engine is run in strict mode. | |
12445 */ | |
12446 class StrictModeTest extends ResolverTestCase { | |
12447 void fail_for() { | |
12448 Source source = addSource(EngineTestCase.createSource([ | |
12449 "int f(List<int> list) {", | |
12450 " num sum = 0;", | |
12451 " for (num i = 0; i < list.length; i++) {", | |
12452 " sum += list[i];", | |
12453 " }", | |
12454 "}"])); | |
12455 resolve(source); | |
12456 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12457 } | |
12458 void setUp() { | |
12459 super.setUp(); | |
12460 AnalysisOptionsImpl options = new AnalysisOptionsImpl(); | |
12461 options.strictMode = true; | |
12462 options.hint = false; | |
12463 analysisContext.analysisOptions = options; | |
12464 } | |
12465 void test_assert_is() { | |
12466 Source source = addSource(EngineTestCase.createSource([ | |
12467 "int f(num n) {", | |
12468 " assert (n is int);", | |
12469 " return n & 0x0F;", | |
12470 "}"])); | |
12471 resolve(source); | |
12472 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12473 } | |
12474 void test_conditional_and_is() { | |
12475 Source source = addSource(EngineTestCase.createSource([ | |
12476 "int f(num n) {", | |
12477 " return (n is int && n > 0) ? n & 0x0F : 0;", | |
12478 "}"])); | |
12479 resolve(source); | |
12480 assertNoErrors(source); | |
12481 } | |
12482 void test_conditional_is() { | |
12483 Source source = addSource(EngineTestCase.createSource([ | |
12484 "int f(num n) {", | |
12485 " return (n is int) ? n & 0x0F : 0;", | |
12486 "}"])); | |
12487 resolve(source); | |
12488 assertNoErrors(source); | |
12489 } | |
12490 void test_conditional_isNot() { | |
12491 Source source = addSource(EngineTestCase.createSource([ | |
12492 "int f(num n) {", | |
12493 " return (n is! int) ? 0 : n & 0x0F;", | |
12494 "}"])); | |
12495 resolve(source); | |
12496 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12497 } | |
12498 void test_conditional_or_is() { | |
12499 Source source = addSource(EngineTestCase.createSource([ | |
12500 "int f(num n) {", | |
12501 " return (n is! int || n < 0) ? 0 : n & 0x0F;", | |
12502 "}"])); | |
12503 resolve(source); | |
12504 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12505 } | |
12506 void test_forEach() { | |
12507 Source source = addSource(EngineTestCase.createSource([ | |
12508 "int f(List<int> list) {", | |
12509 " num sum = 0;", | |
12510 " for (num n in list) {", | |
12511 " sum += n & 0x0F;", | |
12512 " }", | |
12513 "}"])); | |
12514 resolve(source); | |
12515 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12516 } | |
12517 void test_if_and_is() { | |
12518 Source source = addSource(EngineTestCase.createSource([ | |
12519 "int f(num n) {", | |
12520 " if (n is int && n > 0) {", | |
12521 " return n & 0x0F;", | |
12522 " }", | |
12523 " return 0;", | |
12524 "}"])); | |
12525 resolve(source); | |
12526 assertNoErrors(source); | |
12527 } | |
12528 void test_if_is() { | |
12529 Source source = addSource(EngineTestCase.createSource([ | |
12530 "int f(num n) {", | |
12531 " if (n is int) {", | |
12532 " return n & 0x0F;", | |
12533 " }", | |
12534 " return 0;", | |
12535 "}"])); | |
12536 resolve(source); | |
12537 assertNoErrors(source); | |
12538 } | |
12539 void test_if_isNot() { | |
12540 Source source = addSource(EngineTestCase.createSource([ | |
12541 "int f(num n) {", | |
12542 " if (n is! int) {", | |
12543 " return 0;", | |
12544 " } else {", | |
12545 " return n & 0x0F;", | |
12546 " }", | |
12547 "}"])); | |
12548 resolve(source); | |
12549 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12550 } | |
12551 void test_if_isNot_abrupt() { | |
12552 Source source = addSource(EngineTestCase.createSource([ | |
12553 "int f(num n) {", | |
12554 " if (n is! int) {", | |
12555 " return 0;", | |
12556 " }", | |
12557 " return n & 0x0F;", | |
12558 "}"])); | |
12559 resolve(source); | |
12560 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12561 } | |
12562 void test_if_or_is() { | |
12563 Source source = addSource(EngineTestCase.createSource([ | |
12564 "int f(num n) {", | |
12565 " if (n is! int || n < 0) {", | |
12566 " return 0;", | |
12567 " } else {", | |
12568 " return n & 0x0F;", | |
12569 " }", | |
12570 "}"])); | |
12571 resolve(source); | |
12572 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12573 } | |
12574 void test_localVar() { | |
12575 Source source = addSource(EngineTestCase.createSource(["int f() {", " num n
= 1234;", " return n & 0x0F;", "}"])); | |
12576 resolve(source); | |
12577 assertErrors(source, [StaticTypeWarningCode.UNDEFINED_OPERATOR]); | |
12578 } | |
12579 static dartSuite() { | |
12580 _ut.group('StrictModeTest', () { | |
12581 _ut.test('test_assert_is', () { | |
12582 final __test = new StrictModeTest(); | |
12583 runJUnitTest(__test, __test.test_assert_is); | |
12584 }); | |
12585 _ut.test('test_conditional_and_is', () { | |
12586 final __test = new StrictModeTest(); | |
12587 runJUnitTest(__test, __test.test_conditional_and_is); | |
12588 }); | |
12589 _ut.test('test_conditional_is', () { | |
12590 final __test = new StrictModeTest(); | |
12591 runJUnitTest(__test, __test.test_conditional_is); | |
12592 }); | |
12593 _ut.test('test_conditional_isNot', () { | |
12594 final __test = new StrictModeTest(); | |
12595 runJUnitTest(__test, __test.test_conditional_isNot); | |
12596 }); | |
12597 _ut.test('test_conditional_or_is', () { | |
12598 final __test = new StrictModeTest(); | |
12599 runJUnitTest(__test, __test.test_conditional_or_is); | |
12600 }); | |
12601 _ut.test('test_forEach', () { | |
12602 final __test = new StrictModeTest(); | |
12603 runJUnitTest(__test, __test.test_forEach); | |
12604 }); | |
12605 _ut.test('test_if_and_is', () { | |
12606 final __test = new StrictModeTest(); | |
12607 runJUnitTest(__test, __test.test_if_and_is); | |
12608 }); | |
12609 _ut.test('test_if_is', () { | |
12610 final __test = new StrictModeTest(); | |
12611 runJUnitTest(__test, __test.test_if_is); | |
12612 }); | |
12613 _ut.test('test_if_isNot', () { | |
12614 final __test = new StrictModeTest(); | |
12615 runJUnitTest(__test, __test.test_if_isNot); | |
12616 }); | |
12617 _ut.test('test_if_isNot_abrupt', () { | |
12618 final __test = new StrictModeTest(); | |
12619 runJUnitTest(__test, __test.test_if_isNot_abrupt); | |
12620 }); | |
12621 _ut.test('test_if_or_is', () { | |
12622 final __test = new StrictModeTest(); | |
12623 runJUnitTest(__test, __test.test_if_or_is); | |
12624 }); | |
12625 _ut.test('test_localVar', () { | |
12626 final __test = new StrictModeTest(); | |
12627 runJUnitTest(__test, __test.test_localVar); | |
12628 }); | |
12629 }); | |
12630 } | |
12631 } | |
12632 class ElementResolverTest extends EngineTestCase { | |
12633 | |
12634 /** | |
12635 * The error listener to which errors will be reported. | |
12636 */ | |
12637 GatheringErrorListener _listener; | |
12638 | |
12639 /** | |
12640 * The type provider used to access the types. | |
12641 */ | |
12642 TestTypeProvider _typeProvider; | |
12643 | |
12644 /** | |
12645 * The library containing the code being resolved. | |
12646 */ | |
12647 LibraryElementImpl _definingLibrary; | |
12648 | |
12649 /** | |
12650 * The resolver visitor that maintains the state for the resolver. | |
12651 */ | |
12652 ResolverVisitor _visitor; | |
12653 | |
12654 /** | |
12655 * The resolver being used to resolve the test cases. | |
12656 */ | |
12657 ElementResolver _resolver; | |
12658 void fail_visitExportDirective_combinators() { | |
12659 JUnitTestCase.fail("Not yet tested"); | |
12660 ExportDirective directive = ASTFactory.exportDirective2(null, [ASTFactory.hi
deCombinator2(["A"])]); | |
12661 resolveNode(directive, []); | |
12662 _listener.assertNoErrors(); | |
12663 } | |
12664 void fail_visitFunctionExpressionInvocation() { | |
12665 JUnitTestCase.fail("Not yet tested"); | |
12666 _listener.assertNoErrors(); | |
12667 } | |
12668 void fail_visitImportDirective_combinators_noPrefix() { | |
12669 JUnitTestCase.fail("Not yet tested"); | |
12670 ImportDirective directive = ASTFactory.importDirective2(null, null, [ASTFact
ory.showCombinator2(["A"])]); | |
12671 resolveNode(directive, []); | |
12672 _listener.assertNoErrors(); | |
12673 } | |
12674 void fail_visitImportDirective_combinators_prefix() { | |
12675 JUnitTestCase.fail("Not yet tested"); | |
12676 String prefixName = "p"; | |
12677 _definingLibrary.imports = <ImportElement> [ElementFactory.importFor(null, E
lementFactory.prefix(prefixName), [])]; | |
12678 ImportDirective directive = ASTFactory.importDirective2(null, prefixName, [ | |
12679 ASTFactory.showCombinator2(["A"]), | |
12680 ASTFactory.hideCombinator2(["B"])]); | |
12681 resolveNode(directive, []); | |
12682 _listener.assertNoErrors(); | |
12683 } | |
12684 void fail_visitRedirectingConstructorInvocation() { | |
12685 JUnitTestCase.fail("Not yet tested"); | |
12686 _listener.assertNoErrors(); | |
12687 } | |
12688 void setUp() { | |
12689 _listener = new GatheringErrorListener(); | |
12690 _typeProvider = new TestTypeProvider(); | |
12691 _resolver = createResolver(); | |
12692 } | |
12693 void test_lookUpMethodInInterfaces() { | |
12694 InterfaceType intType = _typeProvider.intType; | |
12695 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12696 MethodElement operator = ElementFactory.methodElement("[]", intType, [intTyp
e]); | |
12697 classA.methods = <MethodElement> [operator]; | |
12698 ClassElementImpl classB = ElementFactory.classElement2("B", []); | |
12699 classB.interfaces = <InterfaceType> [classA.type]; | |
12700 ClassElementImpl classC = ElementFactory.classElement2("C", []); | |
12701 classC.mixins = <InterfaceType> [classB.type]; | |
12702 ClassElementImpl classD = ElementFactory.classElement("D", classC.type, []); | |
12703 SimpleIdentifier array = ASTFactory.identifier3("a"); | |
12704 array.staticType = classD.type; | |
12705 IndexExpression expression = ASTFactory.indexExpression(array, ASTFactory.id
entifier3("i")); | |
12706 JUnitTestCase.assertSame(operator, resolve5(expression, [])); | |
12707 _listener.assertNoErrors(); | |
12708 } | |
12709 void test_visitAssignmentExpression_compound() { | |
12710 InterfaceType intType = _typeProvider.intType; | |
12711 SimpleIdentifier leftHandSide = ASTFactory.identifier3("a"); | |
12712 leftHandSide.staticType = intType; | |
12713 AssignmentExpression assignment = ASTFactory.assignmentExpression(leftHandSi
de, TokenType.PLUS_EQ, ASTFactory.integer(1)); | |
12714 resolveNode(assignment, []); | |
12715 JUnitTestCase.assertSame(getMethod(_typeProvider.numType, "+"), assignment.s
taticElement); | |
12716 _listener.assertNoErrors(); | |
12717 } | |
12718 void test_visitAssignmentExpression_simple() { | |
12719 AssignmentExpression expression = ASTFactory.assignmentExpression(ASTFactory
.identifier3("x"), TokenType.EQ, ASTFactory.integer(0)); | |
12720 resolveNode(expression, []); | |
12721 JUnitTestCase.assertNull(expression.staticElement); | |
12722 _listener.assertNoErrors(); | |
12723 } | |
12724 void test_visitBinaryExpression() { | |
12725 InterfaceType numType = _typeProvider.numType; | |
12726 SimpleIdentifier left = ASTFactory.identifier3("i"); | |
12727 left.staticType = numType; | |
12728 BinaryExpression expression = ASTFactory.binaryExpression(left, TokenType.PL
US, ASTFactory.identifier3("j")); | |
12729 resolveNode(expression, []); | |
12730 JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.staticElement
); | |
12731 _listener.assertNoErrors(); | |
12732 } | |
12733 void test_visitBreakStatement_withLabel() { | |
12734 String label = "loop"; | |
12735 LabelElementImpl labelElement = new LabelElementImpl(ASTFactory.identifier3(
label), false, false); | |
12736 BreakStatement statement = ASTFactory.breakStatement2(label); | |
12737 JUnitTestCase.assertSame(labelElement, resolve(statement, labelElement)); | |
12738 _listener.assertNoErrors(); | |
12739 } | |
12740 void test_visitBreakStatement_withoutLabel() { | |
12741 BreakStatement statement = ASTFactory.breakStatement(); | |
12742 resolveStatement(statement, null); | |
12743 _listener.assertNoErrors(); | |
12744 } | |
12745 void test_visitConstructorName_named() { | |
12746 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12747 String constructorName = "a"; | |
12748 ConstructorElement constructor = ElementFactory.constructorElement(classA, c
onstructorName); | |
12749 classA.constructors = <ConstructorElement> [constructor]; | |
12750 ConstructorName name = ASTFactory.constructorName(ASTFactory.typeName(classA
, []), constructorName); | |
12751 resolveNode(name, []); | |
12752 JUnitTestCase.assertSame(constructor, name.staticElement); | |
12753 _listener.assertNoErrors(); | |
12754 } | |
12755 void test_visitConstructorName_unnamed() { | |
12756 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12757 String constructorName = null; | |
12758 ConstructorElement constructor = ElementFactory.constructorElement(classA, c
onstructorName); | |
12759 classA.constructors = <ConstructorElement> [constructor]; | |
12760 ConstructorName name = ASTFactory.constructorName(ASTFactory.typeName(classA
, []), constructorName); | |
12761 resolveNode(name, []); | |
12762 JUnitTestCase.assertSame(constructor, name.staticElement); | |
12763 _listener.assertNoErrors(); | |
12764 } | |
12765 void test_visitContinueStatement_withLabel() { | |
12766 String label = "loop"; | |
12767 LabelElementImpl labelElement = new LabelElementImpl(ASTFactory.identifier3(
label), false, false); | |
12768 ContinueStatement statement = ASTFactory.continueStatement2(label); | |
12769 JUnitTestCase.assertSame(labelElement, resolve3(statement, labelElement)); | |
12770 _listener.assertNoErrors(); | |
12771 } | |
12772 void test_visitContinueStatement_withoutLabel() { | |
12773 ContinueStatement statement = ASTFactory.continueStatement(); | |
12774 resolveStatement(statement, null); | |
12775 _listener.assertNoErrors(); | |
12776 } | |
12777 void test_visitExportDirective_noCombinators() { | |
12778 ExportDirective directive = ASTFactory.exportDirective2(null, []); | |
12779 directive.element = ElementFactory.exportFor(ElementFactory.library(_definin
gLibrary.context, "lib"), []); | |
12780 resolveNode(directive, []); | |
12781 _listener.assertNoErrors(); | |
12782 } | |
12783 void test_visitFieldFormalParameter() { | |
12784 InterfaceType intType = _typeProvider.intType; | |
12785 String fieldName = "f"; | |
12786 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12787 classA.fields = <FieldElement> [ElementFactory.fieldElement(fieldName, false
, false, false, intType)]; | |
12788 FieldFormalParameter parameter = ASTFactory.fieldFormalParameter3(fieldName)
; | |
12789 parameter.identifier.staticElement = ElementFactory.fieldFormalParameter(par
ameter.identifier); | |
12790 resolveInClass(parameter, classA); | |
12791 JUnitTestCase.assertSame(intType, parameter.element.type); | |
12792 } | |
12793 void test_visitImportDirective_noCombinators_noPrefix() { | |
12794 ImportDirective directive = ASTFactory.importDirective2(null, null, []); | |
12795 directive.element = ElementFactory.importFor(ElementFactory.library(_definin
gLibrary.context, "lib"), null, []); | |
12796 resolveNode(directive, []); | |
12797 _listener.assertNoErrors(); | |
12798 } | |
12799 void test_visitImportDirective_noCombinators_prefix() { | |
12800 String prefixName = "p"; | |
12801 ImportElement importElement = ElementFactory.importFor(ElementFactory.librar
y(_definingLibrary.context, "lib"), ElementFactory.prefix(prefixName), []); | |
12802 _definingLibrary.imports = <ImportElement> [importElement]; | |
12803 ImportDirective directive = ASTFactory.importDirective2(null, prefixName, []
); | |
12804 directive.element = importElement; | |
12805 resolveNode(directive, []); | |
12806 _listener.assertNoErrors(); | |
12807 } | |
12808 void test_visitIndexExpression_get() { | |
12809 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12810 InterfaceType intType = _typeProvider.intType; | |
12811 MethodElement getter = ElementFactory.methodElement("[]", intType, [intType]
); | |
12812 classA.methods = <MethodElement> [getter]; | |
12813 SimpleIdentifier array = ASTFactory.identifier3("a"); | |
12814 array.staticType = classA.type; | |
12815 IndexExpression expression = ASTFactory.indexExpression(array, ASTFactory.id
entifier3("i")); | |
12816 JUnitTestCase.assertSame(getter, resolve5(expression, [])); | |
12817 _listener.assertNoErrors(); | |
12818 } | |
12819 void test_visitIndexExpression_set() { | |
12820 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12821 InterfaceType intType = _typeProvider.intType; | |
12822 MethodElement setter = ElementFactory.methodElement("[]=", intType, [intType
]); | |
12823 classA.methods = <MethodElement> [setter]; | |
12824 SimpleIdentifier array = ASTFactory.identifier3("a"); | |
12825 array.staticType = classA.type; | |
12826 IndexExpression expression = ASTFactory.indexExpression(array, ASTFactory.id
entifier3("i")); | |
12827 ASTFactory.assignmentExpression(expression, TokenType.EQ, ASTFactory.integer
(0)); | |
12828 JUnitTestCase.assertSame(setter, resolve5(expression, [])); | |
12829 _listener.assertNoErrors(); | |
12830 } | |
12831 void test_visitInstanceCreationExpression_named() { | |
12832 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12833 String constructorName = "a"; | |
12834 ConstructorElement constructor = ElementFactory.constructorElement(classA, c
onstructorName); | |
12835 classA.constructors = <ConstructorElement> [constructor]; | |
12836 ConstructorName name = ASTFactory.constructorName(ASTFactory.typeName(classA
, []), constructorName); | |
12837 name.staticElement = constructor; | |
12838 InstanceCreationExpression creation = ASTFactory.instanceCreationExpression(
Keyword.NEW, name, []); | |
12839 resolveNode(creation, []); | |
12840 JUnitTestCase.assertSame(constructor, creation.staticElement); | |
12841 _listener.assertNoErrors(); | |
12842 } | |
12843 void test_visitInstanceCreationExpression_unnamed() { | |
12844 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12845 String constructorName = null; | |
12846 ConstructorElement constructor = ElementFactory.constructorElement(classA, c
onstructorName); | |
12847 classA.constructors = <ConstructorElement> [constructor]; | |
12848 ConstructorName name = ASTFactory.constructorName(ASTFactory.typeName(classA
, []), constructorName); | |
12849 name.staticElement = constructor; | |
12850 InstanceCreationExpression creation = ASTFactory.instanceCreationExpression(
Keyword.NEW, name, []); | |
12851 resolveNode(creation, []); | |
12852 JUnitTestCase.assertSame(constructor, creation.staticElement); | |
12853 _listener.assertNoErrors(); | |
12854 } | |
12855 void test_visitInstanceCreationExpression_unnamed_namedParameter() { | |
12856 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12857 String constructorName = null; | |
12858 ConstructorElementImpl constructor = ElementFactory.constructorElement(class
A, constructorName); | |
12859 String parameterName = "a"; | |
12860 ParameterElement parameter = ElementFactory.namedParameter(parameterName); | |
12861 constructor.parameters = <ParameterElement> [parameter]; | |
12862 classA.constructors = <ConstructorElement> [constructor]; | |
12863 ConstructorName name = ASTFactory.constructorName(ASTFactory.typeName(classA
, []), constructorName); | |
12864 name.staticElement = constructor; | |
12865 InstanceCreationExpression creation = ASTFactory.instanceCreationExpression(
Keyword.NEW, name, [ASTFactory.namedExpression2(parameterName, ASTFactory.intege
r(0))]); | |
12866 resolveNode(creation, []); | |
12867 JUnitTestCase.assertSame(constructor, creation.staticElement); | |
12868 JUnitTestCase.assertSame(parameter, ((creation.argumentList.arguments[0] as
NamedExpression)).name.label.staticElement); | |
12869 _listener.assertNoErrors(); | |
12870 } | |
12871 void test_visitMethodInvocation() { | |
12872 InterfaceType numType = _typeProvider.numType; | |
12873 SimpleIdentifier left = ASTFactory.identifier3("i"); | |
12874 left.staticType = numType; | |
12875 String methodName = "abs"; | |
12876 MethodInvocation invocation = ASTFactory.methodInvocation(left, methodName,
[]); | |
12877 resolveNode(invocation, []); | |
12878 JUnitTestCase.assertSame(getMethod(numType, methodName), invocation.methodNa
me.staticElement); | |
12879 _listener.assertNoErrors(); | |
12880 } | |
12881 void test_visitMethodInvocation_namedParameter() { | |
12882 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12883 String methodName = "m"; | |
12884 String parameterName = "p"; | |
12885 MethodElementImpl method = ElementFactory.methodElement(methodName, null, []
); | |
12886 ParameterElement parameter = ElementFactory.namedParameter(parameterName); | |
12887 method.parameters = <ParameterElement> [parameter]; | |
12888 classA.methods = <MethodElement> [method]; | |
12889 SimpleIdentifier left = ASTFactory.identifier3("i"); | |
12890 left.staticType = classA.type; | |
12891 MethodInvocation invocation = ASTFactory.methodInvocation(left, methodName,
[ASTFactory.namedExpression2(parameterName, ASTFactory.integer(0))]); | |
12892 resolveNode(invocation, []); | |
12893 JUnitTestCase.assertSame(method, invocation.methodName.staticElement); | |
12894 JUnitTestCase.assertSame(parameter, ((invocation.argumentList.arguments[0] a
s NamedExpression)).name.label.staticElement); | |
12895 _listener.assertNoErrors(); | |
12896 } | |
12897 void test_visitPostfixExpression() { | |
12898 InterfaceType numType = _typeProvider.numType; | |
12899 SimpleIdentifier operand = ASTFactory.identifier3("i"); | |
12900 operand.staticType = numType; | |
12901 PostfixExpression expression = ASTFactory.postfixExpression(operand, TokenTy
pe.PLUS_PLUS); | |
12902 resolveNode(expression, []); | |
12903 JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.staticElement
); | |
12904 _listener.assertNoErrors(); | |
12905 } | |
12906 void test_visitPrefixedIdentifier_dynamic() { | |
12907 Type2 dynamicType = _typeProvider.dynamicType; | |
12908 SimpleIdentifier target = ASTFactory.identifier3("a"); | |
12909 VariableElementImpl variable = ElementFactory.localVariableElement(target); | |
12910 variable.type = dynamicType; | |
12911 target.staticElement = variable; | |
12912 target.staticType = dynamicType; | |
12913 PrefixedIdentifier identifier = ASTFactory.identifier(target, ASTFactory.ide
ntifier3("b")); | |
12914 resolveNode(identifier, []); | |
12915 JUnitTestCase.assertNull(identifier.staticElement); | |
12916 JUnitTestCase.assertNull(identifier.identifier.staticElement); | |
12917 _listener.assertNoErrors(); | |
12918 } | |
12919 void test_visitPrefixedIdentifier_nonDynamic() { | |
12920 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12921 String getterName = "b"; | |
12922 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa
lse, _typeProvider.intType); | |
12923 classA.accessors = <PropertyAccessorElement> [getter]; | |
12924 SimpleIdentifier target = ASTFactory.identifier3("a"); | |
12925 VariableElementImpl variable = ElementFactory.localVariableElement(target); | |
12926 variable.type = classA.type; | |
12927 target.staticElement = variable; | |
12928 target.staticType = classA.type; | |
12929 PrefixedIdentifier identifier = ASTFactory.identifier(target, ASTFactory.ide
ntifier3(getterName)); | |
12930 resolveNode(identifier, []); | |
12931 JUnitTestCase.assertSame(getter, identifier.staticElement); | |
12932 JUnitTestCase.assertSame(getter, identifier.identifier.staticElement); | |
12933 _listener.assertNoErrors(); | |
12934 } | |
12935 void test_visitPrefixExpression() { | |
12936 InterfaceType numType = _typeProvider.numType; | |
12937 SimpleIdentifier operand = ASTFactory.identifier3("i"); | |
12938 operand.staticType = numType; | |
12939 PrefixExpression expression = ASTFactory.prefixExpression(TokenType.PLUS_PLU
S, operand); | |
12940 resolveNode(expression, []); | |
12941 JUnitTestCase.assertEquals(getMethod(numType, "+"), expression.staticElement
); | |
12942 _listener.assertNoErrors(); | |
12943 } | |
12944 void test_visitPropertyAccess_getter_identifier() { | |
12945 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12946 String getterName = "b"; | |
12947 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa
lse, _typeProvider.intType); | |
12948 classA.accessors = <PropertyAccessorElement> [getter]; | |
12949 SimpleIdentifier target = ASTFactory.identifier3("a"); | |
12950 target.staticType = classA.type; | |
12951 PropertyAccess access = ASTFactory.propertyAccess2(target, getterName); | |
12952 resolveNode(access, []); | |
12953 JUnitTestCase.assertSame(getter, access.propertyName.staticElement); | |
12954 _listener.assertNoErrors(); | |
12955 } | |
12956 void test_visitPropertyAccess_getter_super() { | |
12957 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12958 String getterName = "b"; | |
12959 PropertyAccessorElement getter = ElementFactory.getterElement(getterName, fa
lse, _typeProvider.intType); | |
12960 classA.accessors = <PropertyAccessorElement> [getter]; | |
12961 SuperExpression target = ASTFactory.superExpression(); | |
12962 target.staticType = ElementFactory.classElement("B", classA.type, []).type; | |
12963 PropertyAccess access = ASTFactory.propertyAccess2(target, getterName); | |
12964 ASTFactory.methodDeclaration2(null, null, null, null, ASTFactory.identifier3
("m"), ASTFactory.formalParameterList([]), ASTFactory.expressionFunctionBody(acc
ess)); | |
12965 resolveNode(access, []); | |
12966 JUnitTestCase.assertSame(getter, access.propertyName.staticElement); | |
12967 _listener.assertNoErrors(); | |
12968 } | |
12969 void test_visitPropertyAccess_setter_this() { | |
12970 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
12971 String setterName = "b"; | |
12972 PropertyAccessorElement setter = ElementFactory.setterElement(setterName, fa
lse, _typeProvider.intType); | |
12973 classA.accessors = <PropertyAccessorElement> [setter]; | |
12974 ThisExpression target = ASTFactory.thisExpression(); | |
12975 target.staticType = classA.type; | |
12976 PropertyAccess access = ASTFactory.propertyAccess2(target, setterName); | |
12977 ASTFactory.assignmentExpression(access, TokenType.EQ, ASTFactory.integer(0))
; | |
12978 resolveNode(access, []); | |
12979 JUnitTestCase.assertSame(setter, access.propertyName.staticElement); | |
12980 _listener.assertNoErrors(); | |
12981 } | |
12982 void test_visitSimpleIdentifier_classScope() { | |
12983 InterfaceType doubleType = _typeProvider.doubleType; | |
12984 String fieldName = "NAN"; | |
12985 SimpleIdentifier node = ASTFactory.identifier3(fieldName); | |
12986 resolveInClass(node, doubleType.element); | |
12987 JUnitTestCase.assertEquals(getGetter(doubleType, fieldName), node.staticElem
ent); | |
12988 _listener.assertNoErrors(); | |
12989 } | |
12990 void test_visitSimpleIdentifier_dynamic() { | |
12991 SimpleIdentifier node = ASTFactory.identifier3("dynamic"); | |
12992 resolve4(node, []); | |
12993 JUnitTestCase.assertSame(_typeProvider.dynamicType.element, node.staticEleme
nt); | |
12994 JUnitTestCase.assertSame(_typeProvider.typeType, node.staticType); | |
12995 _listener.assertNoErrors(); | |
12996 } | |
12997 void test_visitSimpleIdentifier_lexicalScope() { | |
12998 SimpleIdentifier node = ASTFactory.identifier3("i"); | |
12999 VariableElementImpl element = ElementFactory.localVariableElement(node); | |
13000 JUnitTestCase.assertSame(element, resolve4(node, [element])); | |
13001 _listener.assertNoErrors(); | |
13002 } | |
13003 void test_visitSimpleIdentifier_lexicalScope_field_setter() { | |
13004 InterfaceType intType = _typeProvider.intType; | |
13005 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
13006 String fieldName = "a"; | |
13007 FieldElement field = ElementFactory.fieldElement(fieldName, false, false, fa
lse, intType); | |
13008 classA.fields = <FieldElement> [field]; | |
13009 classA.accessors = <PropertyAccessorElement> [field.getter, field.setter]; | |
13010 SimpleIdentifier node = ASTFactory.identifier3(fieldName); | |
13011 ASTFactory.assignmentExpression(node, TokenType.EQ, ASTFactory.integer(0)); | |
13012 resolveInClass(node, classA); | |
13013 Element element = node.staticElement; | |
13014 EngineTestCase.assertInstanceOf(PropertyAccessorElement, element); | |
13015 JUnitTestCase.assertTrue(((element as PropertyAccessorElement)).isSetter); | |
13016 _listener.assertNoErrors(); | |
13017 } | |
13018 void test_visitSuperConstructorInvocation() { | |
13019 ClassElementImpl superclass = ElementFactory.classElement2("A", []); | |
13020 ConstructorElementImpl superConstructor = ElementFactory.constructorElement(
superclass, null); | |
13021 superclass.constructors = <ConstructorElement> [superConstructor]; | |
13022 ClassElementImpl subclass = ElementFactory.classElement("B", superclass.type
, []); | |
13023 ConstructorElementImpl subConstructor = ElementFactory.constructorElement(su
bclass, null); | |
13024 subclass.constructors = <ConstructorElement> [subConstructor]; | |
13025 SuperConstructorInvocation invocation = ASTFactory.superConstructorInvocatio
n([]); | |
13026 resolveInClass(invocation, subclass); | |
13027 JUnitTestCase.assertEquals(superConstructor, invocation.staticElement); | |
13028 _listener.assertNoErrors(); | |
13029 } | |
13030 void test_visitSuperConstructorInvocation_namedParameter() { | |
13031 ClassElementImpl superclass = ElementFactory.classElement2("A", []); | |
13032 ConstructorElementImpl superConstructor = ElementFactory.constructorElement(
superclass, null); | |
13033 String parameterName = "p"; | |
13034 ParameterElement parameter = ElementFactory.namedParameter(parameterName); | |
13035 superConstructor.parameters = <ParameterElement> [parameter]; | |
13036 superclass.constructors = <ConstructorElement> [superConstructor]; | |
13037 ClassElementImpl subclass = ElementFactory.classElement("B", superclass.type
, []); | |
13038 ConstructorElementImpl subConstructor = ElementFactory.constructorElement(su
bclass, null); | |
13039 subclass.constructors = <ConstructorElement> [subConstructor]; | |
13040 SuperConstructorInvocation invocation = ASTFactory.superConstructorInvocatio
n([ASTFactory.namedExpression2(parameterName, ASTFactory.integer(0))]); | |
13041 resolveInClass(invocation, subclass); | |
13042 JUnitTestCase.assertEquals(superConstructor, invocation.staticElement); | |
13043 JUnitTestCase.assertSame(parameter, ((invocation.argumentList.arguments[0] a
s NamedExpression)).name.label.staticElement); | |
13044 _listener.assertNoErrors(); | |
13045 } | |
13046 | |
13047 /** | |
13048 * Create the resolver used by the tests. | |
13049 * | |
13050 * @return the resolver that was created | |
13051 */ | |
13052 ElementResolver createResolver() { | |
13053 AnalysisContextImpl context = new AnalysisContextImpl(); | |
13054 ContentCache contentCache = new ContentCache(); | |
13055 SourceFactory sourceFactory = new SourceFactory.con1(contentCache, [new Dart
UriResolver(DirectoryBasedDartSdk.defaultSdk)]); | |
13056 context.sourceFactory = sourceFactory; | |
13057 FileBasedSource source = new FileBasedSource.con1(contentCache, FileUtilitie
s2.createFile("/test.dart")); | |
13058 CompilationUnitElementImpl definingCompilationUnit = new CompilationUnitElem
entImpl("test.dart"); | |
13059 definingCompilationUnit.source = source; | |
13060 _definingLibrary = ElementFactory.library(context, "test"); | |
13061 _definingLibrary.definingCompilationUnit = definingCompilationUnit; | |
13062 Library library = new Library(context, _listener, source); | |
13063 library.libraryElement = _definingLibrary; | |
13064 _visitor = new ResolverVisitor.con1(library, source, _typeProvider); | |
13065 try { | |
13066 return _visitor.elementResolver_J2DAccessor as ElementResolver; | |
13067 } on JavaException catch (exception) { | |
13068 throw new IllegalArgumentException("Could not create resolver", exception)
; | |
13069 } | |
13070 } | |
13071 | |
13072 /** | |
13073 * Return the element associated with the label of the given statement after t
he resolver has | |
13074 * resolved the statement. | |
13075 * | |
13076 * @param statement the statement to be resolved | |
13077 * @param labelElement the label element to be defined in the statement's labe
l scope | |
13078 * @return the element to which the statement's label was resolved | |
13079 */ | |
13080 Element resolve(BreakStatement statement, LabelElementImpl labelElement) { | |
13081 resolveStatement(statement, labelElement); | |
13082 return statement.label.staticElement; | |
13083 } | |
13084 | |
13085 /** | |
13086 * Return the element associated with the label of the given statement after t
he resolver has | |
13087 * resolved the statement. | |
13088 * | |
13089 * @param statement the statement to be resolved | |
13090 * @param labelElement the label element to be defined in the statement's labe
l scope | |
13091 * @return the element to which the statement's label was resolved | |
13092 */ | |
13093 Element resolve3(ContinueStatement statement, LabelElementImpl labelElement) { | |
13094 resolveStatement(statement, labelElement); | |
13095 return statement.label.staticElement; | |
13096 } | |
13097 | |
13098 /** | |
13099 * Return the element associated with the given identifier after the resolver
has resolved the | |
13100 * identifier. | |
13101 * | |
13102 * @param node the expression to be resolved | |
13103 * @param definedElements the elements that are to be defined in the scope in
which the element is | |
13104 * being resolved | |
13105 * @return the element to which the expression was resolved | |
13106 */ | |
13107 Element resolve4(Identifier node, List<Element> definedElements) { | |
13108 resolveNode(node, definedElements); | |
13109 return node.staticElement; | |
13110 } | |
13111 | |
13112 /** | |
13113 * Return the element associated with the given expression after the resolver
has resolved the | |
13114 * expression. | |
13115 * | |
13116 * @param node the expression to be resolved | |
13117 * @param definedElements the elements that are to be defined in the scope in
which the element is | |
13118 * being resolved | |
13119 * @return the element to which the expression was resolved | |
13120 */ | |
13121 Element resolve5(IndexExpression node, List<Element> definedElements) { | |
13122 resolveNode(node, definedElements); | |
13123 return node.staticElement; | |
13124 } | |
13125 | |
13126 /** | |
13127 * Return the element associated with the given identifier after the resolver
has resolved the | |
13128 * identifier. | |
13129 * | |
13130 * @param node the expression to be resolved | |
13131 * @param enclosingClass the element representing the class enclosing the iden
tifier | |
13132 * @return the element to which the expression was resolved | |
13133 */ | |
13134 void resolveInClass(ASTNode node, ClassElement enclosingClass) { | |
13135 try { | |
13136 Scope outerScope = _visitor.nameScope_J2DAccessor as Scope; | |
13137 try { | |
13138 _visitor.enclosingClass_J2DAccessor = enclosingClass; | |
13139 EnclosedScope innerScope = new ClassScope(outerScope, enclosingClass); | |
13140 _visitor.nameScope_J2DAccessor = innerScope; | |
13141 node.accept(_resolver); | |
13142 } finally { | |
13143 _visitor.enclosingClass_J2DAccessor = null; | |
13144 _visitor.nameScope_J2DAccessor = outerScope; | |
13145 } | |
13146 } on JavaException catch (exception) { | |
13147 throw new IllegalArgumentException("Could not resolve node", exception); | |
13148 } | |
13149 } | |
13150 | |
13151 /** | |
13152 * Return the element associated with the given identifier after the resolver
has resolved the | |
13153 * identifier. | |
13154 * | |
13155 * @param node the expression to be resolved | |
13156 * @param definedElements the elements that are to be defined in the scope in
which the element is | |
13157 * being resolved | |
13158 * @return the element to which the expression was resolved | |
13159 */ | |
13160 void resolveNode(ASTNode node, List<Element> definedElements) { | |
13161 try { | |
13162 Scope outerScope = _visitor.nameScope_J2DAccessor as Scope; | |
13163 try { | |
13164 EnclosedScope innerScope = new EnclosedScope(outerScope); | |
13165 for (Element element in definedElements) { | |
13166 innerScope.define(element); | |
13167 } | |
13168 _visitor.nameScope_J2DAccessor = innerScope; | |
13169 node.accept(_resolver); | |
13170 } finally { | |
13171 _visitor.nameScope_J2DAccessor = outerScope; | |
13172 } | |
13173 } on JavaException catch (exception) { | |
13174 throw new IllegalArgumentException("Could not resolve node", exception); | |
13175 } | |
13176 } | |
13177 | |
13178 /** | |
13179 * Return the element associated with the label of the given statement after t
he resolver has | |
13180 * resolved the statement. | |
13181 * | |
13182 * @param statement the statement to be resolved | |
13183 * @param labelElement the label element to be defined in the statement's labe
l scope | |
13184 * @return the element to which the statement's label was resolved | |
13185 */ | |
13186 void resolveStatement(Statement statement, LabelElementImpl labelElement) { | |
13187 try { | |
13188 LabelScope outerScope = _visitor.labelScope_J2DAccessor as LabelScope; | |
13189 try { | |
13190 LabelScope innerScope; | |
13191 if (labelElement == null) { | |
13192 innerScope = new LabelScope.con1(outerScope, false, false); | |
13193 } else { | |
13194 innerScope = new LabelScope.con2(outerScope, labelElement.name, labelE
lement); | |
13195 } | |
13196 _visitor.labelScope_J2DAccessor = innerScope; | |
13197 statement.accept(_resolver); | |
13198 } finally { | |
13199 _visitor.labelScope_J2DAccessor = outerScope; | |
13200 } | |
13201 } on JavaException catch (exception) { | |
13202 throw new IllegalArgumentException("Could not resolve node", exception); | |
13203 } | |
13204 } | |
13205 static dartSuite() { | |
13206 _ut.group('ElementResolverTest', () { | |
13207 _ut.test('test_lookUpMethodInInterfaces', () { | |
13208 final __test = new ElementResolverTest(); | |
13209 runJUnitTest(__test, __test.test_lookUpMethodInInterfaces); | |
13210 }); | |
13211 _ut.test('test_visitAssignmentExpression_compound', () { | |
13212 final __test = new ElementResolverTest(); | |
13213 runJUnitTest(__test, __test.test_visitAssignmentExpression_compound); | |
13214 }); | |
13215 _ut.test('test_visitAssignmentExpression_simple', () { | |
13216 final __test = new ElementResolverTest(); | |
13217 runJUnitTest(__test, __test.test_visitAssignmentExpression_simple); | |
13218 }); | |
13219 _ut.test('test_visitBinaryExpression', () { | |
13220 final __test = new ElementResolverTest(); | |
13221 runJUnitTest(__test, __test.test_visitBinaryExpression); | |
13222 }); | |
13223 _ut.test('test_visitBreakStatement_withLabel', () { | |
13224 final __test = new ElementResolverTest(); | |
13225 runJUnitTest(__test, __test.test_visitBreakStatement_withLabel); | |
13226 }); | |
13227 _ut.test('test_visitBreakStatement_withoutLabel', () { | |
13228 final __test = new ElementResolverTest(); | |
13229 runJUnitTest(__test, __test.test_visitBreakStatement_withoutLabel); | |
13230 }); | |
13231 _ut.test('test_visitConstructorName_named', () { | |
13232 final __test = new ElementResolverTest(); | |
13233 runJUnitTest(__test, __test.test_visitConstructorName_named); | |
13234 }); | |
13235 _ut.test('test_visitConstructorName_unnamed', () { | |
13236 final __test = new ElementResolverTest(); | |
13237 runJUnitTest(__test, __test.test_visitConstructorName_unnamed); | |
13238 }); | |
13239 _ut.test('test_visitContinueStatement_withLabel', () { | |
13240 final __test = new ElementResolverTest(); | |
13241 runJUnitTest(__test, __test.test_visitContinueStatement_withLabel); | |
13242 }); | |
13243 _ut.test('test_visitContinueStatement_withoutLabel', () { | |
13244 final __test = new ElementResolverTest(); | |
13245 runJUnitTest(__test, __test.test_visitContinueStatement_withoutLabel); | |
13246 }); | |
13247 _ut.test('test_visitExportDirective_noCombinators', () { | |
13248 final __test = new ElementResolverTest(); | |
13249 runJUnitTest(__test, __test.test_visitExportDirective_noCombinators); | |
13250 }); | |
13251 _ut.test('test_visitFieldFormalParameter', () { | |
13252 final __test = new ElementResolverTest(); | |
13253 runJUnitTest(__test, __test.test_visitFieldFormalParameter); | |
13254 }); | |
13255 _ut.test('test_visitImportDirective_noCombinators_noPrefix', () { | |
13256 final __test = new ElementResolverTest(); | |
13257 runJUnitTest(__test, __test.test_visitImportDirective_noCombinators_noPr
efix); | |
13258 }); | |
13259 _ut.test('test_visitImportDirective_noCombinators_prefix', () { | |
13260 final __test = new ElementResolverTest(); | |
13261 runJUnitTest(__test, __test.test_visitImportDirective_noCombinators_pref
ix); | |
13262 }); | |
13263 _ut.test('test_visitIndexExpression_get', () { | |
13264 final __test = new ElementResolverTest(); | |
13265 runJUnitTest(__test, __test.test_visitIndexExpression_get); | |
13266 }); | |
13267 _ut.test('test_visitIndexExpression_set', () { | |
13268 final __test = new ElementResolverTest(); | |
13269 runJUnitTest(__test, __test.test_visitIndexExpression_set); | |
13270 }); | |
13271 _ut.test('test_visitInstanceCreationExpression_named', () { | |
13272 final __test = new ElementResolverTest(); | |
13273 runJUnitTest(__test, __test.test_visitInstanceCreationExpression_named); | |
13274 }); | |
13275 _ut.test('test_visitInstanceCreationExpression_unnamed', () { | |
13276 final __test = new ElementResolverTest(); | |
13277 runJUnitTest(__test, __test.test_visitInstanceCreationExpression_unnamed
); | |
13278 }); | |
13279 _ut.test('test_visitInstanceCreationExpression_unnamed_namedParameter', ()
{ | |
13280 final __test = new ElementResolverTest(); | |
13281 runJUnitTest(__test, __test.test_visitInstanceCreationExpression_unnamed
_namedParameter); | |
13282 }); | |
13283 _ut.test('test_visitMethodInvocation', () { | |
13284 final __test = new ElementResolverTest(); | |
13285 runJUnitTest(__test, __test.test_visitMethodInvocation); | |
13286 }); | |
13287 _ut.test('test_visitMethodInvocation_namedParameter', () { | |
13288 final __test = new ElementResolverTest(); | |
13289 runJUnitTest(__test, __test.test_visitMethodInvocation_namedParameter); | |
13290 }); | |
13291 _ut.test('test_visitPostfixExpression', () { | |
13292 final __test = new ElementResolverTest(); | |
13293 runJUnitTest(__test, __test.test_visitPostfixExpression); | |
13294 }); | |
13295 _ut.test('test_visitPrefixExpression', () { | |
13296 final __test = new ElementResolverTest(); | |
13297 runJUnitTest(__test, __test.test_visitPrefixExpression); | |
13298 }); | |
13299 _ut.test('test_visitPrefixedIdentifier_dynamic', () { | |
13300 final __test = new ElementResolverTest(); | |
13301 runJUnitTest(__test, __test.test_visitPrefixedIdentifier_dynamic); | |
13302 }); | |
13303 _ut.test('test_visitPrefixedIdentifier_nonDynamic', () { | |
13304 final __test = new ElementResolverTest(); | |
13305 runJUnitTest(__test, __test.test_visitPrefixedIdentifier_nonDynamic); | |
13306 }); | |
13307 _ut.test('test_visitPropertyAccess_getter_identifier', () { | |
13308 final __test = new ElementResolverTest(); | |
13309 runJUnitTest(__test, __test.test_visitPropertyAccess_getter_identifier); | |
13310 }); | |
13311 _ut.test('test_visitPropertyAccess_getter_super', () { | |
13312 final __test = new ElementResolverTest(); | |
13313 runJUnitTest(__test, __test.test_visitPropertyAccess_getter_super); | |
13314 }); | |
13315 _ut.test('test_visitPropertyAccess_setter_this', () { | |
13316 final __test = new ElementResolverTest(); | |
13317 runJUnitTest(__test, __test.test_visitPropertyAccess_setter_this); | |
13318 }); | |
13319 _ut.test('test_visitSimpleIdentifier_classScope', () { | |
13320 final __test = new ElementResolverTest(); | |
13321 runJUnitTest(__test, __test.test_visitSimpleIdentifier_classScope); | |
13322 }); | |
13323 _ut.test('test_visitSimpleIdentifier_dynamic', () { | |
13324 final __test = new ElementResolverTest(); | |
13325 runJUnitTest(__test, __test.test_visitSimpleIdentifier_dynamic); | |
13326 }); | |
13327 _ut.test('test_visitSimpleIdentifier_lexicalScope', () { | |
13328 final __test = new ElementResolverTest(); | |
13329 runJUnitTest(__test, __test.test_visitSimpleIdentifier_lexicalScope); | |
13330 }); | |
13331 _ut.test('test_visitSimpleIdentifier_lexicalScope_field_setter', () { | |
13332 final __test = new ElementResolverTest(); | |
13333 runJUnitTest(__test, __test.test_visitSimpleIdentifier_lexicalScope_fiel
d_setter); | |
13334 }); | |
13335 _ut.test('test_visitSuperConstructorInvocation', () { | |
13336 final __test = new ElementResolverTest(); | |
13337 runJUnitTest(__test, __test.test_visitSuperConstructorInvocation); | |
13338 }); | |
13339 _ut.test('test_visitSuperConstructorInvocation_namedParameter', () { | |
13340 final __test = new ElementResolverTest(); | |
13341 runJUnitTest(__test, __test.test_visitSuperConstructorInvocation_namedPa
rameter); | |
13342 }); | |
13343 }); | |
13344 } | |
13345 } | |
13346 class TypeOverrideManagerTest extends EngineTestCase { | |
13347 void test_exitScope_noScopes() { | |
13348 TypeOverrideManager manager = new TypeOverrideManager(); | |
13349 try { | |
13350 manager.exitScope(); | |
13351 JUnitTestCase.fail("Expected IllegalStateException"); | |
13352 } on IllegalStateException catch (exception) { | |
13353 } | |
13354 } | |
13355 void test_exitScope_oneScope() { | |
13356 TypeOverrideManager manager = new TypeOverrideManager(); | |
13357 manager.enterScope(); | |
13358 manager.exitScope(); | |
13359 try { | |
13360 manager.exitScope(); | |
13361 JUnitTestCase.fail("Expected IllegalStateException"); | |
13362 } on IllegalStateException catch (exception) { | |
13363 } | |
13364 } | |
13365 void test_exitScope_twoScopes() { | |
13366 TypeOverrideManager manager = new TypeOverrideManager(); | |
13367 manager.enterScope(); | |
13368 manager.exitScope(); | |
13369 manager.enterScope(); | |
13370 manager.exitScope(); | |
13371 try { | |
13372 manager.exitScope(); | |
13373 JUnitTestCase.fail("Expected IllegalStateException"); | |
13374 } on IllegalStateException catch (exception) { | |
13375 } | |
13376 } | |
13377 void test_getType_enclosedOverride() { | |
13378 TypeOverrideManager manager = new TypeOverrideManager(); | |
13379 LocalVariableElementImpl element = ElementFactory.localVariableElement2("v")
; | |
13380 InterfaceType type = ElementFactory.classElement2("C", []).type; | |
13381 manager.enterScope(); | |
13382 manager.setType(element, type); | |
13383 manager.enterScope(); | |
13384 JUnitTestCase.assertSame(type, manager.getType(element)); | |
13385 } | |
13386 void test_getType_immediateOverride() { | |
13387 TypeOverrideManager manager = new TypeOverrideManager(); | |
13388 LocalVariableElementImpl element = ElementFactory.localVariableElement2("v")
; | |
13389 InterfaceType type = ElementFactory.classElement2("C", []).type; | |
13390 manager.enterScope(); | |
13391 manager.setType(element, type); | |
13392 JUnitTestCase.assertSame(type, manager.getType(element)); | |
13393 } | |
13394 void test_getType_noOverride() { | |
13395 TypeOverrideManager manager = new TypeOverrideManager(); | |
13396 manager.enterScope(); | |
13397 JUnitTestCase.assertNull(manager.getType(ElementFactory.localVariableElement
2("v"))); | |
13398 } | |
13399 void test_getType_noScope() { | |
13400 TypeOverrideManager manager = new TypeOverrideManager(); | |
13401 JUnitTestCase.assertNull(manager.getType(ElementFactory.localVariableElement
2("v"))); | |
13402 } | |
13403 static dartSuite() { | |
13404 _ut.group('TypeOverrideManagerTest', () { | |
13405 _ut.test('test_exitScope_noScopes', () { | |
13406 final __test = new TypeOverrideManagerTest(); | |
13407 runJUnitTest(__test, __test.test_exitScope_noScopes); | |
13408 }); | |
13409 _ut.test('test_exitScope_oneScope', () { | |
13410 final __test = new TypeOverrideManagerTest(); | |
13411 runJUnitTest(__test, __test.test_exitScope_oneScope); | |
13412 }); | |
13413 _ut.test('test_exitScope_twoScopes', () { | |
13414 final __test = new TypeOverrideManagerTest(); | |
13415 runJUnitTest(__test, __test.test_exitScope_twoScopes); | |
13416 }); | |
13417 _ut.test('test_getType_enclosedOverride', () { | |
13418 final __test = new TypeOverrideManagerTest(); | |
13419 runJUnitTest(__test, __test.test_getType_enclosedOverride); | |
13420 }); | |
13421 _ut.test('test_getType_immediateOverride', () { | |
13422 final __test = new TypeOverrideManagerTest(); | |
13423 runJUnitTest(__test, __test.test_getType_immediateOverride); | |
13424 }); | |
13425 _ut.test('test_getType_noOverride', () { | |
13426 final __test = new TypeOverrideManagerTest(); | |
13427 runJUnitTest(__test, __test.test_getType_noOverride); | |
13428 }); | |
13429 _ut.test('test_getType_noScope', () { | |
13430 final __test = new TypeOverrideManagerTest(); | |
13431 runJUnitTest(__test, __test.test_getType_noScope); | |
13432 }); | |
13433 }); | |
13434 } | |
13435 } | |
13436 class PubSuggestionCodeTest extends ResolverTestCase { | |
13437 void test_import_package() { | |
13438 Source source = addSource(EngineTestCase.createSource(["import 'package:some
package/other.dart';"])); | |
13439 resolve(source); | |
13440 assertErrors(source, [CompileTimeErrorCode.URI_DOES_NOT_EXIST]); | |
13441 } | |
13442 void test_import_packageWithDotDot() { | |
13443 Source source = addSource(EngineTestCase.createSource(["import 'package:some
package/../other.dart';"])); | |
13444 resolve(source); | |
13445 assertErrors(source, [ | |
13446 CompileTimeErrorCode.URI_DOES_NOT_EXIST, | |
13447 PubSuggestionCode.PACKAGE_IMPORT_CONTAINS_DOT_DOT]); | |
13448 } | |
13449 void test_import_packageWithLeadingDotDot() { | |
13450 Source source = addSource(EngineTestCase.createSource(["import 'package:../o
ther.dart';"])); | |
13451 resolve(source); | |
13452 assertErrors(source, [ | |
13453 CompileTimeErrorCode.URI_DOES_NOT_EXIST, | |
13454 PubSuggestionCode.PACKAGE_IMPORT_CONTAINS_DOT_DOT]); | |
13455 } | |
13456 void test_import_referenceIntoLibDirectory() { | |
13457 cacheSource("/myproj/pubspec.yaml", ""); | |
13458 cacheSource("/myproj/lib/other.dart", ""); | |
13459 Source source = addSource2("/myproj/web/test.dart", EngineTestCase.createSou
rce(["import '../lib/other.dart';"])); | |
13460 resolve(source); | |
13461 assertErrors(source, [PubSuggestionCode.FILE_IMPORT_OUTSIDE_LIB_REFERENCES_F
ILE_INSIDE]); | |
13462 } | |
13463 void test_import_referenceIntoLibDirectory_no_pubspec() { | |
13464 cacheSource("/myproj/lib/other.dart", ""); | |
13465 Source source = addSource2("/myproj/web/test.dart", EngineTestCase.createSou
rce(["import '../lib/other.dart';"])); | |
13466 resolve(source); | |
13467 assertNoErrors(source); | |
13468 } | |
13469 void test_import_referenceOutOfLibDirectory() { | |
13470 cacheSource("/myproj/pubspec.yaml", ""); | |
13471 cacheSource("/myproj/web/other.dart", ""); | |
13472 Source source = addSource2("/myproj/lib/test.dart", EngineTestCase.createSou
rce(["import '../web/other.dart';"])); | |
13473 resolve(source); | |
13474 assertErrors(source, [PubSuggestionCode.FILE_IMPORT_INSIDE_LIB_REFERENCES_FI
LE_OUTSIDE]); | |
13475 } | |
13476 void test_import_referenceOutOfLibDirectory_no_pubspec() { | |
13477 cacheSource("/myproj/web/other.dart", ""); | |
13478 Source source = addSource2("/myproj/lib/test.dart", EngineTestCase.createSou
rce(["import '../web/other.dart';"])); | |
13479 resolve(source); | |
13480 assertNoErrors(source); | |
13481 } | |
13482 void test_import_valid_inside_lib1() { | |
13483 cacheSource("/myproj/pubspec.yaml", ""); | |
13484 cacheSource("/myproj/lib/other.dart", ""); | |
13485 Source source = addSource2("/myproj/lib/test.dart", EngineTestCase.createSou
rce(["import 'other.dart';"])); | |
13486 resolve(source); | |
13487 assertNoErrors(source); | |
13488 } | |
13489 void test_import_valid_inside_lib2() { | |
13490 cacheSource("/myproj/pubspec.yaml", ""); | |
13491 cacheSource("/myproj/lib/bar/other.dart", ""); | |
13492 Source source = addSource2("/myproj/lib/foo/test.dart", EngineTestCase.creat
eSource(["import '../bar/other.dart';"])); | |
13493 resolve(source); | |
13494 assertNoErrors(source); | |
13495 } | |
13496 void test_import_valid_outside_lib() { | |
13497 cacheSource("/myproj/pubspec.yaml", ""); | |
13498 cacheSource("/myproj/web/other.dart", ""); | |
13499 Source source = addSource2("/myproj/lib2/test.dart", EngineTestCase.createSo
urce(["import '../web/other.dart';"])); | |
13500 resolve(source); | |
13501 assertNoErrors(source); | |
13502 } | |
13503 static dartSuite() { | |
13504 _ut.group('PubSuggestionCodeTest', () { | |
13505 _ut.test('test_import_package', () { | |
13506 final __test = new PubSuggestionCodeTest(); | |
13507 runJUnitTest(__test, __test.test_import_package); | |
13508 }); | |
13509 _ut.test('test_import_packageWithDotDot', () { | |
13510 final __test = new PubSuggestionCodeTest(); | |
13511 runJUnitTest(__test, __test.test_import_packageWithDotDot); | |
13512 }); | |
13513 _ut.test('test_import_packageWithLeadingDotDot', () { | |
13514 final __test = new PubSuggestionCodeTest(); | |
13515 runJUnitTest(__test, __test.test_import_packageWithLeadingDotDot); | |
13516 }); | |
13517 _ut.test('test_import_referenceIntoLibDirectory', () { | |
13518 final __test = new PubSuggestionCodeTest(); | |
13519 runJUnitTest(__test, __test.test_import_referenceIntoLibDirectory); | |
13520 }); | |
13521 _ut.test('test_import_referenceIntoLibDirectory_no_pubspec', () { | |
13522 final __test = new PubSuggestionCodeTest(); | |
13523 runJUnitTest(__test, __test.test_import_referenceIntoLibDirectory_no_pub
spec); | |
13524 }); | |
13525 _ut.test('test_import_referenceOutOfLibDirectory', () { | |
13526 final __test = new PubSuggestionCodeTest(); | |
13527 runJUnitTest(__test, __test.test_import_referenceOutOfLibDirectory); | |
13528 }); | |
13529 _ut.test('test_import_referenceOutOfLibDirectory_no_pubspec', () { | |
13530 final __test = new PubSuggestionCodeTest(); | |
13531 runJUnitTest(__test, __test.test_import_referenceOutOfLibDirectory_no_pu
bspec); | |
13532 }); | |
13533 _ut.test('test_import_valid_inside_lib1', () { | |
13534 final __test = new PubSuggestionCodeTest(); | |
13535 runJUnitTest(__test, __test.test_import_valid_inside_lib1); | |
13536 }); | |
13537 _ut.test('test_import_valid_inside_lib2', () { | |
13538 final __test = new PubSuggestionCodeTest(); | |
13539 runJUnitTest(__test, __test.test_import_valid_inside_lib2); | |
13540 }); | |
13541 _ut.test('test_import_valid_outside_lib', () { | |
13542 final __test = new PubSuggestionCodeTest(); | |
13543 runJUnitTest(__test, __test.test_import_valid_outside_lib); | |
13544 }); | |
13545 }); | |
13546 } | |
13547 } | |
13548 class StaticWarningCodeTest extends ResolverTestCase { | |
13549 void fail_undefinedGetter() { | |
13550 Source source = addSource(EngineTestCase.createSource([])); | |
13551 resolve(source); | |
13552 assertErrors(source, [StaticWarningCode.UNDEFINED_GETTER]); | |
13553 verify([source]); | |
13554 } | |
13555 void fail_undefinedIdentifier_commentReference() { | |
13556 Source source = addSource(EngineTestCase.createSource(["/** [m] xxx [new B.c
] */", "class A {", "}"])); | |
13557 resolve(source); | |
13558 assertErrors(source, [ | |
13559 StaticWarningCode.UNDEFINED_IDENTIFIER, | |
13560 StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
13561 } | |
13562 void fail_undefinedSetter() { | |
13563 Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var
p) {", " C.m = 0;", "}"])); | |
13564 resolve(source); | |
13565 assertErrors(source, [StaticWarningCode.UNDEFINED_SETTER]); | |
13566 verify([source]); | |
13567 } | |
13568 void fail_undefinedStaticMethodOrGetter_getter() { | |
13569 Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var
p) {", " f(C.m);", "}"])); | |
13570 resolve(source); | |
13571 assertErrors(source, [StaticWarningCode.UNDEFINED_STATIC_METHOD_OR_GETTER]); | |
13572 verify([source]); | |
13573 } | |
13574 void fail_undefinedStaticMethodOrGetter_method() { | |
13575 Source source = addSource(EngineTestCase.createSource(["class C {}", "f(var
p) {", " f(C.m());", "}"])); | |
13576 resolve(source); | |
13577 assertErrors(source, [StaticWarningCode.UNDEFINED_STATIC_METHOD_OR_GETTER]); | |
13578 verify([source]); | |
13579 } | |
13580 void test_ambiguousImport_as() { | |
13581 Source source = addSource(EngineTestCase.createSource([ | |
13582 "import 'lib1.dart';", | |
13583 "import 'lib2.dart';", | |
13584 "f(p) {p as N;}"])); | |
13585 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13586 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13587 resolve(source); | |
13588 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13589 } | |
13590 void test_ambiguousImport_extends() { | |
13591 Source source = addSource(EngineTestCase.createSource([ | |
13592 "import 'lib1.dart';", | |
13593 "import 'lib2.dart';", | |
13594 "class A extends N {}"])); | |
13595 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13596 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13597 resolve(source); | |
13598 assertErrors(source, [ | |
13599 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13600 CompileTimeErrorCode.EXTENDS_NON_CLASS]); | |
13601 } | |
13602 void test_ambiguousImport_implements() { | |
13603 Source source = addSource(EngineTestCase.createSource([ | |
13604 "import 'lib1.dart';", | |
13605 "import 'lib2.dart';", | |
13606 "class A implements N {}"])); | |
13607 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13608 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13609 resolve(source); | |
13610 assertErrors(source, [ | |
13611 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13612 CompileTimeErrorCode.IMPLEMENTS_NON_CLASS]); | |
13613 } | |
13614 void test_ambiguousImport_inPart() { | |
13615 Source source = addSource(EngineTestCase.createSource([ | |
13616 "library lib;", | |
13617 "import 'lib1.dart';", | |
13618 "import 'lib2.dart';", | |
13619 "part 'part.dart';"])); | |
13620 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13621 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13622 Source partSource = addSource2("/part.dart", EngineTestCase.createSource(["p
art of lib;", "class A extends N {}"])); | |
13623 resolve(source); | |
13624 assertErrors(partSource, [ | |
13625 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13626 CompileTimeErrorCode.EXTENDS_NON_CLASS]); | |
13627 } | |
13628 void test_ambiguousImport_instanceCreation() { | |
13629 Source source = addSource(EngineTestCase.createSource([ | |
13630 "library L;", | |
13631 "import 'lib1.dart';", | |
13632 "import 'lib2.dart';", | |
13633 "f() {new N();}"])); | |
13634 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13635 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13636 resolve(source); | |
13637 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13638 } | |
13639 void test_ambiguousImport_is() { | |
13640 Source source = addSource(EngineTestCase.createSource([ | |
13641 "import 'lib1.dart';", | |
13642 "import 'lib2.dart';", | |
13643 "f(p) {p is N;}"])); | |
13644 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13645 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13646 resolve(source); | |
13647 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13648 } | |
13649 void test_ambiguousImport_qualifier() { | |
13650 Source source = addSource(EngineTestCase.createSource([ | |
13651 "import 'lib1.dart';", | |
13652 "import 'lib2.dart';", | |
13653 "g() { N.FOO; }"])); | |
13654 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13655 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13656 resolve(source); | |
13657 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13658 } | |
13659 void test_ambiguousImport_typeAnnotation() { | |
13660 Source source = addSource(EngineTestCase.createSource([ | |
13661 "import 'lib1.dart';", | |
13662 "import 'lib2.dart';", | |
13663 "typedef N FT(N p);", | |
13664 "N f(N p) {", | |
13665 " N v;", | |
13666 "}", | |
13667 "class A {", | |
13668 " N m() {}", | |
13669 "}", | |
13670 "class B<T extends N> {}"])); | |
13671 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13672 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13673 resolve(source); | |
13674 assertErrors(source, [ | |
13675 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13676 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13677 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13678 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13679 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13680 StaticWarningCode.AMBIGUOUS_IMPORT, | |
13681 StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13682 } | |
13683 void test_ambiguousImport_typeArgument_annotation() { | |
13684 Source source = addSource(EngineTestCase.createSource([ | |
13685 "import 'lib1.dart';", | |
13686 "import 'lib2.dart';", | |
13687 "class A<T> {}", | |
13688 "A<N> f() {}"])); | |
13689 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13690 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13691 resolve(source); | |
13692 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13693 } | |
13694 void test_ambiguousImport_typeArgument_instanceCreation() { | |
13695 Source source = addSource(EngineTestCase.createSource([ | |
13696 "import 'lib1.dart';", | |
13697 "import 'lib2.dart';", | |
13698 "class A<T> {}", | |
13699 "f() {new A<N>();}"])); | |
13700 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s N {}"])); | |
13701 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s N {}"])); | |
13702 resolve(source); | |
13703 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13704 } | |
13705 void test_ambiguousImport_varRead() { | |
13706 Source source = addSource(EngineTestCase.createSource([ | |
13707 "import 'lib1.dart';", | |
13708 "import 'lib2.dart';", | |
13709 "f() { g(v); }", | |
13710 "g(p) {}"])); | |
13711 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "var
v;"])); | |
13712 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "var
v;"])); | |
13713 resolve(source); | |
13714 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13715 } | |
13716 void test_ambiguousImport_varWrite() { | |
13717 Source source = addSource(EngineTestCase.createSource([ | |
13718 "import 'lib1.dart';", | |
13719 "import 'lib2.dart';", | |
13720 "f() { v = 0; }"])); | |
13721 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "var
v;"])); | |
13722 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "var
v;"])); | |
13723 resolve(source); | |
13724 assertErrors(source, [StaticWarningCode.AMBIGUOUS_IMPORT]); | |
13725 } | |
13726 void test_argumentTypeNotAssignable_annotation_namedConstructor() { | |
13727 Source source = addSource(EngineTestCase.createSource([ | |
13728 "class A {", | |
13729 " const A.fromInt(int p);", | |
13730 "}", | |
13731 "@A.fromInt('0')", | |
13732 "main() {", | |
13733 "}"])); | |
13734 resolve(source); | |
13735 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13736 verify([source]); | |
13737 } | |
13738 void test_argumentTypeNotAssignable_annotation_unnamedConstructor() { | |
13739 Source source = addSource(EngineTestCase.createSource([ | |
13740 "class A {", | |
13741 " const A(int p);", | |
13742 "}", | |
13743 "@A('0')", | |
13744 "main() {", | |
13745 "}"])); | |
13746 resolve(source); | |
13747 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13748 verify([source]); | |
13749 } | |
13750 void test_argumentTypeNotAssignable_binary() { | |
13751 Source source = addSource(EngineTestCase.createSource([ | |
13752 "class A {", | |
13753 " operator +(int p) {}", | |
13754 "}", | |
13755 "f(A a) {", | |
13756 " a + '0';", | |
13757 "}"])); | |
13758 resolve(source); | |
13759 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13760 verify([source]); | |
13761 } | |
13762 void test_argumentTypeNotAssignable_const() { | |
13763 Source source = addSource(EngineTestCase.createSource([ | |
13764 "class A {", | |
13765 " const A(String p);", | |
13766 "}", | |
13767 "main() {", | |
13768 " const A(42);", | |
13769 "}"])); | |
13770 resolve(source); | |
13771 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13772 verify([source]); | |
13773 } | |
13774 void test_argumentTypeNotAssignable_const_super() { | |
13775 Source source = addSource(EngineTestCase.createSource([ | |
13776 "class A {", | |
13777 " const A(String p);", | |
13778 "}", | |
13779 "class B extends A {", | |
13780 " const B() : super(42);", | |
13781 "}"])); | |
13782 resolve(source); | |
13783 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13784 verify([source]); | |
13785 } | |
13786 void test_argumentTypeNotAssignable_index() { | |
13787 Source source = addSource(EngineTestCase.createSource([ | |
13788 "class A {", | |
13789 " operator [](int index) {}", | |
13790 "}", | |
13791 "f(A a) {", | |
13792 " a['0'];", | |
13793 "}"])); | |
13794 resolve(source); | |
13795 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13796 verify([source]); | |
13797 } | |
13798 void test_argumentTypeNotAssignable_invocation_callParameter() { | |
13799 Source source = addSource(EngineTestCase.createSource([ | |
13800 "class A {", | |
13801 " call(int p) {}", | |
13802 "}", | |
13803 "f(A a) {", | |
13804 " a('0');", | |
13805 "}"])); | |
13806 resolve(source); | |
13807 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13808 verify([source]); | |
13809 } | |
13810 void test_argumentTypeNotAssignable_invocation_callVariable() { | |
13811 Source source = addSource(EngineTestCase.createSource([ | |
13812 "class A {", | |
13813 " call(int p) {}", | |
13814 "}", | |
13815 "main() {", | |
13816 " A a = new A();", | |
13817 " a('0');", | |
13818 "}"])); | |
13819 resolve(source); | |
13820 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13821 verify([source]); | |
13822 } | |
13823 void test_argumentTypeNotAssignable_invocation_functionParameter() { | |
13824 Source source = addSource(EngineTestCase.createSource(["a(b(int p)) {", " b
('0');", "}"])); | |
13825 resolve(source); | |
13826 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13827 verify([source]); | |
13828 } | |
13829 void test_argumentTypeNotAssignable_invocation_functionParameter_generic() { | |
13830 Source source = addSource(EngineTestCase.createSource([ | |
13831 "class A<K, V> {", | |
13832 " m(f(K k), V v) {", | |
13833 " f(v);", | |
13834 " }", | |
13835 "}"])); | |
13836 resolve(source); | |
13837 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13838 verify([source]); | |
13839 } | |
13840 void test_argumentTypeNotAssignable_invocation_functionTypes_optional() { | |
13841 Source source = addSource(EngineTestCase.createSource([ | |
13842 "void acceptFunNumOptBool(void funNumOptBool([bool b])) {}", | |
13843 "void funNumBool(bool b) {}", | |
13844 "main() {", | |
13845 " acceptFunNumOptBool(funNumBool);", | |
13846 "}"])); | |
13847 resolve(source); | |
13848 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13849 verify([source]); | |
13850 } | |
13851 void test_argumentTypeNotAssignable_invocation_generic() { | |
13852 Source source = addSource(EngineTestCase.createSource([ | |
13853 "class A<T> {", | |
13854 " m(T t) {}", | |
13855 "}", | |
13856 "f(A<String> a) {", | |
13857 " a.m(1);", | |
13858 "}"])); | |
13859 resolve(source); | |
13860 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13861 verify([source]); | |
13862 } | |
13863 void test_argumentTypeNotAssignable_invocation_named() { | |
13864 Source source = addSource(EngineTestCase.createSource(["f({String p}) {}", "
main() {", " f(p: 42);", "}"])); | |
13865 resolve(source); | |
13866 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13867 verify([source]); | |
13868 } | |
13869 void test_argumentTypeNotAssignable_invocation_optional() { | |
13870 Source source = addSource(EngineTestCase.createSource(["f([String p]) {}", "
main() {", " f(42);", "}"])); | |
13871 resolve(source); | |
13872 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13873 verify([source]); | |
13874 } | |
13875 void test_argumentTypeNotAssignable_invocation_required() { | |
13876 Source source = addSource(EngineTestCase.createSource(["f(String p) {}", "ma
in() {", " f(42);", "}"])); | |
13877 resolve(source); | |
13878 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13879 verify([source]); | |
13880 } | |
13881 void test_argumentTypeNotAssignable_invocation_typedef_generic() { | |
13882 Source source = addSource(EngineTestCase.createSource(["typedef A<T>(T p);",
"f(A<int> a) {", " a('1');", "}"])); | |
13883 resolve(source); | |
13884 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13885 verify([source]); | |
13886 } | |
13887 void test_argumentTypeNotAssignable_invocation_typedef_local() { | |
13888 Source source = addSource(EngineTestCase.createSource([ | |
13889 "typedef A(int p);", | |
13890 "A getA() => null;", | |
13891 "main() {", | |
13892 " A a = getA();", | |
13893 " a('1');", | |
13894 "}"])); | |
13895 resolve(source); | |
13896 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13897 verify([source]); | |
13898 } | |
13899 void test_argumentTypeNotAssignable_invocation_typedef_parameter() { | |
13900 Source source = addSource(EngineTestCase.createSource(["typedef A(int p);",
"f(A a) {", " a('1');", "}"])); | |
13901 resolve(source); | |
13902 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13903 verify([source]); | |
13904 } | |
13905 void test_argumentTypeNotAssignable_new_generic() { | |
13906 Source source = addSource(EngineTestCase.createSource([ | |
13907 "class A<T> {", | |
13908 " A(T p) {}", | |
13909 "}", | |
13910 "main() {", | |
13911 " new A<String>(42);", | |
13912 "}"])); | |
13913 resolve(source); | |
13914 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13915 verify([source]); | |
13916 } | |
13917 void test_argumentTypeNotAssignable_new_optional() { | |
13918 Source source = addSource(EngineTestCase.createSource([ | |
13919 "class A {", | |
13920 " A([String p]) {}", | |
13921 "}", | |
13922 "main() {", | |
13923 " new A(42);", | |
13924 "}"])); | |
13925 resolve(source); | |
13926 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13927 verify([source]); | |
13928 } | |
13929 void test_argumentTypeNotAssignable_new_required() { | |
13930 Source source = addSource(EngineTestCase.createSource([ | |
13931 "class A {", | |
13932 " A(String p) {}", | |
13933 "}", | |
13934 "main() {", | |
13935 " new A(42);", | |
13936 "}"])); | |
13937 resolve(source); | |
13938 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
13939 verify([source]); | |
13940 } | |
13941 void test_assignmentToConst_instanceVariable() { | |
13942 Source source = addSource(EngineTestCase.createSource([ | |
13943 "class A {", | |
13944 " static const v = 0;", | |
13945 "}", | |
13946 "f() {", | |
13947 " A.v = 1;", | |
13948 "}"])); | |
13949 resolve(source); | |
13950 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); | |
13951 verify([source]); | |
13952 } | |
13953 void test_assignmentToConst_localVariable() { | |
13954 Source source = addSource(EngineTestCase.createSource(["f() {", " const x =
0;", " x = 1;", "}"])); | |
13955 resolve(source); | |
13956 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_CONST]); | |
13957 verify([source]); | |
13958 } | |
13959 void test_assignmentToFinal_instanceVariable() { | |
13960 Source source = addSource(EngineTestCase.createSource([ | |
13961 "class A {", | |
13962 " final v = 0;", | |
13963 "}", | |
13964 "f() {", | |
13965 " A a = new A();", | |
13966 " a.v = 1;", | |
13967 "}"])); | |
13968 resolve(source); | |
13969 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
13970 verify([source]); | |
13971 } | |
13972 void test_assignmentToFinal_localVariable() { | |
13973 Source source = addSource(EngineTestCase.createSource(["f() {", " final x =
0;", " x = 1;", "}"])); | |
13974 resolve(source); | |
13975 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
13976 verify([source]); | |
13977 } | |
13978 void test_assignmentToFinal_prefixMinusMinus() { | |
13979 Source source = addSource(EngineTestCase.createSource(["f() {", " final x =
0;", " --x;", "}"])); | |
13980 resolve(source); | |
13981 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
13982 verify([source]); | |
13983 } | |
13984 void test_assignmentToFinal_prefixPlusPlus() { | |
13985 Source source = addSource(EngineTestCase.createSource(["f() {", " final x =
0;", " ++x;", "}"])); | |
13986 resolve(source); | |
13987 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
13988 verify([source]); | |
13989 } | |
13990 void test_assignmentToFinal_propertyAccess() { | |
13991 Source source = addSource(EngineTestCase.createSource([ | |
13992 "class A {", | |
13993 " int get x => 0;", | |
13994 "}", | |
13995 "class B {", | |
13996 " static A a;", | |
13997 "}", | |
13998 "main() {", | |
13999 " B.a.x = 0;", | |
14000 "}"])); | |
14001 resolve(source); | |
14002 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
14003 verify([source]); | |
14004 } | |
14005 void test_assignmentToFinal_suffixMinusMinus() { | |
14006 Source source = addSource(EngineTestCase.createSource(["f() {", " final x =
0;", " x--;", "}"])); | |
14007 resolve(source); | |
14008 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
14009 verify([source]); | |
14010 } | |
14011 void test_assignmentToFinal_suffixPlusPlus() { | |
14012 Source source = addSource(EngineTestCase.createSource(["f() {", " final x =
0;", " x++;", "}"])); | |
14013 resolve(source); | |
14014 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
14015 verify([source]); | |
14016 } | |
14017 void test_assignmentToFinal_topLevelVariable() { | |
14018 Source source = addSource(EngineTestCase.createSource(["final x = 0;", "f()
{ x = 1; }"])); | |
14019 resolve(source); | |
14020 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_FINAL]); | |
14021 verify([source]); | |
14022 } | |
14023 void test_assignmentToMethod() { | |
14024 Source source = addSource(EngineTestCase.createSource([ | |
14025 "class A {", | |
14026 " m() {}", | |
14027 "}", | |
14028 "f(A a) {", | |
14029 " a.m = () {};", | |
14030 "}"])); | |
14031 resolve(source); | |
14032 assertErrors(source, [StaticWarningCode.ASSIGNMENT_TO_METHOD]); | |
14033 verify([source]); | |
14034 } | |
14035 void test_caseBlockNotTerminated() { | |
14036 Source source = addSource(EngineTestCase.createSource([ | |
14037 "f(int p) {", | |
14038 " switch (p) {", | |
14039 " case 0:", | |
14040 " f(p);", | |
14041 " case 1:", | |
14042 " break;", | |
14043 " }", | |
14044 "}"])); | |
14045 resolve(source); | |
14046 assertErrors(source, [StaticWarningCode.CASE_BLOCK_NOT_TERMINATED]); | |
14047 verify([source]); | |
14048 } | |
14049 void test_castToNonType() { | |
14050 Source source = addSource(EngineTestCase.createSource(["var A = 0;", "f(Stri
ng s) { var x = s as A; }"])); | |
14051 resolve(source); | |
14052 assertErrors(source, [StaticWarningCode.CAST_TO_NON_TYPE]); | |
14053 verify([source]); | |
14054 } | |
14055 void test_concreteClassWithAbstractMember() { | |
14056 Source source = addSource(EngineTestCase.createSource(["class A {", " m();"
, "}"])); | |
14057 resolve(source); | |
14058 assertErrors(source, [StaticWarningCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER]
); | |
14059 verify([source]); | |
14060 } | |
14061 void test_conflictingDartImport() { | |
14062 Source source = addSource(EngineTestCase.createSource([ | |
14063 "import 'lib.dart';", | |
14064 "import 'dart:async';", | |
14065 "Future f = null;", | |
14066 "Stream s;"])); | |
14067 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
Future {}"])); | |
14068 resolve(source); | |
14069 assertErrors(source, [StaticWarningCode.CONFLICTING_DART_IMPORT]); | |
14070 } | |
14071 void test_conflictingInstanceGetterAndSuperclassMember_direct_field() { | |
14072 Source source = addSource(EngineTestCase.createSource([ | |
14073 "class A {", | |
14074 " static int v;", | |
14075 "}", | |
14076 "class B extends A {", | |
14077 " get v => 0;", | |
14078 "}"])); | |
14079 resolve(source); | |
14080 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE
RCLASS_MEMBER]); | |
14081 verify([source]); | |
14082 } | |
14083 void test_conflictingInstanceGetterAndSuperclassMember_direct_getter() { | |
14084 Source source = addSource(EngineTestCase.createSource([ | |
14085 "class A {", | |
14086 " static get v => 0;", | |
14087 "}", | |
14088 "class B extends A {", | |
14089 " get v => 0;", | |
14090 "}"])); | |
14091 resolve(source); | |
14092 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE
RCLASS_MEMBER]); | |
14093 verify([source]); | |
14094 } | |
14095 void test_conflictingInstanceGetterAndSuperclassMember_direct_method() { | |
14096 Source source = addSource(EngineTestCase.createSource([ | |
14097 "class A {", | |
14098 " static v() {}", | |
14099 "}", | |
14100 "class B extends A {", | |
14101 " get v => 0;", | |
14102 "}"])); | |
14103 resolve(source); | |
14104 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE
RCLASS_MEMBER]); | |
14105 verify([source]); | |
14106 } | |
14107 void test_conflictingInstanceGetterAndSuperclassMember_direct_setter() { | |
14108 Source source = addSource(EngineTestCase.createSource([ | |
14109 "class A {", | |
14110 " static set v(x) {}", | |
14111 "}", | |
14112 "class B extends A {", | |
14113 " get v => 0;", | |
14114 "}"])); | |
14115 resolve(source); | |
14116 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE
RCLASS_MEMBER]); | |
14117 verify([source]); | |
14118 } | |
14119 void test_conflictingInstanceGetterAndSuperclassMember_indirect() { | |
14120 Source source = addSource(EngineTestCase.createSource([ | |
14121 "class A {", | |
14122 " static int v;", | |
14123 "}", | |
14124 "class B extends A {}", | |
14125 "class C extends B {", | |
14126 " get v => 0;", | |
14127 "}"])); | |
14128 resolve(source); | |
14129 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE
RCLASS_MEMBER]); | |
14130 verify([source]); | |
14131 } | |
14132 void test_conflictingInstanceGetterAndSuperclassMember_mixin() { | |
14133 Source source = addSource(EngineTestCase.createSource([ | |
14134 "class M {", | |
14135 " static int v;", | |
14136 "}", | |
14137 "class B extends Object with M {", | |
14138 " get v => 0;", | |
14139 "}"])); | |
14140 resolve(source); | |
14141 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_GETTER_AND_SUPE
RCLASS_MEMBER]); | |
14142 verify([source]); | |
14143 } | |
14144 void test_conflictingInstanceSetterAndSuperclassMember() { | |
14145 Source source = addSource(EngineTestCase.createSource([ | |
14146 "class A {", | |
14147 " static int v;", | |
14148 "}", | |
14149 "class B extends A {", | |
14150 " set v(x) {}", | |
14151 "}"])); | |
14152 resolve(source); | |
14153 assertErrors(source, [StaticWarningCode.CONFLICTING_INSTANCE_SETTER_AND_SUPE
RCLASS_MEMBER]); | |
14154 verify([source]); | |
14155 } | |
14156 void test_conflictingStaticGetterAndInstanceSetter_mixin() { | |
14157 Source source = addSource(EngineTestCase.createSource([ | |
14158 "class A {", | |
14159 " set x(int p) {}", | |
14160 "}", | |
14161 "class B extends Object with A {", | |
14162 " static get x => 0;", | |
14163 "}"])); | |
14164 resolve(source); | |
14165 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN
CE_SETTER]); | |
14166 verify([source]); | |
14167 } | |
14168 void test_conflictingStaticGetterAndInstanceSetter_superClass() { | |
14169 Source source = addSource(EngineTestCase.createSource([ | |
14170 "class A {", | |
14171 " set x(int p) {}", | |
14172 "}", | |
14173 "class B extends A {", | |
14174 " static get x => 0;", | |
14175 "}"])); | |
14176 resolve(source); | |
14177 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN
CE_SETTER]); | |
14178 verify([source]); | |
14179 } | |
14180 void test_conflictingStaticGetterAndInstanceSetter_thisClass() { | |
14181 Source source = addSource(EngineTestCase.createSource([ | |
14182 "class A {", | |
14183 " static get x => 0;", | |
14184 " set x(int p) {}", | |
14185 "}"])); | |
14186 resolve(source); | |
14187 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_GETTER_AND_INSTAN
CE_SETTER]); | |
14188 verify([source]); | |
14189 } | |
14190 void test_conflictingStaticSetterAndInstanceMember_thisClass_getter() { | |
14191 Source source = addSource(EngineTestCase.createSource([ | |
14192 "class A {", | |
14193 " get x => 0;", | |
14194 " static set x(int p) {}", | |
14195 "}"])); | |
14196 resolve(source); | |
14197 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTAN
CE_MEMBER]); | |
14198 verify([source]); | |
14199 } | |
14200 void test_conflictingStaticSetterAndInstanceMember_thisClass_method() { | |
14201 Source source = addSource(EngineTestCase.createSource(["class A {", " x() {
}", " static set x(int p) {}", "}"])); | |
14202 resolve(source); | |
14203 assertErrors(source, [StaticWarningCode.CONFLICTING_STATIC_SETTER_AND_INSTAN
CE_MEMBER]); | |
14204 verify([source]); | |
14205 } | |
14206 void test_constWithAbstractClass() { | |
14207 Source source = addSource(EngineTestCase.createSource([ | |
14208 "abstract class A {", | |
14209 " const A();", | |
14210 "}", | |
14211 "void f() {", | |
14212 " A a = const A();", | |
14213 "}"])); | |
14214 resolve(source); | |
14215 assertErrors(source, [StaticWarningCode.CONST_WITH_ABSTRACT_CLASS]); | |
14216 verify([source]); | |
14217 } | |
14218 void test_equalKeysInMap() { | |
14219 Source source = addSource(EngineTestCase.createSource(["var m = {'a' : 0, 'b
' : 1, 'a' : 2};"])); | |
14220 resolve(source); | |
14221 assertErrors(source, [StaticWarningCode.EQUAL_KEYS_IN_MAP]); | |
14222 verify([source]); | |
14223 } | |
14224 void test_exportDuplicatedLibraryName() { | |
14225 Source source = addSource(EngineTestCase.createSource([ | |
14226 "library test;", | |
14227 "export 'lib1.dart';", | |
14228 "export 'lib2.dart';"])); | |
14229 addSource2("/lib1.dart", "library lib;"); | |
14230 addSource2("/lib2.dart", "library lib;"); | |
14231 resolve(source); | |
14232 assertErrors(source, [StaticWarningCode.EXPORT_DUPLICATED_LIBRARY_NAME]); | |
14233 verify([source]); | |
14234 } | |
14235 void test_extraPositionalArguments() { | |
14236 Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {",
" f(0, 1, '2');", "}"])); | |
14237 resolve(source); | |
14238 assertErrors(source, [StaticWarningCode.EXTRA_POSITIONAL_ARGUMENTS]); | |
14239 verify([source]); | |
14240 } | |
14241 void test_fieldInitializedInInitializerAndDeclaration_final() { | |
14242 Source source = addSource(EngineTestCase.createSource([ | |
14243 "class A {", | |
14244 " final int x = 0;", | |
14245 " A() : x = 1 {}", | |
14246 "}"])); | |
14247 resolve(source); | |
14248 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND
_DECLARATION]); | |
14249 verify([source]); | |
14250 } | |
14251 void test_fieldInitializerNotAssignable() { | |
14252 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A() : x = '';", "}"])); | |
14253 resolve(source); | |
14254 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZER_NOT_ASSIGNABLE]); | |
14255 verify([source]); | |
14256 } | |
14257 void test_fieldInitializingFormalNotAssignable() { | |
14258 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A(String this.x) {}", "}"])); | |
14259 resolve(source); | |
14260 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZING_FORMAL_NOT_ASSIGN
ABLE]); | |
14261 verify([source]); | |
14262 } | |
14263 | |
14264 /** | |
14265 * This test doesn't test the FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
code, but tests the | |
14266 * FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION code instead. It is provid
ed here to show | |
14267 * coverage over all of the permutations of initializers in constructor declar
ations. | |
14268 * | |
14269 * Note: FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION covers a subset of | |
14270 * FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR, since it more specific, w
e use it instead of | |
14271 * the broader code | |
14272 */ | |
14273 void test_finalInitializedInDeclarationAndConstructor_initializers() { | |
14274 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x = 0;", " A() : x = 0 {}", "}"])); | |
14275 resolve(source); | |
14276 assertErrors(source, [StaticWarningCode.FIELD_INITIALIZED_IN_INITIALIZER_AND
_DECLARATION]); | |
14277 verify([source]); | |
14278 } | |
14279 void test_finalInitializedInDeclarationAndConstructor_initializingFormal() { | |
14280 Source source = addSource(EngineTestCase.createSource(["class A {", " final
x = 0;", " A(this.x) {}", "}"])); | |
14281 resolve(source); | |
14282 assertErrors(source, [StaticWarningCode.FINAL_INITIALIZED_IN_DECLARATION_AND
_CONSTRUCTOR]); | |
14283 verify([source]); | |
14284 } | |
14285 void test_finalNotInitialized_inConstructor() { | |
14286 Source source = addSource(EngineTestCase.createSource(["class A {", " final
int x;", " A() {}", "}"])); | |
14287 resolve(source); | |
14288 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | |
14289 verify([source]); | |
14290 } | |
14291 void test_finalNotInitialized_instanceField_final() { | |
14292 Source source = addSource(EngineTestCase.createSource(["class A {", " final
F;", "}"])); | |
14293 resolve(source); | |
14294 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | |
14295 verify([source]); | |
14296 } | |
14297 void test_finalNotInitialized_instanceField_final_static() { | |
14298 Source source = addSource(EngineTestCase.createSource(["class A {", " stati
c final F;", "}"])); | |
14299 resolve(source); | |
14300 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | |
14301 verify([source]); | |
14302 } | |
14303 void test_finalNotInitialized_library_final() { | |
14304 Source source = addSource(EngineTestCase.createSource(["final F;"])); | |
14305 resolve(source); | |
14306 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | |
14307 verify([source]); | |
14308 } | |
14309 void test_finalNotInitialized_local_final() { | |
14310 Source source = addSource(EngineTestCase.createSource(["f() {", " final int
x;", "}"])); | |
14311 resolve(source); | |
14312 assertErrors(source, [StaticWarningCode.FINAL_NOT_INITIALIZED]); | |
14313 verify([source]); | |
14314 } | |
14315 void test_functionWithoutCall_direct() { | |
14316 Source source = addSource(EngineTestCase.createSource(["class A implements F
unction {", "}"])); | |
14317 resolve(source); | |
14318 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); | |
14319 verify([source]); | |
14320 } | |
14321 void test_functionWithoutCall_indirect_extends() { | |
14322 Source source = addSource(EngineTestCase.createSource([ | |
14323 "abstract class A implements Function {", | |
14324 "}", | |
14325 "class B extends A {", | |
14326 "}"])); | |
14327 resolve(source); | |
14328 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); | |
14329 verify([source]); | |
14330 } | |
14331 void test_functionWithoutCall_indirect_implements() { | |
14332 Source source = addSource(EngineTestCase.createSource([ | |
14333 "abstract class A implements Function {", | |
14334 "}", | |
14335 "class B implements A {", | |
14336 "}"])); | |
14337 resolve(source); | |
14338 assertErrors(source, [StaticWarningCode.FUNCTION_WITHOUT_CALL]); | |
14339 verify([source]); | |
14340 } | |
14341 void test_importDuplicatedLibraryName() { | |
14342 Source source = addSource(EngineTestCase.createSource([ | |
14343 "library test;", | |
14344 "import 'lib1.dart';", | |
14345 "import 'lib2.dart';"])); | |
14346 addSource2("/lib1.dart", "library lib;"); | |
14347 addSource2("/lib2.dart", "library lib;"); | |
14348 resolve(source); | |
14349 assertErrors(source, [ | |
14350 StaticWarningCode.IMPORT_DUPLICATED_LIBRARY_NAME, | |
14351 HintCode.UNUSED_IMPORT, | |
14352 HintCode.UNUSED_IMPORT]); | |
14353 verify([source]); | |
14354 } | |
14355 void test_inconsistentMethodInheritanceGetterAndMethod() { | |
14356 Source source = addSource(EngineTestCase.createSource([ | |
14357 "abstract class A {", | |
14358 " int x();", | |
14359 "}", | |
14360 "abstract class B {", | |
14361 " int get x;", | |
14362 "}", | |
14363 "class C implements A, B {", | |
14364 "}"])); | |
14365 resolve(source); | |
14366 assertErrors(source, [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETT
ER_AND_METHOD]); | |
14367 verify([source]); | |
14368 } | |
14369 void test_instanceMethodNameCollidesWithSuperclassStatic_field() { | |
14370 Source source = addSource(EngineTestCase.createSource([ | |
14371 "class A {", | |
14372 " static var n;", | |
14373 "}", | |
14374 "class B extends A {", | |
14375 " void n() {}", | |
14376 "}"])); | |
14377 resolve(source); | |
14378 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14379 verify([source]); | |
14380 } | |
14381 void test_instanceMethodNameCollidesWithSuperclassStatic_field2() { | |
14382 Source source = addSource(EngineTestCase.createSource([ | |
14383 "class A {", | |
14384 " static var n;", | |
14385 "}", | |
14386 "class B extends A {", | |
14387 "}", | |
14388 "class C extends B {", | |
14389 " void n() {}", | |
14390 "}"])); | |
14391 resolve(source); | |
14392 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14393 verify([source]); | |
14394 } | |
14395 void test_instanceMethodNameCollidesWithSuperclassStatic_getter() { | |
14396 Source source = addSource(EngineTestCase.createSource([ | |
14397 "class A {", | |
14398 " static get n {return 0;}", | |
14399 "}", | |
14400 "class B extends A {", | |
14401 " void n() {}", | |
14402 "}"])); | |
14403 resolve(source); | |
14404 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14405 verify([source]); | |
14406 } | |
14407 void test_instanceMethodNameCollidesWithSuperclassStatic_getter2() { | |
14408 Source source = addSource(EngineTestCase.createSource([ | |
14409 "class A {", | |
14410 " static get n {return 0;}", | |
14411 "}", | |
14412 "class B extends A {", | |
14413 "}", | |
14414 "class C extends B {", | |
14415 " void n() {}", | |
14416 "}"])); | |
14417 resolve(source); | |
14418 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14419 verify([source]); | |
14420 } | |
14421 void test_instanceMethodNameCollidesWithSuperclassStatic_method() { | |
14422 Source source = addSource(EngineTestCase.createSource([ | |
14423 "class A {", | |
14424 " static n () {}", | |
14425 "}", | |
14426 "class B extends A {", | |
14427 " void n() {}", | |
14428 "}"])); | |
14429 resolve(source); | |
14430 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14431 verify([source]); | |
14432 } | |
14433 void test_instanceMethodNameCollidesWithSuperclassStatic_method2() { | |
14434 Source source = addSource(EngineTestCase.createSource([ | |
14435 "class A {", | |
14436 " static n () {}", | |
14437 "}", | |
14438 "class B extends A {", | |
14439 "}", | |
14440 "class C extends B {", | |
14441 " void n() {}", | |
14442 "}"])); | |
14443 resolve(source); | |
14444 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14445 verify([source]); | |
14446 } | |
14447 void test_instanceMethodNameCollidesWithSuperclassStatic_setter() { | |
14448 Source source = addSource(EngineTestCase.createSource([ | |
14449 "class A {", | |
14450 " static set n(int x) {}", | |
14451 "}", | |
14452 "class B extends A {", | |
14453 " void n() {}", | |
14454 "}"])); | |
14455 resolve(source); | |
14456 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14457 verify([source]); | |
14458 } | |
14459 void test_instanceMethodNameCollidesWithSuperclassStatic_setter2() { | |
14460 Source source = addSource(EngineTestCase.createSource([ | |
14461 "class A {", | |
14462 " static set n(int x) {}", | |
14463 "}", | |
14464 "class B extends A {", | |
14465 "}", | |
14466 "class C extends B {", | |
14467 " void n() {}", | |
14468 "}"])); | |
14469 resolve(source); | |
14470 assertErrors(source, [StaticWarningCode.INSTANCE_METHOD_NAME_COLLIDES_WITH_S
UPERCLASS_STATIC]); | |
14471 verify([source]); | |
14472 } | |
14473 void test_invalidGetterOverrideReturnType() { | |
14474 Source source = addSource(EngineTestCase.createSource([ | |
14475 "class A {", | |
14476 " int get g { return 0; }", | |
14477 "}", | |
14478 "class B extends A {", | |
14479 " String get g { return 'a'; }", | |
14480 "}"])); | |
14481 resolve(source); | |
14482 assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]
); | |
14483 verify([source]); | |
14484 } | |
14485 void test_invalidGetterOverrideReturnType_implicit() { | |
14486 Source source = addSource(EngineTestCase.createSource([ | |
14487 "class A {", | |
14488 " String f;", | |
14489 "}", | |
14490 "class B extends A {", | |
14491 " int f;", | |
14492 "}"])); | |
14493 resolve(source); | |
14494 assertErrors(source, [ | |
14495 StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE, | |
14496 StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]); | |
14497 verify([source]); | |
14498 } | |
14499 void test_invalidMethodOverrideNamedParamType() { | |
14500 Source source = addSource(EngineTestCase.createSource([ | |
14501 "class A {", | |
14502 " m({int a}) {}", | |
14503 "}", | |
14504 "class B implements A {", | |
14505 " m({String a}) {}", | |
14506 "}"])); | |
14507 resolve(source); | |
14508 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_
TYPE]); | |
14509 verify([source]); | |
14510 } | |
14511 void test_invalidMethodOverrideNormalParamType() { | |
14512 Source source = addSource(EngineTestCase.createSource([ | |
14513 "class A {", | |
14514 " m(int a) {}", | |
14515 "}", | |
14516 "class B implements A {", | |
14517 " m(String a) {}", | |
14518 "}"])); | |
14519 resolve(source); | |
14520 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM
_TYPE]); | |
14521 verify([source]); | |
14522 } | |
14523 void test_invalidMethodOverrideOptionalParamType() { | |
14524 Source source = addSource(EngineTestCase.createSource([ | |
14525 "class A {", | |
14526 " m([int a]) {}", | |
14527 "}", | |
14528 "class B implements A {", | |
14529 " m([String a]) {}", | |
14530 "}"])); | |
14531 resolve(source); | |
14532 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PAR
AM_TYPE]); | |
14533 verify([source]); | |
14534 } | |
14535 void test_invalidMethodOverrideReturnType_interface() { | |
14536 Source source = addSource(EngineTestCase.createSource([ | |
14537 "class A {", | |
14538 " int m() { return 0; }", | |
14539 "}", | |
14540 "class B implements A {", | |
14541 " String m() { return 'a'; }", | |
14542 "}"])); | |
14543 resolve(source); | |
14544 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]
); | |
14545 verify([source]); | |
14546 } | |
14547 void test_invalidMethodOverrideReturnType_interface2() { | |
14548 Source source = addSource(EngineTestCase.createSource([ | |
14549 "abstract class A {", | |
14550 " int m();", | |
14551 "}", | |
14552 "abstract class B implements A {", | |
14553 "}", | |
14554 "class C implements B {", | |
14555 " String m() { return 'a'; }", | |
14556 "}"])); | |
14557 resolve(source); | |
14558 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]
); | |
14559 verify([source]); | |
14560 } | |
14561 void test_invalidMethodOverrideReturnType_mixin() { | |
14562 Source source = addSource(EngineTestCase.createSource([ | |
14563 "class A {", | |
14564 " int m() { return 0; }", | |
14565 "}", | |
14566 "class B extends Object with A {", | |
14567 " String m() { return 'a'; }", | |
14568 "}"])); | |
14569 resolve(source); | |
14570 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]
); | |
14571 verify([source]); | |
14572 } | |
14573 void test_invalidMethodOverrideReturnType_superclass() { | |
14574 Source source = addSource(EngineTestCase.createSource([ | |
14575 "class A {", | |
14576 " int m() { return 0; }", | |
14577 "}", | |
14578 "class B extends A {", | |
14579 " String m() { return 'a'; }", | |
14580 "}"])); | |
14581 resolve(source); | |
14582 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]
); | |
14583 verify([source]); | |
14584 } | |
14585 void test_invalidMethodOverrideReturnType_superclass2() { | |
14586 Source source = addSource(EngineTestCase.createSource([ | |
14587 "class A {", | |
14588 " int m() { return 0; }", | |
14589 "}", | |
14590 "class B extends A {", | |
14591 "}", | |
14592 "class C extends B {", | |
14593 " String m() { return 'a'; }", | |
14594 "}"])); | |
14595 resolve(source); | |
14596 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]
); | |
14597 verify([source]); | |
14598 } | |
14599 void test_invalidMethodOverrideReturnType_void() { | |
14600 Source source = addSource(EngineTestCase.createSource([ | |
14601 "class A {", | |
14602 " int m() {}", | |
14603 "}", | |
14604 "class B extends A {", | |
14605 " void m() {}", | |
14606 "}"])); | |
14607 resolve(source); | |
14608 assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_RETURN_TYPE]
); | |
14609 verify([source]); | |
14610 } | |
14611 void test_invalidOverrideDifferentDefaultValues_named() { | |
14612 Source source = addSource(EngineTestCase.createSource([ | |
14613 "class A {", | |
14614 " m({int p : 0}) {}", | |
14615 "}", | |
14616 "class B extends A {", | |
14617 " m({int p : 1}) {}", | |
14618 "}"])); | |
14619 resolve(source); | |
14620 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_V
ALUES_NAMED]); | |
14621 verify([source]); | |
14622 } | |
14623 void test_invalidOverrideDifferentDefaultValues_positional() { | |
14624 Source source = addSource(EngineTestCase.createSource([ | |
14625 "class A {", | |
14626 " m([int p = 0]) {}", | |
14627 "}", | |
14628 "class B extends A {", | |
14629 " m([int p = 1]) {}", | |
14630 "}"])); | |
14631 resolve(source); | |
14632 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_V
ALUES_POSITIONAL]); | |
14633 verify([source]); | |
14634 } | |
14635 void test_invalidOverrideNamed_fewerNamedParameters() { | |
14636 Source source = addSource(EngineTestCase.createSource([ | |
14637 "class A {", | |
14638 " m({a, b}) {}", | |
14639 "}", | |
14640 "class B extends A {", | |
14641 " m({a}) {}", | |
14642 "}"])); | |
14643 resolve(source); | |
14644 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); | |
14645 verify([source]); | |
14646 } | |
14647 void test_invalidOverrideNamed_missingNamedParameter() { | |
14648 Source source = addSource(EngineTestCase.createSource([ | |
14649 "class A {", | |
14650 " m({a, b}) {}", | |
14651 "}", | |
14652 "class B extends A {", | |
14653 " m({a, c}) {}", | |
14654 "}"])); | |
14655 resolve(source); | |
14656 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_NAMED]); | |
14657 verify([source]); | |
14658 } | |
14659 void test_invalidOverridePositional_optional() { | |
14660 Source source = addSource(EngineTestCase.createSource([ | |
14661 "class A {", | |
14662 " m([a, b]) {}", | |
14663 "}", | |
14664 "class B extends A {", | |
14665 " m([a]) {}", | |
14666 "}"])); | |
14667 resolve(source); | |
14668 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); | |
14669 verify([source]); | |
14670 } | |
14671 void test_invalidOverridePositional_optionalAndRequired() { | |
14672 Source source = addSource(EngineTestCase.createSource([ | |
14673 "class A {", | |
14674 " m(a, b, [c, d]) {}", | |
14675 "}", | |
14676 "class B extends A {", | |
14677 " m(a, b, [c]) {}", | |
14678 "}"])); | |
14679 resolve(source); | |
14680 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); | |
14681 verify([source]); | |
14682 } | |
14683 void test_invalidOverridePositional_optionalAndRequired2() { | |
14684 Source source = addSource(EngineTestCase.createSource([ | |
14685 "class A {", | |
14686 " m(a, b, [c, d]) {}", | |
14687 "}", | |
14688 "class B extends A {", | |
14689 " m(a, [c, d]) {}", | |
14690 "}"])); | |
14691 resolve(source); | |
14692 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_POSITIONAL]); | |
14693 verify([source]); | |
14694 } | |
14695 void test_invalidOverrideRequired() { | |
14696 Source source = addSource(EngineTestCase.createSource([ | |
14697 "class A {", | |
14698 " m(a) {}", | |
14699 "}", | |
14700 "class B extends A {", | |
14701 " m(a, b) {}", | |
14702 "}"])); | |
14703 resolve(source); | |
14704 assertErrors(source, [StaticWarningCode.INVALID_OVERRIDE_REQUIRED]); | |
14705 verify([source]); | |
14706 } | |
14707 void test_invalidSetterOverrideNormalParamType() { | |
14708 Source source = addSource(EngineTestCase.createSource([ | |
14709 "class A {", | |
14710 " void set s(int v) {}", | |
14711 "}", | |
14712 "class B extends A {", | |
14713 " void set s(String v) {}", | |
14714 "}"])); | |
14715 resolve(source); | |
14716 assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM
_TYPE]); | |
14717 verify([source]); | |
14718 } | |
14719 void test_listElementTypeNotAssignable() { | |
14720 Source source = addSource(EngineTestCase.createSource(["var v = <String> [42
];"])); | |
14721 resolve(source); | |
14722 assertErrors(source, [StaticWarningCode.LIST_ELEMENT_TYPE_NOT_ASSIGNABLE]); | |
14723 verify([source]); | |
14724 } | |
14725 void test_mapKeyTypeNotAssignable() { | |
14726 Source source = addSource(EngineTestCase.createSource(["var v = <String, int
> {1 : 2};"])); | |
14727 resolve(source); | |
14728 assertErrors(source, [StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE]); | |
14729 verify([source]); | |
14730 } | |
14731 void test_mapValueTypeNotAssignable() { | |
14732 Source source = addSource(EngineTestCase.createSource(["var v = <String, Str
ing> {'a' : 2};"])); | |
14733 resolve(source); | |
14734 assertErrors(source, [StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE]); | |
14735 verify([source]); | |
14736 } | |
14737 void test_mismatchedAccessorTypes_class() { | |
14738 Source source = addSource(EngineTestCase.createSource([ | |
14739 "class A {", | |
14740 " int get g { return 0; }", | |
14741 " set g(String v) {}", | |
14742 "}"])); | |
14743 resolve(source); | |
14744 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES])
; | |
14745 verify([source]); | |
14746 } | |
14747 void test_mismatchedAccessorTypes_getterAndSuperSetter() { | |
14748 Source source = addSource(EngineTestCase.createSource([ | |
14749 "class A {", | |
14750 " int get g { return 0; }", | |
14751 "}", | |
14752 "class B extends A {", | |
14753 " set g(String v) {}", | |
14754 "}"])); | |
14755 resolve(source); | |
14756 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_F
ROM_SUPERTYPE]); | |
14757 verify([source]); | |
14758 } | |
14759 void test_mismatchedAccessorTypes_setterAndSuperGetter() { | |
14760 Source source = addSource(EngineTestCase.createSource([ | |
14761 "class A {", | |
14762 " set g(int v) {}", | |
14763 "}", | |
14764 "class B extends A {", | |
14765 " String get g { return ''; }", | |
14766 "}"])); | |
14767 resolve(source); | |
14768 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_F
ROM_SUPERTYPE]); | |
14769 verify([source]); | |
14770 } | |
14771 void test_mismatchedAccessorTypes_topLevel() { | |
14772 Source source = addSource(EngineTestCase.createSource(["int get g { return 0
; }", "set g(String v) {}"])); | |
14773 resolve(source); | |
14774 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES])
; | |
14775 verify([source]); | |
14776 } | |
14777 void test_mixedReturnTypes_localFunction() { | |
14778 Source source = addSource(EngineTestCase.createSource([ | |
14779 "class C {", | |
14780 " m(int x) {", | |
14781 " return (int y) {", | |
14782 " if (y < 0) {", | |
14783 " return;", | |
14784 " }", | |
14785 " return 0;", | |
14786 " };", | |
14787 " }", | |
14788 "}"])); | |
14789 resolve(source); | |
14790 assertErrors(source, [StaticWarningCode.MIXED_RETURN_TYPES]); | |
14791 verify([source]); | |
14792 } | |
14793 void test_mixedReturnTypes_method() { | |
14794 Source source = addSource(EngineTestCase.createSource([ | |
14795 "class C {", | |
14796 " m(int x) {", | |
14797 " if (x < 0) {", | |
14798 " return;", | |
14799 " }", | |
14800 " return 0;", | |
14801 " }", | |
14802 "}"])); | |
14803 resolve(source); | |
14804 assertErrors(source, [StaticWarningCode.MIXED_RETURN_TYPES]); | |
14805 verify([source]); | |
14806 } | |
14807 void test_mixedReturnTypes_topLevelFunction() { | |
14808 Source source = addSource(EngineTestCase.createSource([ | |
14809 "f(int x) {", | |
14810 " if (x < 0) {", | |
14811 " return;", | |
14812 " }", | |
14813 " return 0;", | |
14814 "}"])); | |
14815 resolve(source); | |
14816 assertErrors(source, [StaticWarningCode.MIXED_RETURN_TYPES]); | |
14817 verify([source]); | |
14818 } | |
14819 void test_newWithAbstractClass() { | |
14820 Source source = addSource(EngineTestCase.createSource([ | |
14821 "abstract class A {}", | |
14822 "void f() {", | |
14823 " A a = new A();", | |
14824 "}"])); | |
14825 resolve(source); | |
14826 assertErrors(source, [StaticWarningCode.NEW_WITH_ABSTRACT_CLASS]); | |
14827 verify([source]); | |
14828 } | |
14829 void test_newWithInvalidTypeParameters() { | |
14830 Source source = addSource(EngineTestCase.createSource(["class A {}", "f() {
return new A<A>(); }"])); | |
14831 resolve(source); | |
14832 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); | |
14833 verify([source]); | |
14834 } | |
14835 void test_newWithInvalidTypeParameters_tooFew() { | |
14836 Source source = addSource(EngineTestCase.createSource([ | |
14837 "class A {}", | |
14838 "class C<K, V> {}", | |
14839 "f(p) {", | |
14840 " return new C<A>();", | |
14841 "}"])); | |
14842 resolve(source); | |
14843 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); | |
14844 verify([source]); | |
14845 } | |
14846 void test_newWithInvalidTypeParameters_tooMany() { | |
14847 Source source = addSource(EngineTestCase.createSource([ | |
14848 "class A {}", | |
14849 "class C<E> {}", | |
14850 "f(p) {", | |
14851 " return new C<A, A>();", | |
14852 "}"])); | |
14853 resolve(source); | |
14854 assertErrors(source, [StaticWarningCode.NEW_WITH_INVALID_TYPE_PARAMETERS]); | |
14855 verify([source]); | |
14856 } | |
14857 void test_newWithNonType() { | |
14858 Source source = addSource(EngineTestCase.createSource(["var A = 0;", "void f
() {", " var a = new A();", "}"])); | |
14859 resolve(source); | |
14860 assertErrors(source, [StaticWarningCode.NEW_WITH_NON_TYPE]); | |
14861 verify([source]); | |
14862 } | |
14863 void test_newWithNonType_fromLibrary() { | |
14864 Source source1 = addSource2("lib.dart", "class B {}"); | |
14865 Source source2 = addSource2("lib2.dart", EngineTestCase.createSource([ | |
14866 "import 'lib.dart' as lib;", | |
14867 "void f() {", | |
14868 " var a = new lib.A();", | |
14869 "}", | |
14870 "lib.B b;"])); | |
14871 resolve(source1); | |
14872 resolve(source2); | |
14873 assertErrors(source2, [StaticWarningCode.NEW_WITH_NON_TYPE]); | |
14874 verify([source1]); | |
14875 } | |
14876 void test_newWithUndefinedConstructor() { | |
14877 Source source = addSource(EngineTestCase.createSource([ | |
14878 "class A {", | |
14879 " A() {}", | |
14880 "}", | |
14881 "f() {", | |
14882 " new A.name();", | |
14883 "}"])); | |
14884 resolve(source); | |
14885 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR]); | |
14886 } | |
14887 void test_newWithUndefinedConstructorDefault() { | |
14888 Source source = addSource(EngineTestCase.createSource([ | |
14889 "class A {", | |
14890 " A.name() {}", | |
14891 "}", | |
14892 "f() {", | |
14893 " new A();", | |
14894 "}"])); | |
14895 resolve(source); | |
14896 assertErrors(source, [StaticWarningCode.NEW_WITH_UNDEFINED_CONSTRUCTOR_DEFAU
LT]); | |
14897 verify([source]); | |
14898 } | |
14899 void test_nonAbstractClassInheritsAbstractMemberFivePlus() { | |
14900 Source source = addSource(EngineTestCase.createSource([ | |
14901 "abstract class A {", | |
14902 " m();", | |
14903 " n();", | |
14904 " o();", | |
14905 " p();", | |
14906 " q();", | |
14907 "}", | |
14908 "class C extends A {", | |
14909 "}"])); | |
14910 resolve(source); | |
14911 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_FIVE_PLUS]); | |
14912 verify([source]); | |
14913 } | |
14914 void test_nonAbstractClassInheritsAbstractMemberFour() { | |
14915 Source source = addSource(EngineTestCase.createSource([ | |
14916 "abstract class A {", | |
14917 " m();", | |
14918 " n();", | |
14919 " o();", | |
14920 " p();", | |
14921 "}", | |
14922 "class C extends A {", | |
14923 "}"])); | |
14924 resolve(source); | |
14925 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_FOUR]); | |
14926 verify([source]); | |
14927 } | |
14928 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() { | |
14929 Source source = addSource(EngineTestCase.createSource([ | |
14930 "class I {", | |
14931 " int get g {return 1;}", | |
14932 "}", | |
14933 "class C implements I {", | |
14934 "}"])); | |
14935 resolve(source); | |
14936 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
14937 verify([source]); | |
14938 } | |
14939 void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperclass() { | |
14940 Source source = addSource(EngineTestCase.createSource([ | |
14941 "abstract class A {", | |
14942 " int get g;", | |
14943 "}", | |
14944 "class C extends A {", | |
14945 "}"])); | |
14946 resolve(source); | |
14947 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
14948 verify([source]); | |
14949 } | |
14950 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterface() { | |
14951 Source source = addSource(EngineTestCase.createSource([ | |
14952 "class I {", | |
14953 " m(p) {}", | |
14954 "}", | |
14955 "class C implements I {", | |
14956 "}"])); | |
14957 resolve(source); | |
14958 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
14959 verify([source]); | |
14960 } | |
14961 void test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperclass() { | |
14962 Source source = addSource(EngineTestCase.createSource([ | |
14963 "abstract class A {", | |
14964 " m(p);", | |
14965 "}", | |
14966 "class C extends A {", | |
14967 "}"])); | |
14968 resolve(source); | |
14969 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
14970 verify([source]); | |
14971 } | |
14972 void test_nonAbstractClassInheritsAbstractMemberOne_method_optionalParamCount(
) { | |
14973 Source source = addSource(EngineTestCase.createSource([ | |
14974 "abstract class A {", | |
14975 " int x(int a);", | |
14976 "}", | |
14977 "abstract class B {", | |
14978 " int x(int a, [int b]);", | |
14979 "}", | |
14980 "class C implements A, B {", | |
14981 "}"])); | |
14982 resolve(source); | |
14983 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
14984 verify([source]); | |
14985 } | |
14986 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterface() { | |
14987 Source source = addSource(EngineTestCase.createSource([ | |
14988 "class I {", | |
14989 " set s(int i) {}", | |
14990 "}", | |
14991 "class C implements I {", | |
14992 "}"])); | |
14993 resolve(source); | |
14994 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
14995 verify([source]); | |
14996 } | |
14997 void test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperclass() { | |
14998 Source source = addSource(EngineTestCase.createSource([ | |
14999 "abstract class A {", | |
15000 " set s(int i);", | |
15001 "}", | |
15002 "class C extends A {", | |
15003 "}"])); | |
15004 resolve(source); | |
15005 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
15006 verify([source]); | |
15007 } | |
15008 void test_nonAbstractClassInheritsAbstractMemberOne_superclasses_interface() { | |
15009 Source source = addSource(EngineTestCase.createSource([ | |
15010 "class A {", | |
15011 " get a => 'a';", | |
15012 "}", | |
15013 "abstract class B implements A {", | |
15014 " get b => 'b';", | |
15015 "}", | |
15016 "class C extends B {", | |
15017 "}"])); | |
15018 resolve(source); | |
15019 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_ONE]); | |
15020 verify([source]); | |
15021 } | |
15022 void test_nonAbstractClassInheritsAbstractMemberThree() { | |
15023 Source source = addSource(EngineTestCase.createSource([ | |
15024 "abstract class A {", | |
15025 " m();", | |
15026 " n();", | |
15027 " o();", | |
15028 "}", | |
15029 "class C extends A {", | |
15030 "}"])); | |
15031 resolve(source); | |
15032 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_THREE]); | |
15033 verify([source]); | |
15034 } | |
15035 void test_nonAbstractClassInheritsAbstractMemberTwo() { | |
15036 Source source = addSource(EngineTestCase.createSource([ | |
15037 "abstract class A {", | |
15038 " m();", | |
15039 " n();", | |
15040 "}", | |
15041 "class C extends A {", | |
15042 "}"])); | |
15043 resolve(source); | |
15044 assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT
_MEMBER_TWO]); | |
15045 verify([source]); | |
15046 } | |
15047 void test_nonTypeInCatchClause_noElement() { | |
15048 Source source = addSource(EngineTestCase.createSource(["f() {", " try {", "
} on T catch (e) {", " }", "}"])); | |
15049 resolve(source); | |
15050 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); | |
15051 verify([source]); | |
15052 } | |
15053 void test_nonTypeInCatchClause_notType() { | |
15054 Source source = addSource(EngineTestCase.createSource([ | |
15055 "var T = 0;", | |
15056 "f() {", | |
15057 " try {", | |
15058 " } on T catch (e) {", | |
15059 " }", | |
15060 "}"])); | |
15061 resolve(source); | |
15062 assertErrors(source, [StaticWarningCode.NON_TYPE_IN_CATCH_CLAUSE]); | |
15063 verify([source]); | |
15064 } | |
15065 void test_nonVoidReturnForOperator() { | |
15066 Source source = addSource(EngineTestCase.createSource(["class A {", " int o
perator []=(a, b) {}", "}"])); | |
15067 resolve(source); | |
15068 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]); | |
15069 verify([source]); | |
15070 } | |
15071 void test_nonVoidReturnForSetter_function() { | |
15072 Source source = addSource(EngineTestCase.createSource(["int set x(int v) {",
" return 42;", "}"])); | |
15073 resolve(source); | |
15074 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); | |
15075 verify([source]); | |
15076 } | |
15077 void test_nonVoidReturnForSetter_method() { | |
15078 Source source = addSource(EngineTestCase.createSource([ | |
15079 "class A {", | |
15080 " int set x(int v) {", | |
15081 " return 42;", | |
15082 " }", | |
15083 "}"])); | |
15084 resolve(source); | |
15085 assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_SETTER]); | |
15086 verify([source]); | |
15087 } | |
15088 void test_notAType() { | |
15089 Source source = addSource(EngineTestCase.createSource(["f() {}", "main() {",
" f v = null;", "}"])); | |
15090 resolve(source); | |
15091 assertErrors(source, [StaticWarningCode.NOT_A_TYPE]); | |
15092 verify([source]); | |
15093 } | |
15094 void test_notEnoughRequiredArguments() { | |
15095 Source source = addSource(EngineTestCase.createSource(["f(int a, String b) {
}", "main() {", " f();", "}"])); | |
15096 resolve(source); | |
15097 assertErrors(source, [StaticWarningCode.NOT_ENOUGH_REQUIRED_ARGUMENTS]); | |
15098 verify([source]); | |
15099 } | |
15100 void test_partOfDifferentLibrary() { | |
15101 Source source = addSource(EngineTestCase.createSource(["library lib;", "part
'part.dart';"])); | |
15102 addSource2("/part.dart", EngineTestCase.createSource(["part of lub;"])); | |
15103 resolve(source); | |
15104 assertErrors(source, [StaticWarningCode.PART_OF_DIFFERENT_LIBRARY]); | |
15105 verify([source]); | |
15106 } | |
15107 void test_redirectToInvalidFunctionType() { | |
15108 Source source = addSource(EngineTestCase.createSource([ | |
15109 "class A implements B {", | |
15110 " A(int p) {}", | |
15111 "}", | |
15112 "class B {", | |
15113 " factory B() = A;", | |
15114 "}"])); | |
15115 resolve(source); | |
15116 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_FUNCTION_TYPE]); | |
15117 verify([source]); | |
15118 } | |
15119 void test_redirectToInvalidReturnType() { | |
15120 Source source = addSource(EngineTestCase.createSource([ | |
15121 "class A {", | |
15122 " A() {}", | |
15123 "}", | |
15124 "class B {", | |
15125 " factory B() = A;", | |
15126 "}"])); | |
15127 resolve(source); | |
15128 assertErrors(source, [StaticWarningCode.REDIRECT_TO_INVALID_RETURN_TYPE]); | |
15129 verify([source]); | |
15130 } | |
15131 void test_redirectToMissingConstructor_named() { | |
15132 Source source = addSource(EngineTestCase.createSource([ | |
15133 "class A implements B{", | |
15134 " A() {}", | |
15135 "}", | |
15136 "class B {", | |
15137 " factory B() = A.name;", | |
15138 "}"])); | |
15139 resolve(source); | |
15140 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); | |
15141 } | |
15142 void test_redirectToMissingConstructor_unnamed() { | |
15143 Source source = addSource(EngineTestCase.createSource([ | |
15144 "class A implements B{", | |
15145 " A.name() {}", | |
15146 "}", | |
15147 "class B {", | |
15148 " factory B() = A;", | |
15149 "}"])); | |
15150 resolve(source); | |
15151 assertErrors(source, [StaticWarningCode.REDIRECT_TO_MISSING_CONSTRUCTOR]); | |
15152 } | |
15153 void test_redirectToNonClass_notAType() { | |
15154 Source source = addSource(EngineTestCase.createSource(["class B {", " int A
;", " factory B() = A;", "}"])); | |
15155 resolve(source); | |
15156 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); | |
15157 verify([source]); | |
15158 } | |
15159 void test_redirectToNonClass_undefinedIdentifier() { | |
15160 Source source = addSource(EngineTestCase.createSource(["class B {", " facto
ry B() = A;", "}"])); | |
15161 resolve(source); | |
15162 assertErrors(source, [StaticWarningCode.REDIRECT_TO_NON_CLASS]); | |
15163 verify([source]); | |
15164 } | |
15165 void test_returnWithoutValue() { | |
15166 Source source = addSource(EngineTestCase.createSource(["int f() { return; }"
])); | |
15167 resolve(source); | |
15168 assertErrors(source, [StaticWarningCode.RETURN_WITHOUT_VALUE]); | |
15169 verify([source]); | |
15170 } | |
15171 void test_staticAccessToInstanceMember_method_invocation() { | |
15172 Source source = addSource(EngineTestCase.createSource(["class A {", " m() {
}", "}", "main() {", " A.m();", "}"])); | |
15173 resolve(source); | |
15174 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | |
15175 verify([source]); | |
15176 } | |
15177 void test_staticAccessToInstanceMember_method_reference() { | |
15178 Source source = addSource(EngineTestCase.createSource(["class A {", " m() {
}", "}", "main() {", " A.m;", "}"])); | |
15179 resolve(source); | |
15180 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | |
15181 verify([source]); | |
15182 } | |
15183 void test_staticAccessToInstanceMember_propertyAccess_field() { | |
15184 Source source = addSource(EngineTestCase.createSource(["class A {", " var f
;", "}", "main() {", " A.f;", "}"])); | |
15185 resolve(source); | |
15186 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | |
15187 verify([source]); | |
15188 } | |
15189 void test_staticAccessToInstanceMember_propertyAccess_getter() { | |
15190 Source source = addSource(EngineTestCase.createSource([ | |
15191 "class A {", | |
15192 " get f => 42;", | |
15193 "}", | |
15194 "main() {", | |
15195 " A.f;", | |
15196 "}"])); | |
15197 resolve(source); | |
15198 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | |
15199 verify([source]); | |
15200 } | |
15201 void test_staticAccessToInstanceMember_propertyAccess_setter() { | |
15202 Source source = addSource(EngineTestCase.createSource([ | |
15203 "class A {", | |
15204 " set f(x) {}", | |
15205 "}", | |
15206 "main() {", | |
15207 " A.f = 42;", | |
15208 "}"])); | |
15209 resolve(source); | |
15210 assertErrors(source, [StaticWarningCode.STATIC_ACCESS_TO_INSTANCE_MEMBER]); | |
15211 verify([source]); | |
15212 } | |
15213 void test_switchExpressionNotAssignable() { | |
15214 Source source = addSource(EngineTestCase.createSource([ | |
15215 "f(int p) {", | |
15216 " switch (p) {", | |
15217 " case 'a': break;", | |
15218 " }", | |
15219 "}"])); | |
15220 resolve(source); | |
15221 assertErrors(source, [StaticWarningCode.SWITCH_EXPRESSION_NOT_ASSIGNABLE]); | |
15222 verify([source]); | |
15223 } | |
15224 void test_typeParameterReferencedByStatic_field() { | |
15225 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st
atic K k;", "}"])); | |
15226 resolve(source); | |
15227 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]
); | |
15228 verify([source]); | |
15229 } | |
15230 void test_typeParameterReferencedByStatic_getter() { | |
15231 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st
atic K get k => 0;", "}"])); | |
15232 resolve(source); | |
15233 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]
); | |
15234 verify([source]); | |
15235 } | |
15236 void test_typeParameterReferencedByStatic_methodBodyReference() { | |
15237 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st
atic m() {", " K k;", " }", "}"])); | |
15238 resolve(source); | |
15239 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]
); | |
15240 verify([source]); | |
15241 } | |
15242 void test_typeParameterReferencedByStatic_methodParameter() { | |
15243 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st
atic m(K k) {}", "}"])); | |
15244 resolve(source); | |
15245 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]
); | |
15246 verify([source]); | |
15247 } | |
15248 void test_typeParameterReferencedByStatic_methodReturn() { | |
15249 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st
atic K m() {}", "}"])); | |
15250 resolve(source); | |
15251 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]
); | |
15252 verify([source]); | |
15253 } | |
15254 void test_typeParameterReferencedByStatic_setter() { | |
15255 Source source = addSource(EngineTestCase.createSource(["class A<K> {", " st
atic set s(K k) {}", "}"])); | |
15256 resolve(source); | |
15257 assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]
); | |
15258 verify([source]); | |
15259 } | |
15260 void test_typePromotion_functionType_arg_InterToDyn() { | |
15261 Source source = addSource(EngineTestCase.createSource([ | |
15262 "typedef FuncDyn(x);", | |
15263 "typedef FuncA(A a);", | |
15264 "class A {}", | |
15265 "class B {}", | |
15266 "main(FuncA f) {", | |
15267 " if (f is FuncDyn) {", | |
15268 " f(new B());", | |
15269 " }", | |
15270 "}"])); | |
15271 resolve(source); | |
15272 assertErrors(source, [StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE]); | |
15273 } | |
15274 void test_typeTestNonType() { | |
15275 Source source = addSource(EngineTestCase.createSource(["var A = 0;", "f(var
p) {", " if (p is A) {", " }", "}"])); | |
15276 resolve(source); | |
15277 assertErrors(source, [StaticWarningCode.TYPE_TEST_NON_TYPE]); | |
15278 verify([source]); | |
15279 } | |
15280 void test_undefinedClass_instanceCreation() { | |
15281 Source source = addSource(EngineTestCase.createSource(["f() { new C(); }"]))
; | |
15282 resolve(source); | |
15283 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); | |
15284 } | |
15285 void test_undefinedClass_variableDeclaration() { | |
15286 Source source = addSource(EngineTestCase.createSource(["f() { C c; }"])); | |
15287 resolve(source); | |
15288 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]); | |
15289 } | |
15290 void test_undefinedClassBoolean_variableDeclaration() { | |
15291 Source source = addSource(EngineTestCase.createSource(["f() { boolean v; }"]
)); | |
15292 resolve(source); | |
15293 assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS_BOOLEAN]); | |
15294 } | |
15295 void test_undefinedGetter_fromLibrary() { | |
15296 Source source1 = addSource2("lib.dart", ""); | |
15297 Source source2 = addSource2("lib2.dart", EngineTestCase.createSource([ | |
15298 "import 'lib.dart' as lib;", | |
15299 "void f() {", | |
15300 " var g = lib.gg;", | |
15301 "}"])); | |
15302 resolve(source1); | |
15303 resolve(source2); | |
15304 assertErrors(source2, [StaticWarningCode.UNDEFINED_GETTER]); | |
15305 verify([source1]); | |
15306 } | |
15307 void test_undefinedIdentifier_for() { | |
15308 Source source = addSource(EngineTestCase.createSource(["f(var l) {", " for
(e in l) {", " }", "}"])); | |
15309 resolve(source); | |
15310 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15311 } | |
15312 void test_undefinedIdentifier_function() { | |
15313 Source source = addSource(EngineTestCase.createSource(["int a() => b;"])); | |
15314 resolve(source); | |
15315 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15316 } | |
15317 void test_undefinedIdentifier_function_prefix() { | |
15318 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
C {}"])); | |
15319 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
b;", "", "int a() => b;", "b.C c;"])); | |
15320 resolve(source); | |
15321 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15322 verify([source]); | |
15323 } | |
15324 void test_undefinedIdentifier_initializer() { | |
15325 Source source = addSource(EngineTestCase.createSource(["var a = b;"])); | |
15326 resolve(source); | |
15327 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15328 } | |
15329 void test_undefinedIdentifier_initializer_prefix() { | |
15330 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
C {}"])); | |
15331 Source source = addSource(EngineTestCase.createSource(["import 'lib.dart' as
b;", "", "var a = b;", "b.C c;"])); | |
15332 resolve(source); | |
15333 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15334 } | |
15335 void test_undefinedIdentifier_metadata() { | |
15336 Source source = addSource(EngineTestCase.createSource(["@undefined class A {
}"])); | |
15337 resolve(source); | |
15338 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15339 } | |
15340 void test_undefinedIdentifier_methodInvocation() { | |
15341 Source source = addSource(EngineTestCase.createSource(["f() { C.m(); }"])); | |
15342 resolve(source); | |
15343 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15344 } | |
15345 void test_undefinedIdentifier_private_getter() { | |
15346 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A {", " var _foo;", "}"])); | |
15347 Source source = addSource(EngineTestCase.createSource([ | |
15348 "import 'lib.dart';", | |
15349 "class B extends A {", | |
15350 " test() {", | |
15351 " var v = _foo;", | |
15352 " }", | |
15353 "}"])); | |
15354 resolve(source); | |
15355 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15356 } | |
15357 void test_undefinedIdentifier_private_setter() { | |
15358 addSource2("/lib.dart", EngineTestCase.createSource(["library lib;", "class
A {", " var _foo;", "}"])); | |
15359 Source source = addSource(EngineTestCase.createSource([ | |
15360 "import 'lib.dart';", | |
15361 "class B extends A {", | |
15362 " test() {", | |
15363 " _foo = 42;", | |
15364 " }", | |
15365 "}"])); | |
15366 resolve(source); | |
15367 assertErrors(source, [StaticWarningCode.UNDEFINED_IDENTIFIER]); | |
15368 } | |
15369 void test_undefinedNamedParameter() { | |
15370 Source source = addSource(EngineTestCase.createSource(["f({a, b}) {}", "main
() {", " f(c: 1);", "}"])); | |
15371 resolve(source); | |
15372 assertErrors(source, [StaticWarningCode.UNDEFINED_NAMED_PARAMETER]); | |
15373 } | |
15374 void test_undefinedSetter() { | |
15375 Source source1 = addSource2("lib.dart", ""); | |
15376 Source source2 = addSource2("lib2.dart", EngineTestCase.createSource([ | |
15377 "import 'lib.dart' as lib;", | |
15378 "void f() {", | |
15379 " lib.gg = null;", | |
15380 "}"])); | |
15381 resolve(source1); | |
15382 resolve(source2); | |
15383 assertErrors(source2, [StaticWarningCode.UNDEFINED_SETTER]); | |
15384 } | |
15385 static dartSuite() { | |
15386 _ut.group('StaticWarningCodeTest', () { | |
15387 _ut.test('test_ambiguousImport_as', () { | |
15388 final __test = new StaticWarningCodeTest(); | |
15389 runJUnitTest(__test, __test.test_ambiguousImport_as); | |
15390 }); | |
15391 _ut.test('test_ambiguousImport_extends', () { | |
15392 final __test = new StaticWarningCodeTest(); | |
15393 runJUnitTest(__test, __test.test_ambiguousImport_extends); | |
15394 }); | |
15395 _ut.test('test_ambiguousImport_implements', () { | |
15396 final __test = new StaticWarningCodeTest(); | |
15397 runJUnitTest(__test, __test.test_ambiguousImport_implements); | |
15398 }); | |
15399 _ut.test('test_ambiguousImport_inPart', () { | |
15400 final __test = new StaticWarningCodeTest(); | |
15401 runJUnitTest(__test, __test.test_ambiguousImport_inPart); | |
15402 }); | |
15403 _ut.test('test_ambiguousImport_instanceCreation', () { | |
15404 final __test = new StaticWarningCodeTest(); | |
15405 runJUnitTest(__test, __test.test_ambiguousImport_instanceCreation); | |
15406 }); | |
15407 _ut.test('test_ambiguousImport_is', () { | |
15408 final __test = new StaticWarningCodeTest(); | |
15409 runJUnitTest(__test, __test.test_ambiguousImport_is); | |
15410 }); | |
15411 _ut.test('test_ambiguousImport_qualifier', () { | |
15412 final __test = new StaticWarningCodeTest(); | |
15413 runJUnitTest(__test, __test.test_ambiguousImport_qualifier); | |
15414 }); | |
15415 _ut.test('test_ambiguousImport_typeAnnotation', () { | |
15416 final __test = new StaticWarningCodeTest(); | |
15417 runJUnitTest(__test, __test.test_ambiguousImport_typeAnnotation); | |
15418 }); | |
15419 _ut.test('test_ambiguousImport_typeArgument_annotation', () { | |
15420 final __test = new StaticWarningCodeTest(); | |
15421 runJUnitTest(__test, __test.test_ambiguousImport_typeArgument_annotation
); | |
15422 }); | |
15423 _ut.test('test_ambiguousImport_typeArgument_instanceCreation', () { | |
15424 final __test = new StaticWarningCodeTest(); | |
15425 runJUnitTest(__test, __test.test_ambiguousImport_typeArgument_instanceCr
eation); | |
15426 }); | |
15427 _ut.test('test_ambiguousImport_varRead', () { | |
15428 final __test = new StaticWarningCodeTest(); | |
15429 runJUnitTest(__test, __test.test_ambiguousImport_varRead); | |
15430 }); | |
15431 _ut.test('test_ambiguousImport_varWrite', () { | |
15432 final __test = new StaticWarningCodeTest(); | |
15433 runJUnitTest(__test, __test.test_ambiguousImport_varWrite); | |
15434 }); | |
15435 _ut.test('test_argumentTypeNotAssignable_annotation_namedConstructor', ()
{ | |
15436 final __test = new StaticWarningCodeTest(); | |
15437 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_annotation_na
medConstructor); | |
15438 }); | |
15439 _ut.test('test_argumentTypeNotAssignable_annotation_unnamedConstructor', (
) { | |
15440 final __test = new StaticWarningCodeTest(); | |
15441 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_annotation_un
namedConstructor); | |
15442 }); | |
15443 _ut.test('test_argumentTypeNotAssignable_binary', () { | |
15444 final __test = new StaticWarningCodeTest(); | |
15445 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_binary); | |
15446 }); | |
15447 _ut.test('test_argumentTypeNotAssignable_const', () { | |
15448 final __test = new StaticWarningCodeTest(); | |
15449 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_const); | |
15450 }); | |
15451 _ut.test('test_argumentTypeNotAssignable_const_super', () { | |
15452 final __test = new StaticWarningCodeTest(); | |
15453 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_const_super); | |
15454 }); | |
15455 _ut.test('test_argumentTypeNotAssignable_index', () { | |
15456 final __test = new StaticWarningCodeTest(); | |
15457 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_index); | |
15458 }); | |
15459 _ut.test('test_argumentTypeNotAssignable_invocation_callParameter', () { | |
15460 final __test = new StaticWarningCodeTest(); | |
15461 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ca
llParameter); | |
15462 }); | |
15463 _ut.test('test_argumentTypeNotAssignable_invocation_callVariable', () { | |
15464 final __test = new StaticWarningCodeTest(); | |
15465 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ca
llVariable); | |
15466 }); | |
15467 _ut.test('test_argumentTypeNotAssignable_invocation_functionParameter', ()
{ | |
15468 final __test = new StaticWarningCodeTest(); | |
15469 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_fu
nctionParameter); | |
15470 }); | |
15471 _ut.test('test_argumentTypeNotAssignable_invocation_functionParameter_gene
ric', () { | |
15472 final __test = new StaticWarningCodeTest(); | |
15473 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_fu
nctionParameter_generic); | |
15474 }); | |
15475 _ut.test('test_argumentTypeNotAssignable_invocation_functionTypes_optional
', () { | |
15476 final __test = new StaticWarningCodeTest(); | |
15477 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_fu
nctionTypes_optional); | |
15478 }); | |
15479 _ut.test('test_argumentTypeNotAssignable_invocation_generic', () { | |
15480 final __test = new StaticWarningCodeTest(); | |
15481 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ge
neric); | |
15482 }); | |
15483 _ut.test('test_argumentTypeNotAssignable_invocation_named', () { | |
15484 final __test = new StaticWarningCodeTest(); | |
15485 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_na
med); | |
15486 }); | |
15487 _ut.test('test_argumentTypeNotAssignable_invocation_optional', () { | |
15488 final __test = new StaticWarningCodeTest(); | |
15489 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_op
tional); | |
15490 }); | |
15491 _ut.test('test_argumentTypeNotAssignable_invocation_required', () { | |
15492 final __test = new StaticWarningCodeTest(); | |
15493 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_re
quired); | |
15494 }); | |
15495 _ut.test('test_argumentTypeNotAssignable_invocation_typedef_generic', () { | |
15496 final __test = new StaticWarningCodeTest(); | |
15497 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ty
pedef_generic); | |
15498 }); | |
15499 _ut.test('test_argumentTypeNotAssignable_invocation_typedef_local', () { | |
15500 final __test = new StaticWarningCodeTest(); | |
15501 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ty
pedef_local); | |
15502 }); | |
15503 _ut.test('test_argumentTypeNotAssignable_invocation_typedef_parameter', ()
{ | |
15504 final __test = new StaticWarningCodeTest(); | |
15505 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_invocation_ty
pedef_parameter); | |
15506 }); | |
15507 _ut.test('test_argumentTypeNotAssignable_new_generic', () { | |
15508 final __test = new StaticWarningCodeTest(); | |
15509 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_new_generic); | |
15510 }); | |
15511 _ut.test('test_argumentTypeNotAssignable_new_optional', () { | |
15512 final __test = new StaticWarningCodeTest(); | |
15513 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_new_optional)
; | |
15514 }); | |
15515 _ut.test('test_argumentTypeNotAssignable_new_required', () { | |
15516 final __test = new StaticWarningCodeTest(); | |
15517 runJUnitTest(__test, __test.test_argumentTypeNotAssignable_new_required)
; | |
15518 }); | |
15519 _ut.test('test_assignmentToConst_instanceVariable', () { | |
15520 final __test = new StaticWarningCodeTest(); | |
15521 runJUnitTest(__test, __test.test_assignmentToConst_instanceVariable); | |
15522 }); | |
15523 _ut.test('test_assignmentToConst_localVariable', () { | |
15524 final __test = new StaticWarningCodeTest(); | |
15525 runJUnitTest(__test, __test.test_assignmentToConst_localVariable); | |
15526 }); | |
15527 _ut.test('test_assignmentToFinal_instanceVariable', () { | |
15528 final __test = new StaticWarningCodeTest(); | |
15529 runJUnitTest(__test, __test.test_assignmentToFinal_instanceVariable); | |
15530 }); | |
15531 _ut.test('test_assignmentToFinal_localVariable', () { | |
15532 final __test = new StaticWarningCodeTest(); | |
15533 runJUnitTest(__test, __test.test_assignmentToFinal_localVariable); | |
15534 }); | |
15535 _ut.test('test_assignmentToFinal_prefixMinusMinus', () { | |
15536 final __test = new StaticWarningCodeTest(); | |
15537 runJUnitTest(__test, __test.test_assignmentToFinal_prefixMinusMinus); | |
15538 }); | |
15539 _ut.test('test_assignmentToFinal_prefixPlusPlus', () { | |
15540 final __test = new StaticWarningCodeTest(); | |
15541 runJUnitTest(__test, __test.test_assignmentToFinal_prefixPlusPlus); | |
15542 }); | |
15543 _ut.test('test_assignmentToFinal_propertyAccess', () { | |
15544 final __test = new StaticWarningCodeTest(); | |
15545 runJUnitTest(__test, __test.test_assignmentToFinal_propertyAccess); | |
15546 }); | |
15547 _ut.test('test_assignmentToFinal_suffixMinusMinus', () { | |
15548 final __test = new StaticWarningCodeTest(); | |
15549 runJUnitTest(__test, __test.test_assignmentToFinal_suffixMinusMinus); | |
15550 }); | |
15551 _ut.test('test_assignmentToFinal_suffixPlusPlus', () { | |
15552 final __test = new StaticWarningCodeTest(); | |
15553 runJUnitTest(__test, __test.test_assignmentToFinal_suffixPlusPlus); | |
15554 }); | |
15555 _ut.test('test_assignmentToFinal_topLevelVariable', () { | |
15556 final __test = new StaticWarningCodeTest(); | |
15557 runJUnitTest(__test, __test.test_assignmentToFinal_topLevelVariable); | |
15558 }); | |
15559 _ut.test('test_assignmentToMethod', () { | |
15560 final __test = new StaticWarningCodeTest(); | |
15561 runJUnitTest(__test, __test.test_assignmentToMethod); | |
15562 }); | |
15563 _ut.test('test_caseBlockNotTerminated', () { | |
15564 final __test = new StaticWarningCodeTest(); | |
15565 runJUnitTest(__test, __test.test_caseBlockNotTerminated); | |
15566 }); | |
15567 _ut.test('test_castToNonType', () { | |
15568 final __test = new StaticWarningCodeTest(); | |
15569 runJUnitTest(__test, __test.test_castToNonType); | |
15570 }); | |
15571 _ut.test('test_concreteClassWithAbstractMember', () { | |
15572 final __test = new StaticWarningCodeTest(); | |
15573 runJUnitTest(__test, __test.test_concreteClassWithAbstractMember); | |
15574 }); | |
15575 _ut.test('test_conflictingDartImport', () { | |
15576 final __test = new StaticWarningCodeTest(); | |
15577 runJUnitTest(__test, __test.test_conflictingDartImport); | |
15578 }); | |
15579 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_direct_field',
() { | |
15580 final __test = new StaticWarningCodeTest(); | |
15581 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_direct_field); | |
15582 }); | |
15583 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_direct_getter'
, () { | |
15584 final __test = new StaticWarningCodeTest(); | |
15585 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_direct_getter); | |
15586 }); | |
15587 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_direct_method'
, () { | |
15588 final __test = new StaticWarningCodeTest(); | |
15589 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_direct_method); | |
15590 }); | |
15591 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_direct_setter'
, () { | |
15592 final __test = new StaticWarningCodeTest(); | |
15593 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_direct_setter); | |
15594 }); | |
15595 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_indirect', ()
{ | |
15596 final __test = new StaticWarningCodeTest(); | |
15597 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_indirect); | |
15598 }); | |
15599 _ut.test('test_conflictingInstanceGetterAndSuperclassMember_mixin', () { | |
15600 final __test = new StaticWarningCodeTest(); | |
15601 runJUnitTest(__test, __test.test_conflictingInstanceGetterAndSuperclassM
ember_mixin); | |
15602 }); | |
15603 _ut.test('test_conflictingInstanceSetterAndSuperclassMember', () { | |
15604 final __test = new StaticWarningCodeTest(); | |
15605 runJUnitTest(__test, __test.test_conflictingInstanceSetterAndSuperclassM
ember); | |
15606 }); | |
15607 _ut.test('test_conflictingStaticGetterAndInstanceSetter_mixin', () { | |
15608 final __test = new StaticWarningCodeTest(); | |
15609 runJUnitTest(__test, __test.test_conflictingStaticGetterAndInstanceSette
r_mixin); | |
15610 }); | |
15611 _ut.test('test_conflictingStaticGetterAndInstanceSetter_superClass', () { | |
15612 final __test = new StaticWarningCodeTest(); | |
15613 runJUnitTest(__test, __test.test_conflictingStaticGetterAndInstanceSette
r_superClass); | |
15614 }); | |
15615 _ut.test('test_conflictingStaticGetterAndInstanceSetter_thisClass', () { | |
15616 final __test = new StaticWarningCodeTest(); | |
15617 runJUnitTest(__test, __test.test_conflictingStaticGetterAndInstanceSette
r_thisClass); | |
15618 }); | |
15619 _ut.test('test_conflictingStaticSetterAndInstanceMember_thisClass_getter',
() { | |
15620 final __test = new StaticWarningCodeTest(); | |
15621 runJUnitTest(__test, __test.test_conflictingStaticSetterAndInstanceMembe
r_thisClass_getter); | |
15622 }); | |
15623 _ut.test('test_conflictingStaticSetterAndInstanceMember_thisClass_method',
() { | |
15624 final __test = new StaticWarningCodeTest(); | |
15625 runJUnitTest(__test, __test.test_conflictingStaticSetterAndInstanceMembe
r_thisClass_method); | |
15626 }); | |
15627 _ut.test('test_constWithAbstractClass', () { | |
15628 final __test = new StaticWarningCodeTest(); | |
15629 runJUnitTest(__test, __test.test_constWithAbstractClass); | |
15630 }); | |
15631 _ut.test('test_equalKeysInMap', () { | |
15632 final __test = new StaticWarningCodeTest(); | |
15633 runJUnitTest(__test, __test.test_equalKeysInMap); | |
15634 }); | |
15635 _ut.test('test_exportDuplicatedLibraryName', () { | |
15636 final __test = new StaticWarningCodeTest(); | |
15637 runJUnitTest(__test, __test.test_exportDuplicatedLibraryName); | |
15638 }); | |
15639 _ut.test('test_extraPositionalArguments', () { | |
15640 final __test = new StaticWarningCodeTest(); | |
15641 runJUnitTest(__test, __test.test_extraPositionalArguments); | |
15642 }); | |
15643 _ut.test('test_fieldInitializedInInitializerAndDeclaration_final', () { | |
15644 final __test = new StaticWarningCodeTest(); | |
15645 runJUnitTest(__test, __test.test_fieldInitializedInInitializerAndDeclara
tion_final); | |
15646 }); | |
15647 _ut.test('test_fieldInitializerNotAssignable', () { | |
15648 final __test = new StaticWarningCodeTest(); | |
15649 runJUnitTest(__test, __test.test_fieldInitializerNotAssignable); | |
15650 }); | |
15651 _ut.test('test_fieldInitializingFormalNotAssignable', () { | |
15652 final __test = new StaticWarningCodeTest(); | |
15653 runJUnitTest(__test, __test.test_fieldInitializingFormalNotAssignable); | |
15654 }); | |
15655 _ut.test('test_finalInitializedInDeclarationAndConstructor_initializers',
() { | |
15656 final __test = new StaticWarningCodeTest(); | |
15657 runJUnitTest(__test, __test.test_finalInitializedInDeclarationAndConstru
ctor_initializers); | |
15658 }); | |
15659 _ut.test('test_finalInitializedInDeclarationAndConstructor_initializingFor
mal', () { | |
15660 final __test = new StaticWarningCodeTest(); | |
15661 runJUnitTest(__test, __test.test_finalInitializedInDeclarationAndConstru
ctor_initializingFormal); | |
15662 }); | |
15663 _ut.test('test_finalNotInitialized_inConstructor', () { | |
15664 final __test = new StaticWarningCodeTest(); | |
15665 runJUnitTest(__test, __test.test_finalNotInitialized_inConstructor); | |
15666 }); | |
15667 _ut.test('test_finalNotInitialized_instanceField_final', () { | |
15668 final __test = new StaticWarningCodeTest(); | |
15669 runJUnitTest(__test, __test.test_finalNotInitialized_instanceField_final
); | |
15670 }); | |
15671 _ut.test('test_finalNotInitialized_instanceField_final_static', () { | |
15672 final __test = new StaticWarningCodeTest(); | |
15673 runJUnitTest(__test, __test.test_finalNotInitialized_instanceField_final
_static); | |
15674 }); | |
15675 _ut.test('test_finalNotInitialized_library_final', () { | |
15676 final __test = new StaticWarningCodeTest(); | |
15677 runJUnitTest(__test, __test.test_finalNotInitialized_library_final); | |
15678 }); | |
15679 _ut.test('test_finalNotInitialized_local_final', () { | |
15680 final __test = new StaticWarningCodeTest(); | |
15681 runJUnitTest(__test, __test.test_finalNotInitialized_local_final); | |
15682 }); | |
15683 _ut.test('test_functionWithoutCall_direct', () { | |
15684 final __test = new StaticWarningCodeTest(); | |
15685 runJUnitTest(__test, __test.test_functionWithoutCall_direct); | |
15686 }); | |
15687 _ut.test('test_functionWithoutCall_indirect_extends', () { | |
15688 final __test = new StaticWarningCodeTest(); | |
15689 runJUnitTest(__test, __test.test_functionWithoutCall_indirect_extends); | |
15690 }); | |
15691 _ut.test('test_functionWithoutCall_indirect_implements', () { | |
15692 final __test = new StaticWarningCodeTest(); | |
15693 runJUnitTest(__test, __test.test_functionWithoutCall_indirect_implements
); | |
15694 }); | |
15695 _ut.test('test_importDuplicatedLibraryName', () { | |
15696 final __test = new StaticWarningCodeTest(); | |
15697 runJUnitTest(__test, __test.test_importDuplicatedLibraryName); | |
15698 }); | |
15699 _ut.test('test_inconsistentMethodInheritanceGetterAndMethod', () { | |
15700 final __test = new StaticWarningCodeTest(); | |
15701 runJUnitTest(__test, __test.test_inconsistentMethodInheritanceGetterAndM
ethod); | |
15702 }); | |
15703 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_field', () { | |
15704 final __test = new StaticWarningCodeTest(); | |
15705 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_field); | |
15706 }); | |
15707 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_field2', ()
{ | |
15708 final __test = new StaticWarningCodeTest(); | |
15709 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_field2); | |
15710 }); | |
15711 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_getter', ()
{ | |
15712 final __test = new StaticWarningCodeTest(); | |
15713 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_getter); | |
15714 }); | |
15715 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_getter2', ()
{ | |
15716 final __test = new StaticWarningCodeTest(); | |
15717 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_getter2); | |
15718 }); | |
15719 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_method', ()
{ | |
15720 final __test = new StaticWarningCodeTest(); | |
15721 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_method); | |
15722 }); | |
15723 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_method2', ()
{ | |
15724 final __test = new StaticWarningCodeTest(); | |
15725 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_method2); | |
15726 }); | |
15727 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_setter', ()
{ | |
15728 final __test = new StaticWarningCodeTest(); | |
15729 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_setter); | |
15730 }); | |
15731 _ut.test('test_instanceMethodNameCollidesWithSuperclassStatic_setter2', ()
{ | |
15732 final __test = new StaticWarningCodeTest(); | |
15733 runJUnitTest(__test, __test.test_instanceMethodNameCollidesWithSuperclas
sStatic_setter2); | |
15734 }); | |
15735 _ut.test('test_invalidGetterOverrideReturnType', () { | |
15736 final __test = new StaticWarningCodeTest(); | |
15737 runJUnitTest(__test, __test.test_invalidGetterOverrideReturnType); | |
15738 }); | |
15739 _ut.test('test_invalidGetterOverrideReturnType_implicit', () { | |
15740 final __test = new StaticWarningCodeTest(); | |
15741 runJUnitTest(__test, __test.test_invalidGetterOverrideReturnType_implici
t); | |
15742 }); | |
15743 _ut.test('test_invalidMethodOverrideNamedParamType', () { | |
15744 final __test = new StaticWarningCodeTest(); | |
15745 runJUnitTest(__test, __test.test_invalidMethodOverrideNamedParamType); | |
15746 }); | |
15747 _ut.test('test_invalidMethodOverrideNormalParamType', () { | |
15748 final __test = new StaticWarningCodeTest(); | |
15749 runJUnitTest(__test, __test.test_invalidMethodOverrideNormalParamType); | |
15750 }); | |
15751 _ut.test('test_invalidMethodOverrideOptionalParamType', () { | |
15752 final __test = new StaticWarningCodeTest(); | |
15753 runJUnitTest(__test, __test.test_invalidMethodOverrideOptionalParamType)
; | |
15754 }); | |
15755 _ut.test('test_invalidMethodOverrideReturnType_interface', () { | |
15756 final __test = new StaticWarningCodeTest(); | |
15757 runJUnitTest(__test, __test.test_invalidMethodOverrideReturnType_interfa
ce); | |
15758 }); | |
15759 _ut.test('test_invalidMethodOverrideReturnType_interface2', () { | |
15760 final __test = new StaticWarningCodeTest(); | |
15761 runJUnitTest(__test, __test.test_invalidMethodOverrideReturnType_interfa
ce2); | |
15762 }); | |
15763 _ut.test('test_invalidMethodOverrideReturnType_mixin', () { | |
15764 final __test = new StaticWarningCodeTest(); | |
15765 runJUnitTest(__test, __test.test_invalidMethodOverrideReturnType_mixin); | |
15766 }); | |
15767 _ut.test('test_invalidMethodOverrideReturnType_superclass', () { | |
15768 final __test = new StaticWarningCodeTest(); | |
15769 runJUnitTest(__test, __test.test_invalidMethodOverrideReturnType_supercl
ass); | |
15770 }); | |
15771 _ut.test('test_invalidMethodOverrideReturnType_superclass2', () { | |
15772 final __test = new StaticWarningCodeTest(); | |
15773 runJUnitTest(__test, __test.test_invalidMethodOverrideReturnType_supercl
ass2); | |
15774 }); | |
15775 _ut.test('test_invalidMethodOverrideReturnType_void', () { | |
15776 final __test = new StaticWarningCodeTest(); | |
15777 runJUnitTest(__test, __test.test_invalidMethodOverrideReturnType_void); | |
15778 }); | |
15779 _ut.test('test_invalidOverrideDifferentDefaultValues_named', () { | |
15780 final __test = new StaticWarningCodeTest(); | |
15781 runJUnitTest(__test, __test.test_invalidOverrideDifferentDefaultValues_n
amed); | |
15782 }); | |
15783 _ut.test('test_invalidOverrideDifferentDefaultValues_positional', () { | |
15784 final __test = new StaticWarningCodeTest(); | |
15785 runJUnitTest(__test, __test.test_invalidOverrideDifferentDefaultValues_p
ositional); | |
15786 }); | |
15787 _ut.test('test_invalidOverrideNamed_fewerNamedParameters', () { | |
15788 final __test = new StaticWarningCodeTest(); | |
15789 runJUnitTest(__test, __test.test_invalidOverrideNamed_fewerNamedParamete
rs); | |
15790 }); | |
15791 _ut.test('test_invalidOverrideNamed_missingNamedParameter', () { | |
15792 final __test = new StaticWarningCodeTest(); | |
15793 runJUnitTest(__test, __test.test_invalidOverrideNamed_missingNamedParame
ter); | |
15794 }); | |
15795 _ut.test('test_invalidOverridePositional_optional', () { | |
15796 final __test = new StaticWarningCodeTest(); | |
15797 runJUnitTest(__test, __test.test_invalidOverridePositional_optional); | |
15798 }); | |
15799 _ut.test('test_invalidOverridePositional_optionalAndRequired', () { | |
15800 final __test = new StaticWarningCodeTest(); | |
15801 runJUnitTest(__test, __test.test_invalidOverridePositional_optionalAndRe
quired); | |
15802 }); | |
15803 _ut.test('test_invalidOverridePositional_optionalAndRequired2', () { | |
15804 final __test = new StaticWarningCodeTest(); | |
15805 runJUnitTest(__test, __test.test_invalidOverridePositional_optionalAndRe
quired2); | |
15806 }); | |
15807 _ut.test('test_invalidOverrideRequired', () { | |
15808 final __test = new StaticWarningCodeTest(); | |
15809 runJUnitTest(__test, __test.test_invalidOverrideRequired); | |
15810 }); | |
15811 _ut.test('test_invalidSetterOverrideNormalParamType', () { | |
15812 final __test = new StaticWarningCodeTest(); | |
15813 runJUnitTest(__test, __test.test_invalidSetterOverrideNormalParamType); | |
15814 }); | |
15815 _ut.test('test_listElementTypeNotAssignable', () { | |
15816 final __test = new StaticWarningCodeTest(); | |
15817 runJUnitTest(__test, __test.test_listElementTypeNotAssignable); | |
15818 }); | |
15819 _ut.test('test_mapKeyTypeNotAssignable', () { | |
15820 final __test = new StaticWarningCodeTest(); | |
15821 runJUnitTest(__test, __test.test_mapKeyTypeNotAssignable); | |
15822 }); | |
15823 _ut.test('test_mapValueTypeNotAssignable', () { | |
15824 final __test = new StaticWarningCodeTest(); | |
15825 runJUnitTest(__test, __test.test_mapValueTypeNotAssignable); | |
15826 }); | |
15827 _ut.test('test_mismatchedAccessorTypes_class', () { | |
15828 final __test = new StaticWarningCodeTest(); | |
15829 runJUnitTest(__test, __test.test_mismatchedAccessorTypes_class); | |
15830 }); | |
15831 _ut.test('test_mismatchedAccessorTypes_getterAndSuperSetter', () { | |
15832 final __test = new StaticWarningCodeTest(); | |
15833 runJUnitTest(__test, __test.test_mismatchedAccessorTypes_getterAndSuperS
etter); | |
15834 }); | |
15835 _ut.test('test_mismatchedAccessorTypes_setterAndSuperGetter', () { | |
15836 final __test = new StaticWarningCodeTest(); | |
15837 runJUnitTest(__test, __test.test_mismatchedAccessorTypes_setterAndSuperG
etter); | |
15838 }); | |
15839 _ut.test('test_mismatchedAccessorTypes_topLevel', () { | |
15840 final __test = new StaticWarningCodeTest(); | |
15841 runJUnitTest(__test, __test.test_mismatchedAccessorTypes_topLevel); | |
15842 }); | |
15843 _ut.test('test_mixedReturnTypes_localFunction', () { | |
15844 final __test = new StaticWarningCodeTest(); | |
15845 runJUnitTest(__test, __test.test_mixedReturnTypes_localFunction); | |
15846 }); | |
15847 _ut.test('test_mixedReturnTypes_method', () { | |
15848 final __test = new StaticWarningCodeTest(); | |
15849 runJUnitTest(__test, __test.test_mixedReturnTypes_method); | |
15850 }); | |
15851 _ut.test('test_mixedReturnTypes_topLevelFunction', () { | |
15852 final __test = new StaticWarningCodeTest(); | |
15853 runJUnitTest(__test, __test.test_mixedReturnTypes_topLevelFunction); | |
15854 }); | |
15855 _ut.test('test_newWithAbstractClass', () { | |
15856 final __test = new StaticWarningCodeTest(); | |
15857 runJUnitTest(__test, __test.test_newWithAbstractClass); | |
15858 }); | |
15859 _ut.test('test_newWithInvalidTypeParameters', () { | |
15860 final __test = new StaticWarningCodeTest(); | |
15861 runJUnitTest(__test, __test.test_newWithInvalidTypeParameters); | |
15862 }); | |
15863 _ut.test('test_newWithInvalidTypeParameters_tooFew', () { | |
15864 final __test = new StaticWarningCodeTest(); | |
15865 runJUnitTest(__test, __test.test_newWithInvalidTypeParameters_tooFew); | |
15866 }); | |
15867 _ut.test('test_newWithInvalidTypeParameters_tooMany', () { | |
15868 final __test = new StaticWarningCodeTest(); | |
15869 runJUnitTest(__test, __test.test_newWithInvalidTypeParameters_tooMany); | |
15870 }); | |
15871 _ut.test('test_newWithNonType', () { | |
15872 final __test = new StaticWarningCodeTest(); | |
15873 runJUnitTest(__test, __test.test_newWithNonType); | |
15874 }); | |
15875 _ut.test('test_newWithNonType_fromLibrary', () { | |
15876 final __test = new StaticWarningCodeTest(); | |
15877 runJUnitTest(__test, __test.test_newWithNonType_fromLibrary); | |
15878 }); | |
15879 _ut.test('test_newWithUndefinedConstructor', () { | |
15880 final __test = new StaticWarningCodeTest(); | |
15881 runJUnitTest(__test, __test.test_newWithUndefinedConstructor); | |
15882 }); | |
15883 _ut.test('test_newWithUndefinedConstructorDefault', () { | |
15884 final __test = new StaticWarningCodeTest(); | |
15885 runJUnitTest(__test, __test.test_newWithUndefinedConstructorDefault); | |
15886 }); | |
15887 _ut.test('test_nonAbstractClassInheritsAbstractMemberFivePlus', () { | |
15888 final __test = new StaticWarningCodeTest(); | |
15889 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberF
ivePlus); | |
15890 }); | |
15891 _ut.test('test_nonAbstractClassInheritsAbstractMemberFour', () { | |
15892 final __test = new StaticWarningCodeTest(); | |
15893 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberF
our); | |
15894 }); | |
15895 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterf
ace', () { | |
15896 final __test = new StaticWarningCodeTest(); | |
15897 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_getter_fromInterface); | |
15898 }); | |
15899 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_getter_fromSuperc
lass', () { | |
15900 final __test = new StaticWarningCodeTest(); | |
15901 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_getter_fromSuperclass); | |
15902 }); | |
15903 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_method_fromInterf
ace', () { | |
15904 final __test = new StaticWarningCodeTest(); | |
15905 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_method_fromInterface); | |
15906 }); | |
15907 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_method_fromSuperc
lass', () { | |
15908 final __test = new StaticWarningCodeTest(); | |
15909 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_method_fromSuperclass); | |
15910 }); | |
15911 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_method_optionalPa
ramCount', () { | |
15912 final __test = new StaticWarningCodeTest(); | |
15913 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_method_optionalParamCount); | |
15914 }); | |
15915 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_setter_fromInterf
ace', () { | |
15916 final __test = new StaticWarningCodeTest(); | |
15917 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_setter_fromInterface); | |
15918 }); | |
15919 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_setter_fromSuperc
lass', () { | |
15920 final __test = new StaticWarningCodeTest(); | |
15921 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_setter_fromSuperclass); | |
15922 }); | |
15923 _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_superclasses_inte
rface', () { | |
15924 final __test = new StaticWarningCodeTest(); | |
15925 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberO
ne_superclasses_interface); | |
15926 }); | |
15927 _ut.test('test_nonAbstractClassInheritsAbstractMemberThree', () { | |
15928 final __test = new StaticWarningCodeTest(); | |
15929 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberT
hree); | |
15930 }); | |
15931 _ut.test('test_nonAbstractClassInheritsAbstractMemberTwo', () { | |
15932 final __test = new StaticWarningCodeTest(); | |
15933 runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberT
wo); | |
15934 }); | |
15935 _ut.test('test_nonTypeInCatchClause_noElement', () { | |
15936 final __test = new StaticWarningCodeTest(); | |
15937 runJUnitTest(__test, __test.test_nonTypeInCatchClause_noElement); | |
15938 }); | |
15939 _ut.test('test_nonTypeInCatchClause_notType', () { | |
15940 final __test = new StaticWarningCodeTest(); | |
15941 runJUnitTest(__test, __test.test_nonTypeInCatchClause_notType); | |
15942 }); | |
15943 _ut.test('test_nonVoidReturnForOperator', () { | |
15944 final __test = new StaticWarningCodeTest(); | |
15945 runJUnitTest(__test, __test.test_nonVoidReturnForOperator); | |
15946 }); | |
15947 _ut.test('test_nonVoidReturnForSetter_function', () { | |
15948 final __test = new StaticWarningCodeTest(); | |
15949 runJUnitTest(__test, __test.test_nonVoidReturnForSetter_function); | |
15950 }); | |
15951 _ut.test('test_nonVoidReturnForSetter_method', () { | |
15952 final __test = new StaticWarningCodeTest(); | |
15953 runJUnitTest(__test, __test.test_nonVoidReturnForSetter_method); | |
15954 }); | |
15955 _ut.test('test_notAType', () { | |
15956 final __test = new StaticWarningCodeTest(); | |
15957 runJUnitTest(__test, __test.test_notAType); | |
15958 }); | |
15959 _ut.test('test_notEnoughRequiredArguments', () { | |
15960 final __test = new StaticWarningCodeTest(); | |
15961 runJUnitTest(__test, __test.test_notEnoughRequiredArguments); | |
15962 }); | |
15963 _ut.test('test_partOfDifferentLibrary', () { | |
15964 final __test = new StaticWarningCodeTest(); | |
15965 runJUnitTest(__test, __test.test_partOfDifferentLibrary); | |
15966 }); | |
15967 _ut.test('test_redirectToInvalidFunctionType', () { | |
15968 final __test = new StaticWarningCodeTest(); | |
15969 runJUnitTest(__test, __test.test_redirectToInvalidFunctionType); | |
15970 }); | |
15971 _ut.test('test_redirectToInvalidReturnType', () { | |
15972 final __test = new StaticWarningCodeTest(); | |
15973 runJUnitTest(__test, __test.test_redirectToInvalidReturnType); | |
15974 }); | |
15975 _ut.test('test_redirectToMissingConstructor_named', () { | |
15976 final __test = new StaticWarningCodeTest(); | |
15977 runJUnitTest(__test, __test.test_redirectToMissingConstructor_named); | |
15978 }); | |
15979 _ut.test('test_redirectToMissingConstructor_unnamed', () { | |
15980 final __test = new StaticWarningCodeTest(); | |
15981 runJUnitTest(__test, __test.test_redirectToMissingConstructor_unnamed); | |
15982 }); | |
15983 _ut.test('test_redirectToNonClass_notAType', () { | |
15984 final __test = new StaticWarningCodeTest(); | |
15985 runJUnitTest(__test, __test.test_redirectToNonClass_notAType); | |
15986 }); | |
15987 _ut.test('test_redirectToNonClass_undefinedIdentifier', () { | |
15988 final __test = new StaticWarningCodeTest(); | |
15989 runJUnitTest(__test, __test.test_redirectToNonClass_undefinedIdentifier)
; | |
15990 }); | |
15991 _ut.test('test_returnWithoutValue', () { | |
15992 final __test = new StaticWarningCodeTest(); | |
15993 runJUnitTest(__test, __test.test_returnWithoutValue); | |
15994 }); | |
15995 _ut.test('test_staticAccessToInstanceMember_method_invocation', () { | |
15996 final __test = new StaticWarningCodeTest(); | |
15997 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_method_inv
ocation); | |
15998 }); | |
15999 _ut.test('test_staticAccessToInstanceMember_method_reference', () { | |
16000 final __test = new StaticWarningCodeTest(); | |
16001 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_method_ref
erence); | |
16002 }); | |
16003 _ut.test('test_staticAccessToInstanceMember_propertyAccess_field', () { | |
16004 final __test = new StaticWarningCodeTest(); | |
16005 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_propertyAc
cess_field); | |
16006 }); | |
16007 _ut.test('test_staticAccessToInstanceMember_propertyAccess_getter', () { | |
16008 final __test = new StaticWarningCodeTest(); | |
16009 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_propertyAc
cess_getter); | |
16010 }); | |
16011 _ut.test('test_staticAccessToInstanceMember_propertyAccess_setter', () { | |
16012 final __test = new StaticWarningCodeTest(); | |
16013 runJUnitTest(__test, __test.test_staticAccessToInstanceMember_propertyAc
cess_setter); | |
16014 }); | |
16015 _ut.test('test_switchExpressionNotAssignable', () { | |
16016 final __test = new StaticWarningCodeTest(); | |
16017 runJUnitTest(__test, __test.test_switchExpressionNotAssignable); | |
16018 }); | |
16019 _ut.test('test_typeParameterReferencedByStatic_field', () { | |
16020 final __test = new StaticWarningCodeTest(); | |
16021 runJUnitTest(__test, __test.test_typeParameterReferencedByStatic_field); | |
16022 }); | |
16023 _ut.test('test_typeParameterReferencedByStatic_getter', () { | |
16024 final __test = new StaticWarningCodeTest(); | |
16025 runJUnitTest(__test, __test.test_typeParameterReferencedByStatic_getter)
; | |
16026 }); | |
16027 _ut.test('test_typeParameterReferencedByStatic_methodBodyReference', () { | |
16028 final __test = new StaticWarningCodeTest(); | |
16029 runJUnitTest(__test, __test.test_typeParameterReferencedByStatic_methodB
odyReference); | |
16030 }); | |
16031 _ut.test('test_typeParameterReferencedByStatic_methodParameter', () { | |
16032 final __test = new StaticWarningCodeTest(); | |
16033 runJUnitTest(__test, __test.test_typeParameterReferencedByStatic_methodP
arameter); | |
16034 }); | |
16035 _ut.test('test_typeParameterReferencedByStatic_methodReturn', () { | |
16036 final __test = new StaticWarningCodeTest(); | |
16037 runJUnitTest(__test, __test.test_typeParameterReferencedByStatic_methodR
eturn); | |
16038 }); | |
16039 _ut.test('test_typeParameterReferencedByStatic_setter', () { | |
16040 final __test = new StaticWarningCodeTest(); | |
16041 runJUnitTest(__test, __test.test_typeParameterReferencedByStatic_setter)
; | |
16042 }); | |
16043 _ut.test('test_typePromotion_functionType_arg_InterToDyn', () { | |
16044 final __test = new StaticWarningCodeTest(); | |
16045 runJUnitTest(__test, __test.test_typePromotion_functionType_arg_InterToD
yn); | |
16046 }); | |
16047 _ut.test('test_typeTestNonType', () { | |
16048 final __test = new StaticWarningCodeTest(); | |
16049 runJUnitTest(__test, __test.test_typeTestNonType); | |
16050 }); | |
16051 _ut.test('test_undefinedClassBoolean_variableDeclaration', () { | |
16052 final __test = new StaticWarningCodeTest(); | |
16053 runJUnitTest(__test, __test.test_undefinedClassBoolean_variableDeclarati
on); | |
16054 }); | |
16055 _ut.test('test_undefinedClass_instanceCreation', () { | |
16056 final __test = new StaticWarningCodeTest(); | |
16057 runJUnitTest(__test, __test.test_undefinedClass_instanceCreation); | |
16058 }); | |
16059 _ut.test('test_undefinedClass_variableDeclaration', () { | |
16060 final __test = new StaticWarningCodeTest(); | |
16061 runJUnitTest(__test, __test.test_undefinedClass_variableDeclaration); | |
16062 }); | |
16063 _ut.test('test_undefinedGetter_fromLibrary', () { | |
16064 final __test = new StaticWarningCodeTest(); | |
16065 runJUnitTest(__test, __test.test_undefinedGetter_fromLibrary); | |
16066 }); | |
16067 _ut.test('test_undefinedIdentifier_for', () { | |
16068 final __test = new StaticWarningCodeTest(); | |
16069 runJUnitTest(__test, __test.test_undefinedIdentifier_for); | |
16070 }); | |
16071 _ut.test('test_undefinedIdentifier_function', () { | |
16072 final __test = new StaticWarningCodeTest(); | |
16073 runJUnitTest(__test, __test.test_undefinedIdentifier_function); | |
16074 }); | |
16075 _ut.test('test_undefinedIdentifier_function_prefix', () { | |
16076 final __test = new StaticWarningCodeTest(); | |
16077 runJUnitTest(__test, __test.test_undefinedIdentifier_function_prefix); | |
16078 }); | |
16079 _ut.test('test_undefinedIdentifier_initializer', () { | |
16080 final __test = new StaticWarningCodeTest(); | |
16081 runJUnitTest(__test, __test.test_undefinedIdentifier_initializer); | |
16082 }); | |
16083 _ut.test('test_undefinedIdentifier_initializer_prefix', () { | |
16084 final __test = new StaticWarningCodeTest(); | |
16085 runJUnitTest(__test, __test.test_undefinedIdentifier_initializer_prefix)
; | |
16086 }); | |
16087 _ut.test('test_undefinedIdentifier_metadata', () { | |
16088 final __test = new StaticWarningCodeTest(); | |
16089 runJUnitTest(__test, __test.test_undefinedIdentifier_metadata); | |
16090 }); | |
16091 _ut.test('test_undefinedIdentifier_methodInvocation', () { | |
16092 final __test = new StaticWarningCodeTest(); | |
16093 runJUnitTest(__test, __test.test_undefinedIdentifier_methodInvocation); | |
16094 }); | |
16095 _ut.test('test_undefinedIdentifier_private_getter', () { | |
16096 final __test = new StaticWarningCodeTest(); | |
16097 runJUnitTest(__test, __test.test_undefinedIdentifier_private_getter); | |
16098 }); | |
16099 _ut.test('test_undefinedIdentifier_private_setter', () { | |
16100 final __test = new StaticWarningCodeTest(); | |
16101 runJUnitTest(__test, __test.test_undefinedIdentifier_private_setter); | |
16102 }); | |
16103 _ut.test('test_undefinedNamedParameter', () { | |
16104 final __test = new StaticWarningCodeTest(); | |
16105 runJUnitTest(__test, __test.test_undefinedNamedParameter); | |
16106 }); | |
16107 _ut.test('test_undefinedSetter', () { | |
16108 final __test = new StaticWarningCodeTest(); | |
16109 runJUnitTest(__test, __test.test_undefinedSetter); | |
16110 }); | |
16111 }); | |
16112 } | |
16113 } | |
16114 class ErrorResolverTest extends ResolverTestCase { | |
16115 void test_breakLabelOnSwitchMember() { | |
16116 Source source = addSource(EngineTestCase.createSource([ | |
16117 "class A {", | |
16118 " void m(int i) {", | |
16119 " switch (i) {", | |
16120 " l: case 0:", | |
16121 " break;", | |
16122 " case 1:", | |
16123 " break l;", | |
16124 " }", | |
16125 " }", | |
16126 "}"])); | |
16127 resolve(source); | |
16128 assertErrors(source, [ResolverErrorCode.BREAK_LABEL_ON_SWITCH_MEMBER]); | |
16129 verify([source]); | |
16130 } | |
16131 void test_continueLabelOnSwitch() { | |
16132 Source source = addSource(EngineTestCase.createSource([ | |
16133 "class A {", | |
16134 " void m(int i) {", | |
16135 " l: switch (i) {", | |
16136 " case 0:", | |
16137 " continue l;", | |
16138 " }", | |
16139 " }", | |
16140 "}"])); | |
16141 resolve(source); | |
16142 assertErrors(source, [ResolverErrorCode.CONTINUE_LABEL_ON_SWITCH]); | |
16143 verify([source]); | |
16144 } | |
16145 static dartSuite() { | |
16146 _ut.group('ErrorResolverTest', () { | |
16147 _ut.test('test_breakLabelOnSwitchMember', () { | |
16148 final __test = new ErrorResolverTest(); | |
16149 runJUnitTest(__test, __test.test_breakLabelOnSwitchMember); | |
16150 }); | |
16151 _ut.test('test_continueLabelOnSwitch', () { | |
16152 final __test = new ErrorResolverTest(); | |
16153 runJUnitTest(__test, __test.test_continueLabelOnSwitch); | |
16154 }); | |
16155 }); | |
16156 } | |
16157 } | |
16158 /** | |
16159 * Instances of the class `TestTypeProvider` implement a type provider that can
be used by | |
16160 * tests without creating the element model for the core library. | |
16161 */ | |
16162 class TestTypeProvider implements TypeProvider { | |
16163 | |
16164 /** | |
16165 * The type representing the built-in type 'bool'. | |
16166 */ | |
16167 InterfaceType _boolType; | |
16168 | |
16169 /** | |
16170 * The type representing the type 'bottom'. | |
16171 */ | |
16172 Type2 _bottomType; | |
16173 | |
16174 /** | |
16175 * The type representing the built-in type 'double'. | |
16176 */ | |
16177 InterfaceType _doubleType; | |
16178 | |
16179 /** | |
16180 * The type representing the built-in type 'dynamic'. | |
16181 */ | |
16182 Type2 _dynamicType; | |
16183 | |
16184 /** | |
16185 * The type representing the built-in type 'Function'. | |
16186 */ | |
16187 InterfaceType _functionType; | |
16188 | |
16189 /** | |
16190 * The type representing the built-in type 'int'. | |
16191 */ | |
16192 InterfaceType _intType; | |
16193 | |
16194 /** | |
16195 * The type representing the built-in type 'Iterable'. | |
16196 */ | |
16197 InterfaceType _iterableType; | |
16198 | |
16199 /** | |
16200 * The type representing the built-in type 'Iterator'. | |
16201 */ | |
16202 InterfaceType _iteratorType; | |
16203 | |
16204 /** | |
16205 * The type representing the built-in type 'List'. | |
16206 */ | |
16207 InterfaceType _listType; | |
16208 | |
16209 /** | |
16210 * The type representing the built-in type 'Map'. | |
16211 */ | |
16212 InterfaceType _mapType; | |
16213 | |
16214 /** | |
16215 * The type representing the built-in type 'Null'. | |
16216 */ | |
16217 InterfaceType _nullType; | |
16218 | |
16219 /** | |
16220 * The type representing the built-in type 'num'. | |
16221 */ | |
16222 InterfaceType _numType; | |
16223 | |
16224 /** | |
16225 * The type representing the built-in type 'Object'. | |
16226 */ | |
16227 InterfaceType _objectType; | |
16228 | |
16229 /** | |
16230 * The type representing the built-in type 'StackTrace'. | |
16231 */ | |
16232 InterfaceType _stackTraceType; | |
16233 | |
16234 /** | |
16235 * The type representing the built-in type 'String'. | |
16236 */ | |
16237 InterfaceType _stringType; | |
16238 | |
16239 /** | |
16240 * The type representing the built-in type 'Symbol'. | |
16241 */ | |
16242 InterfaceType _symbolType; | |
16243 | |
16244 /** | |
16245 * The type representing the built-in type 'Type'. | |
16246 */ | |
16247 InterfaceType _typeType; | |
16248 InterfaceType get boolType { | |
16249 if (_boolType == null) { | |
16250 _boolType = ElementFactory.classElement2("bool", []).type; | |
16251 } | |
16252 return _boolType; | |
16253 } | |
16254 Type2 get bottomType { | |
16255 if (_bottomType == null) { | |
16256 _bottomType = BottomTypeImpl.instance; | |
16257 } | |
16258 return _bottomType; | |
16259 } | |
16260 InterfaceType get doubleType { | |
16261 if (_doubleType == null) { | |
16262 initializeNumericTypes(); | |
16263 } | |
16264 return _doubleType; | |
16265 } | |
16266 Type2 get dynamicType { | |
16267 if (_dynamicType == null) { | |
16268 _dynamicType = DynamicTypeImpl.instance; | |
16269 } | |
16270 return _dynamicType; | |
16271 } | |
16272 InterfaceType get functionType { | |
16273 if (_functionType == null) { | |
16274 _functionType = ElementFactory.classElement2("Function", []).type; | |
16275 } | |
16276 return _functionType; | |
16277 } | |
16278 InterfaceType get intType { | |
16279 if (_intType == null) { | |
16280 initializeNumericTypes(); | |
16281 } | |
16282 return _intType; | |
16283 } | |
16284 InterfaceType get iterableType { | |
16285 if (_iterableType == null) { | |
16286 ClassElementImpl iterableElement = ElementFactory.classElement2("Iterable"
, ["E"]); | |
16287 _iterableType = iterableElement.type; | |
16288 Type2 eType = iterableElement.typeParameters[0].type; | |
16289 iterableElement.accessors = <PropertyAccessorElement> [ | |
16290 ElementFactory.getterElement("iterator", false, iteratorType.substitut
e4(<Type2> [eType])), | |
16291 ElementFactory.getterElement("last", false, eType)]; | |
16292 propagateTypeArguments(iterableElement); | |
16293 } | |
16294 return _iterableType; | |
16295 } | |
16296 InterfaceType get iteratorType { | |
16297 if (_iteratorType == null) { | |
16298 ClassElementImpl iteratorElement = ElementFactory.classElement2("Iterator"
, ["E"]); | |
16299 _iteratorType = iteratorElement.type; | |
16300 Type2 eType = iteratorElement.typeParameters[0].type; | |
16301 iteratorElement.accessors = <PropertyAccessorElement> [ElementFactory.gett
erElement("current", false, eType)]; | |
16302 propagateTypeArguments(iteratorElement); | |
16303 } | |
16304 return _iteratorType; | |
16305 } | |
16306 InterfaceType get listType { | |
16307 if (_listType == null) { | |
16308 ClassElementImpl listElement = ElementFactory.classElement2("List", ["E"])
; | |
16309 listElement.constructors = <ConstructorElement> [ElementFactory.constructo
rElement(listElement, null)]; | |
16310 _listType = listElement.type; | |
16311 Type2 eType = listElement.typeParameters[0].type; | |
16312 InterfaceType iterableType = this.iterableType.substitute4(<Type2> [eType]
); | |
16313 listElement.interfaces = <InterfaceType> [iterableType]; | |
16314 listElement.accessors = <PropertyAccessorElement> [ElementFactory.getterEl
ement("length", false, intType)]; | |
16315 listElement.methods = <MethodElement> [ | |
16316 ElementFactory.methodElement("[]", eType, [intType]), | |
16317 ElementFactory.methodElement("[]=", VoidTypeImpl.instance, [intType, e
Type]), | |
16318 ElementFactory.methodElement("add", VoidTypeImpl.instance, [eType])]; | |
16319 propagateTypeArguments(listElement); | |
16320 } | |
16321 return _listType; | |
16322 } | |
16323 InterfaceType get mapType { | |
16324 if (_mapType == null) { | |
16325 ClassElementImpl mapElement = ElementFactory.classElement2("Map", ["K", "V
"]); | |
16326 _mapType = mapElement.type; | |
16327 mapElement.accessors = <PropertyAccessorElement> [ElementFactory.getterEle
ment("length", false, intType)]; | |
16328 propagateTypeArguments(mapElement); | |
16329 } | |
16330 return _mapType; | |
16331 } | |
16332 InterfaceType get nullType { | |
16333 if (_nullType == null) { | |
16334 _nullType = ElementFactory.classElement2("Null", []).type; | |
16335 } | |
16336 return _nullType; | |
16337 } | |
16338 InterfaceType get numType { | |
16339 if (_numType == null) { | |
16340 initializeNumericTypes(); | |
16341 } | |
16342 return _numType; | |
16343 } | |
16344 InterfaceType get objectType { | |
16345 if (_objectType == null) { | |
16346 ClassElementImpl objectElement = ElementFactory.object; | |
16347 _objectType = objectElement.type; | |
16348 objectElement.constructors = <ConstructorElement> [ElementFactory.construc
torElement(objectElement, null)]; | |
16349 objectElement.methods = <MethodElement> [ | |
16350 ElementFactory.methodElement("toString", stringType, []), | |
16351 ElementFactory.methodElement("==", boolType, [_objectType]), | |
16352 ElementFactory.methodElement("noSuchMethod", dynamicType, [dynamicType
])]; | |
16353 objectElement.accessors = <PropertyAccessorElement> [ | |
16354 ElementFactory.getterElement("hashCode", false, intType), | |
16355 ElementFactory.getterElement("runtimeType", false, typeType)]; | |
16356 } | |
16357 return _objectType; | |
16358 } | |
16359 InterfaceType get stackTraceType { | |
16360 if (_stackTraceType == null) { | |
16361 _stackTraceType = ElementFactory.classElement2("StackTrace", []).type; | |
16362 } | |
16363 return _stackTraceType; | |
16364 } | |
16365 InterfaceType get stringType { | |
16366 if (_stringType == null) { | |
16367 _stringType = ElementFactory.classElement2("String", []).type; | |
16368 ClassElementImpl stringElement = _stringType.element as ClassElementImpl; | |
16369 stringElement.accessors = <PropertyAccessorElement> [ | |
16370 ElementFactory.getterElement("isEmpty", false, boolType), | |
16371 ElementFactory.getterElement("length", false, intType), | |
16372 ElementFactory.getterElement("codeUnits", false, listType.substitute4(
<Type2> [intType]))]; | |
16373 stringElement.methods = <MethodElement> [ | |
16374 ElementFactory.methodElement("+", _stringType, [_stringType]), | |
16375 ElementFactory.methodElement("toLowerCase", _stringType, []), | |
16376 ElementFactory.methodElement("toUpperCase", _stringType, [])]; | |
16377 } | |
16378 return _stringType; | |
16379 } | |
16380 InterfaceType get symbolType { | |
16381 if (_symbolType == null) { | |
16382 _symbolType = ElementFactory.classElement2("Symbol", []).type; | |
16383 } | |
16384 return _symbolType; | |
16385 } | |
16386 InterfaceType get typeType { | |
16387 if (_typeType == null) { | |
16388 _typeType = ElementFactory.classElement2("Type", []).type; | |
16389 } | |
16390 return _typeType; | |
16391 } | |
16392 | |
16393 /** | |
16394 * Initialize the numeric types. They are created as a group so that we can (a
) create the right | |
16395 * hierarchy and (b) add members to them. | |
16396 */ | |
16397 void initializeNumericTypes() { | |
16398 ClassElementImpl numElement = ElementFactory.classElement2("num", []); | |
16399 _numType = numElement.type; | |
16400 ClassElementImpl intElement = ElementFactory.classElement("int", _numType, [
]); | |
16401 _intType = intElement.type; | |
16402 ClassElementImpl doubleElement = ElementFactory.classElement("double", _numT
ype, []); | |
16403 _doubleType = doubleElement.type; | |
16404 boolType; | |
16405 stringType; | |
16406 numElement.methods = <MethodElement> [ | |
16407 ElementFactory.methodElement("+", _numType, [_numType]), | |
16408 ElementFactory.methodElement("-", _numType, [_numType]), | |
16409 ElementFactory.methodElement("*", _numType, [_numType]), | |
16410 ElementFactory.methodElement("%", _numType, [_numType]), | |
16411 ElementFactory.methodElement("/", _doubleType, [_numType]), | |
16412 ElementFactory.methodElement("~/", _numType, [_numType]), | |
16413 ElementFactory.methodElement("-", _numType, []), | |
16414 ElementFactory.methodElement("remainder", _numType, [_numType]), | |
16415 ElementFactory.methodElement("<", _boolType, [_numType]), | |
16416 ElementFactory.methodElement("<=", _boolType, [_numType]), | |
16417 ElementFactory.methodElement(">", _boolType, [_numType]), | |
16418 ElementFactory.methodElement(">=", _boolType, [_numType]), | |
16419 ElementFactory.methodElement("isNaN", _boolType, []), | |
16420 ElementFactory.methodElement("isNegative", _boolType, []), | |
16421 ElementFactory.methodElement("isInfinite", _boolType, []), | |
16422 ElementFactory.methodElement("abs", _numType, []), | |
16423 ElementFactory.methodElement("floor", _numType, []), | |
16424 ElementFactory.methodElement("ceil", _numType, []), | |
16425 ElementFactory.methodElement("round", _numType, []), | |
16426 ElementFactory.methodElement("truncate", _numType, []), | |
16427 ElementFactory.methodElement("toInt", _intType, []), | |
16428 ElementFactory.methodElement("toDouble", _doubleType, []), | |
16429 ElementFactory.methodElement("toStringAsFixed", _stringType, [_intType])
, | |
16430 ElementFactory.methodElement("toStringAsExponential", _stringType, [_int
Type]), | |
16431 ElementFactory.methodElement("toStringAsPrecision", _stringType, [_intTy
pe]), | |
16432 ElementFactory.methodElement("toRadixString", _stringType, [_intType])]; | |
16433 intElement.methods = <MethodElement> [ | |
16434 ElementFactory.methodElement("&", _intType, [_intType]), | |
16435 ElementFactory.methodElement("|", _intType, [_intType]), | |
16436 ElementFactory.methodElement("^", _intType, [_intType]), | |
16437 ElementFactory.methodElement("~", _intType, []), | |
16438 ElementFactory.methodElement("<<", _intType, [_intType]), | |
16439 ElementFactory.methodElement(">>", _intType, [_intType]), | |
16440 ElementFactory.methodElement("-", _intType, []), | |
16441 ElementFactory.methodElement("abs", _intType, []), | |
16442 ElementFactory.methodElement("round", _intType, []), | |
16443 ElementFactory.methodElement("floor", _intType, []), | |
16444 ElementFactory.methodElement("ceil", _intType, []), | |
16445 ElementFactory.methodElement("truncate", _intType, []), | |
16446 ElementFactory.methodElement("toString", _stringType, [])]; | |
16447 List<FieldElement> fields = <FieldElement> [ | |
16448 ElementFactory.fieldElement("NAN", true, false, true, _doubleType), | |
16449 ElementFactory.fieldElement("INFINITY", true, false, true, _doubleType), | |
16450 ElementFactory.fieldElement("NEGATIVE_INFINITY", true, false, true, _dou
bleType), | |
16451 ElementFactory.fieldElement("MIN_POSITIVE", true, false, true, _doubleTy
pe), | |
16452 ElementFactory.fieldElement("MAX_FINITE", true, false, true, _doubleType
)]; | |
16453 doubleElement.fields = fields; | |
16454 int fieldCount = fields.length; | |
16455 List<PropertyAccessorElement> accessors = new List<PropertyAccessorElement>(
fieldCount); | |
16456 for (int i = 0; i < fieldCount; i++) { | |
16457 accessors[i] = fields[i].getter; | |
16458 } | |
16459 doubleElement.accessors = accessors; | |
16460 doubleElement.methods = <MethodElement> [ | |
16461 ElementFactory.methodElement("remainder", _doubleType, [_numType]), | |
16462 ElementFactory.methodElement("+", _doubleType, [_numType]), | |
16463 ElementFactory.methodElement("-", _doubleType, [_numType]), | |
16464 ElementFactory.methodElement("*", _doubleType, [_numType]), | |
16465 ElementFactory.methodElement("%", _doubleType, [_numType]), | |
16466 ElementFactory.methodElement("/", _doubleType, [_numType]), | |
16467 ElementFactory.methodElement("~/", _doubleType, [_numType]), | |
16468 ElementFactory.methodElement("-", _doubleType, []), | |
16469 ElementFactory.methodElement("abs", _doubleType, []), | |
16470 ElementFactory.methodElement("round", _doubleType, []), | |
16471 ElementFactory.methodElement("floor", _doubleType, []), | |
16472 ElementFactory.methodElement("ceil", _doubleType, []), | |
16473 ElementFactory.methodElement("truncate", _doubleType, []), | |
16474 ElementFactory.methodElement("toString", _stringType, [])]; | |
16475 } | |
16476 | |
16477 /** | |
16478 * Given a class element representing a class with type parameters, propagate
those type | |
16479 * parameters to all of the accessors, methods and constructors defined for th
e class. | |
16480 * | |
16481 * @param classElement the element representing the class with type parameters | |
16482 */ | |
16483 void propagateTypeArguments(ClassElementImpl classElement) { | |
16484 List<Type2> typeArguments = TypeParameterTypeImpl.getTypes(classElement.type
Parameters); | |
16485 for (PropertyAccessorElement accessor in classElement.accessors) { | |
16486 FunctionTypeImpl functionType = accessor.type as FunctionTypeImpl; | |
16487 functionType.typeArguments = typeArguments; | |
16488 } | |
16489 for (MethodElement method in classElement.methods) { | |
16490 FunctionTypeImpl functionType = method.type as FunctionTypeImpl; | |
16491 functionType.typeArguments = typeArguments; | |
16492 } | |
16493 for (ConstructorElement constructor in classElement.constructors) { | |
16494 FunctionTypeImpl functionType = constructor.type as FunctionTypeImpl; | |
16495 functionType.typeArguments = typeArguments; | |
16496 } | |
16497 } | |
16498 } | |
16499 /** | |
16500 * The class `AnalysisContextFactory` defines utility methods used to create ana
lysis contexts | |
16501 * for testing purposes. | |
16502 */ | |
16503 class AnalysisContextFactory { | |
16504 | |
16505 /** | |
16506 * Create an analysis context that has a fake core library already resolved. | |
16507 * | |
16508 * @return the analysis context that was created | |
16509 */ | |
16510 static AnalysisContextImpl contextWithCore() { | |
16511 AnalysisContext sdkContext = DirectoryBasedDartSdk.defaultSdk.context; | |
16512 SourceFactory sourceFactory = sdkContext.sourceFactory; | |
16513 TestTypeProvider provider = new TestTypeProvider(); | |
16514 CompilationUnitElementImpl coreUnit = new CompilationUnitElementImpl("core.d
art"); | |
16515 Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE); | |
16516 sdkContext.setContents(coreSource, ""); | |
16517 coreUnit.source = coreSource; | |
16518 coreUnit.types = <ClassElement> [ | |
16519 provider.boolType.element, | |
16520 provider.doubleType.element, | |
16521 provider.functionType.element, | |
16522 provider.intType.element, | |
16523 provider.listType.element, | |
16524 provider.mapType.element, | |
16525 provider.nullType.element, | |
16526 provider.numType.element, | |
16527 provider.objectType.element, | |
16528 provider.stackTraceType.element, | |
16529 provider.stringType.element, | |
16530 provider.symbolType.element, | |
16531 provider.typeType.element]; | |
16532 coreUnit.functions = <FunctionElement> [ElementFactory.functionElement3("ide
ntical", provider.boolType.element, <ClassElement> [provider.objectType.element,
provider.objectType.element], null)]; | |
16533 LibraryElementImpl coreLibrary = new LibraryElementImpl(sdkContext, ASTFacto
ry.libraryIdentifier2(["dart", "core"])); | |
16534 coreLibrary.definingCompilationUnit = coreUnit; | |
16535 CompilationUnitElementImpl htmlUnit = new CompilationUnitElementImpl("html_d
artium.dart"); | |
16536 Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML); | |
16537 sdkContext.setContents(htmlSource, ""); | |
16538 htmlUnit.source = htmlSource; | |
16539 ClassElementImpl elementElement = ElementFactory.classElement2("Element", []
); | |
16540 InterfaceType elementType = elementElement.type; | |
16541 ClassElementImpl documentElement = ElementFactory.classElement("Document", e
lementType, []); | |
16542 ClassElementImpl htmlDocumentElement = ElementFactory.classElement("HtmlDocu
ment", documentElement.type, []); | |
16543 htmlDocumentElement.methods = <MethodElement> [ElementFactory.methodElement(
"query", elementType, <Type2> [provider.stringType])]; | |
16544 htmlUnit.types = <ClassElement> [ | |
16545 ElementFactory.classElement("AnchorElement", elementType, []), | |
16546 ElementFactory.classElement("BodyElement", elementType, []), | |
16547 ElementFactory.classElement("ButtonElement", elementType, []), | |
16548 ElementFactory.classElement("DivElement", elementType, []), | |
16549 documentElement, | |
16550 elementElement, | |
16551 htmlDocumentElement, | |
16552 ElementFactory.classElement("InputElement", elementType, []), | |
16553 ElementFactory.classElement("SelectElement", elementType, [])]; | |
16554 htmlUnit.functions = <FunctionElement> [ElementFactory.functionElement3("que
ry", elementElement, <ClassElement> [provider.stringType.element], ClassElementI
mpl.EMPTY_ARRAY)]; | |
16555 TopLevelVariableElementImpl document = ElementFactory.topLevelVariableElemen
t3("document", true, htmlDocumentElement.type); | |
16556 htmlUnit.topLevelVariables = <TopLevelVariableElement> [document]; | |
16557 htmlUnit.accessors = <PropertyAccessorElement> [document.getter]; | |
16558 LibraryElementImpl htmlLibrary = new LibraryElementImpl(sdkContext, ASTFacto
ry.libraryIdentifier2(["dart", "dom", "html"])); | |
16559 htmlLibrary.definingCompilationUnit = htmlUnit; | |
16560 Map<Source, LibraryElement> elementMap = new Map<Source, LibraryElement>(); | |
16561 elementMap[coreSource] = coreLibrary; | |
16562 elementMap[htmlSource] = htmlLibrary; | |
16563 ((sdkContext as AnalysisContextImpl)).recordLibraryElements(elementMap); | |
16564 AnalysisContextImpl context = new DelegatingAnalysisContextImpl(); | |
16565 sourceFactory = new SourceFactory.con2([ | |
16566 new DartUriResolver(sdkContext.sourceFactory.dartSdk), | |
16567 new FileUriResolver()]); | |
16568 context.sourceFactory = sourceFactory; | |
16569 return context; | |
16570 } | |
16571 } | |
16572 class LibraryImportScopeTest extends ResolverTestCase { | |
16573 void test_conflictingImports() { | |
16574 AnalysisContext context = new AnalysisContextImpl(); | |
16575 String typeNameA = "A"; | |
16576 String typeNameB = "B"; | |
16577 String typeNameC = "C"; | |
16578 ClassElement typeA = ElementFactory.classElement2(typeNameA, []); | |
16579 ClassElement typeB1 = ElementFactory.classElement2(typeNameB, []); | |
16580 ClassElement typeB2 = ElementFactory.classElement2(typeNameB, []); | |
16581 ClassElement typeC = ElementFactory.classElement2(typeNameC, []); | |
16582 LibraryElement importedLibrary1 = createTestLibrary2(context, "imported1", [
]); | |
16583 ((importedLibrary1.definingCompilationUnit as CompilationUnitElementImpl)).t
ypes = <ClassElement> [typeA, typeB1]; | |
16584 ImportElementImpl import1 = ElementFactory.importFor(importedLibrary1, null,
[]); | |
16585 LibraryElement importedLibrary2 = createTestLibrary2(context, "imported2", [
]); | |
16586 ((importedLibrary2.definingCompilationUnit as CompilationUnitElementImpl)).t
ypes = <ClassElement> [typeB2, typeC]; | |
16587 ImportElementImpl import2 = ElementFactory.importFor(importedLibrary2, null,
[]); | |
16588 LibraryElementImpl importingLibrary = createTestLibrary2(context, "importing
", []); | |
16589 importingLibrary.imports = <ImportElement> [import1, import2]; | |
16590 { | |
16591 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16592 Scope scope = new LibraryImportScope(importingLibrary, errorListener); | |
16593 JUnitTestCase.assertEquals(typeA, scope.lookup(ASTFactory.identifier3(type
NameA), importingLibrary)); | |
16594 errorListener.assertNoErrors(); | |
16595 JUnitTestCase.assertEquals(typeC, scope.lookup(ASTFactory.identifier3(type
NameC), importingLibrary)); | |
16596 errorListener.assertNoErrors(); | |
16597 Element element = scope.lookup(ASTFactory.identifier3(typeNameB), importin
gLibrary); | |
16598 errorListener.assertErrors2([StaticWarningCode.AMBIGUOUS_IMPORT]); | |
16599 EngineTestCase.assertInstanceOf(MultiplyDefinedElement, element); | |
16600 List<Element> conflictingElements = ((element as MultiplyDefinedElement)).
conflictingElements; | |
16601 EngineTestCase.assertLength(2, conflictingElements); | |
16602 if (identical(conflictingElements[0], typeB1)) { | |
16603 JUnitTestCase.assertSame(typeB2, conflictingElements[1]); | |
16604 } else if (identical(conflictingElements[0], typeB2)) { | |
16605 JUnitTestCase.assertSame(typeB1, conflictingElements[1]); | |
16606 } else { | |
16607 JUnitTestCase.assertSame(typeB1, conflictingElements[0]); | |
16608 } | |
16609 } | |
16610 { | |
16611 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16612 Scope scope = new LibraryImportScope(importingLibrary, errorListener); | |
16613 Identifier identifier = ASTFactory.identifier3(typeNameB); | |
16614 ASTFactory.methodDeclaration(null, ASTFactory.typeName3(identifier, []), n
ull, null, ASTFactory.identifier3("foo"), null); | |
16615 Element element = scope.lookup(identifier, importingLibrary); | |
16616 errorListener.assertErrors2([StaticWarningCode.AMBIGUOUS_IMPORT]); | |
16617 EngineTestCase.assertInstanceOf(MultiplyDefinedElement, element); | |
16618 } | |
16619 } | |
16620 void test_creation_empty() { | |
16621 LibraryElement definingLibrary = createTestLibrary(); | |
16622 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16623 new LibraryImportScope(definingLibrary, errorListener); | |
16624 } | |
16625 void test_creation_nonEmpty() { | |
16626 AnalysisContext context = new AnalysisContextImpl(); | |
16627 String importedTypeName = "A"; | |
16628 ClassElement importedType = new ClassElementImpl(ASTFactory.identifier3(impo
rtedTypeName)); | |
16629 LibraryElement importedLibrary = createTestLibrary2(context, "imported", [])
; | |
16630 ((importedLibrary.definingCompilationUnit as CompilationUnitElementImpl)).ty
pes = <ClassElement> [importedType]; | |
16631 LibraryElementImpl definingLibrary = createTestLibrary2(context, "importing"
, []); | |
16632 ImportElementImpl importElement = new ImportElementImpl(); | |
16633 importElement.importedLibrary = importedLibrary; | |
16634 definingLibrary.imports = <ImportElement> [importElement]; | |
16635 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16636 Scope scope = new LibraryImportScope(definingLibrary, errorListener); | |
16637 JUnitTestCase.assertEquals(importedType, scope.lookup(ASTFactory.identifier3
(importedTypeName), definingLibrary)); | |
16638 } | |
16639 void test_getDefiningLibrary() { | |
16640 LibraryElement definingLibrary = createTestLibrary(); | |
16641 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16642 LibraryImportScope scope = new LibraryImportScope(definingLibrary, errorList
ener); | |
16643 JUnitTestCase.assertEquals(definingLibrary, scope.definingLibrary); | |
16644 } | |
16645 void test_getErrorListener() { | |
16646 LibraryElement definingLibrary = createTestLibrary(); | |
16647 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16648 LibraryImportScope scope = new LibraryImportScope(definingLibrary, errorList
ener); | |
16649 JUnitTestCase.assertEquals(errorListener, scope.errorListener); | |
16650 } | |
16651 void test_nonConflictingImports_fromSdk() { | |
16652 AnalysisContext context = AnalysisContextFactory.contextWithCore(); | |
16653 String typeName = "List"; | |
16654 ClassElement type = ElementFactory.classElement2(typeName, []); | |
16655 LibraryElement importedLibrary = createTestLibrary2(context, "lib", []); | |
16656 ((importedLibrary.definingCompilationUnit as CompilationUnitElementImpl)).ty
pes = <ClassElement> [type]; | |
16657 ImportElementImpl importCore = ElementFactory.importFor(context.getLibraryEl
ement(context.sourceFactory.forUri("dart:core")), null, []); | |
16658 ImportElementImpl importLib = ElementFactory.importFor(importedLibrary, null
, []); | |
16659 LibraryElementImpl importingLibrary = createTestLibrary2(context, "importing
", []); | |
16660 importingLibrary.imports = <ImportElement> [importCore, importLib]; | |
16661 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16662 Scope scope = new LibraryImportScope(importingLibrary, errorListener); | |
16663 JUnitTestCase.assertEquals(type, scope.lookup(ASTFactory.identifier3(typeNam
e), importingLibrary)); | |
16664 errorListener.assertErrors2([StaticWarningCode.CONFLICTING_DART_IMPORT]); | |
16665 } | |
16666 void test_nonConflictingImports_sameElement() { | |
16667 AnalysisContext context = new AnalysisContextImpl(); | |
16668 String typeNameA = "A"; | |
16669 String typeNameB = "B"; | |
16670 ClassElement typeA = ElementFactory.classElement2(typeNameA, []); | |
16671 ClassElement typeB = ElementFactory.classElement2(typeNameB, []); | |
16672 LibraryElement importedLibrary = createTestLibrary2(context, "imported", [])
; | |
16673 ((importedLibrary.definingCompilationUnit as CompilationUnitElementImpl)).ty
pes = <ClassElement> [typeA, typeB]; | |
16674 ImportElementImpl import1 = ElementFactory.importFor(importedLibrary, null,
[]); | |
16675 ImportElementImpl import2 = ElementFactory.importFor(importedLibrary, null,
[]); | |
16676 LibraryElementImpl importingLibrary = createTestLibrary2(context, "importing
", []); | |
16677 importingLibrary.imports = <ImportElement> [import1, import2]; | |
16678 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16679 Scope scope = new LibraryImportScope(importingLibrary, errorListener); | |
16680 JUnitTestCase.assertEquals(typeA, scope.lookup(ASTFactory.identifier3(typeNa
meA), importingLibrary)); | |
16681 errorListener.assertNoErrors(); | |
16682 JUnitTestCase.assertEquals(typeB, scope.lookup(ASTFactory.identifier3(typeNa
meB), importingLibrary)); | |
16683 errorListener.assertNoErrors(); | |
16684 } | |
16685 void test_prefixedAndNonPrefixed() { | |
16686 AnalysisContext context = new AnalysisContextImpl(); | |
16687 String typeName = "C"; | |
16688 String prefixName = "p"; | |
16689 ClassElement prefixedType = ElementFactory.classElement2(typeName, []); | |
16690 ClassElement nonPrefixedType = ElementFactory.classElement2(typeName, []); | |
16691 LibraryElement prefixedLibrary = createTestLibrary2(context, "import.prefixe
d", []); | |
16692 ((prefixedLibrary.definingCompilationUnit as CompilationUnitElementImpl)).ty
pes = <ClassElement> [prefixedType]; | |
16693 ImportElementImpl prefixedImport = ElementFactory.importFor(prefixedLibrary,
ElementFactory.prefix(prefixName), []); | |
16694 LibraryElement nonPrefixedLibrary = createTestLibrary2(context, "import.nonP
refixed", []); | |
16695 ((nonPrefixedLibrary.definingCompilationUnit as CompilationUnitElementImpl))
.types = <ClassElement> [nonPrefixedType]; | |
16696 ImportElementImpl nonPrefixedImport = ElementFactory.importFor(nonPrefixedLi
brary, null, []); | |
16697 LibraryElementImpl importingLibrary = createTestLibrary2(context, "importing
", []); | |
16698 importingLibrary.imports = <ImportElement> [prefixedImport, nonPrefixedImpor
t]; | |
16699 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
16700 Scope scope = new LibraryImportScope(importingLibrary, errorListener); | |
16701 Element prefixedElement = scope.lookup(ASTFactory.identifier5(prefixName, ty
peName), importingLibrary); | |
16702 errorListener.assertNoErrors(); | |
16703 JUnitTestCase.assertSame(prefixedType, prefixedElement); | |
16704 Element nonPrefixedElement = scope.lookup(ASTFactory.identifier3(typeName),
importingLibrary); | |
16705 errorListener.assertNoErrors(); | |
16706 JUnitTestCase.assertSame(nonPrefixedType, nonPrefixedElement); | |
16707 } | |
16708 static dartSuite() { | |
16709 _ut.group('LibraryImportScopeTest', () { | |
16710 _ut.test('test_conflictingImports', () { | |
16711 final __test = new LibraryImportScopeTest(); | |
16712 runJUnitTest(__test, __test.test_conflictingImports); | |
16713 }); | |
16714 _ut.test('test_creation_empty', () { | |
16715 final __test = new LibraryImportScopeTest(); | |
16716 runJUnitTest(__test, __test.test_creation_empty); | |
16717 }); | |
16718 _ut.test('test_creation_nonEmpty', () { | |
16719 final __test = new LibraryImportScopeTest(); | |
16720 runJUnitTest(__test, __test.test_creation_nonEmpty); | |
16721 }); | |
16722 _ut.test('test_getDefiningLibrary', () { | |
16723 final __test = new LibraryImportScopeTest(); | |
16724 runJUnitTest(__test, __test.test_getDefiningLibrary); | |
16725 }); | |
16726 _ut.test('test_getErrorListener', () { | |
16727 final __test = new LibraryImportScopeTest(); | |
16728 runJUnitTest(__test, __test.test_getErrorListener); | |
16729 }); | |
16730 _ut.test('test_nonConflictingImports_fromSdk', () { | |
16731 final __test = new LibraryImportScopeTest(); | |
16732 runJUnitTest(__test, __test.test_nonConflictingImports_fromSdk); | |
16733 }); | |
16734 _ut.test('test_nonConflictingImports_sameElement', () { | |
16735 final __test = new LibraryImportScopeTest(); | |
16736 runJUnitTest(__test, __test.test_nonConflictingImports_sameElement); | |
16737 }); | |
16738 _ut.test('test_prefixedAndNonPrefixed', () { | |
16739 final __test = new LibraryImportScopeTest(); | |
16740 runJUnitTest(__test, __test.test_prefixedAndNonPrefixed); | |
16741 }); | |
16742 }); | |
16743 } | |
16744 } | |
16745 /** | |
16746 * Instances of the class `ResolutionVerifier` verify that all of the nodes in a
n AST | |
16747 * structure that should have been resolved were resolved. | |
16748 */ | |
16749 class ResolutionVerifier extends RecursiveASTVisitor<Object> { | |
16750 | |
16751 /** | |
16752 * A set containing nodes that are known to not be resolvable and should there
fore not cause the | |
16753 * test to fail. | |
16754 */ | |
16755 Set<ASTNode> _knownExceptions; | |
16756 | |
16757 /** | |
16758 * A list containing all of the AST nodes that were not resolved. | |
16759 */ | |
16760 List<ASTNode> _unresolvedNodes = new List<ASTNode>(); | |
16761 | |
16762 /** | |
16763 * A list containing all of the AST nodes that were resolved to an element of
the wrong type. | |
16764 */ | |
16765 List<ASTNode> _wrongTypedNodes = new List<ASTNode>(); | |
16766 | |
16767 /** | |
16768 * Initialize a newly created verifier to verify that all of the nodes in the
visited AST | |
16769 * structures that are expected to have been resolved have an element associat
ed with them. | |
16770 */ | |
16771 ResolutionVerifier() : this.con1(null); | |
16772 | |
16773 /** | |
16774 * Initialize a newly created verifier to verify that all of the identifiers i
n the visited AST | |
16775 * structures that are expected to have been resolved have an element associat
ed with them. Nodes | |
16776 * in the set of known exceptions are not expected to have been resolved, even
if they normally | |
16777 * would have been expected to have been resolved. | |
16778 * | |
16779 * @param knownExceptions a set containing nodes that are known to not be reso
lvable and should | |
16780 * therefore not cause the test to fail | |
16781 **/ | |
16782 ResolutionVerifier.con1(Set<ASTNode> knownExceptions) { | |
16783 this._knownExceptions = knownExceptions; | |
16784 } | |
16785 | |
16786 /** | |
16787 * Assert that all of the visited identifiers were resolved. | |
16788 */ | |
16789 void assertResolved() { | |
16790 if (!_unresolvedNodes.isEmpty || !_wrongTypedNodes.isEmpty) { | |
16791 PrintStringWriter writer = new PrintStringWriter(); | |
16792 if (!_unresolvedNodes.isEmpty) { | |
16793 writer.print("Failed to resolve "); | |
16794 writer.print(_unresolvedNodes.length); | |
16795 writer.println(" nodes:"); | |
16796 printNodes(writer, _unresolvedNodes); | |
16797 } | |
16798 if (!_wrongTypedNodes.isEmpty) { | |
16799 writer.print("Resolved "); | |
16800 writer.print(_wrongTypedNodes.length); | |
16801 writer.println(" to the wrong type of element:"); | |
16802 printNodes(writer, _wrongTypedNodes); | |
16803 } | |
16804 JUnitTestCase.fail(writer.toString()); | |
16805 } | |
16806 } | |
16807 Object visitBinaryExpression(BinaryExpression node) { | |
16808 node.visitChildren(this); | |
16809 if (!node.operator.isUserDefinableOperator) { | |
16810 return null; | |
16811 } | |
16812 Type2 operandType = node.leftOperand.staticType; | |
16813 if (operandType == null || operandType.isDynamic) { | |
16814 return null; | |
16815 } | |
16816 return checkResolved2(node, node.staticElement, MethodElement); | |
16817 } | |
16818 Object visitCommentReference(CommentReference node) => null; | |
16819 Object visitCompilationUnit(CompilationUnit node) { | |
16820 node.visitChildren(this); | |
16821 return checkResolved2(node, node.element, CompilationUnitElement); | |
16822 } | |
16823 Object visitExportDirective(ExportDirective node) => checkResolved2(node, node
.element, ExportElement); | |
16824 Object visitFunctionDeclaration(FunctionDeclaration node) { | |
16825 node.visitChildren(this); | |
16826 if (node.element is LibraryElement) { | |
16827 _wrongTypedNodes.add(node); | |
16828 } | |
16829 return null; | |
16830 } | |
16831 Object visitFunctionExpressionInvocation(FunctionExpressionInvocation node) { | |
16832 node.visitChildren(this); | |
16833 return null; | |
16834 } | |
16835 Object visitImportDirective(ImportDirective node) { | |
16836 checkResolved2(node, node.element, ImportElement); | |
16837 SimpleIdentifier prefix = node.prefix; | |
16838 if (prefix == null) { | |
16839 return null; | |
16840 } | |
16841 return checkResolved2(prefix, prefix.staticElement, PrefixElement); | |
16842 } | |
16843 Object visitIndexExpression(IndexExpression node) { | |
16844 node.visitChildren(this); | |
16845 Type2 targetType = node.realTarget.staticType; | |
16846 if (targetType == null || targetType.isDynamic) { | |
16847 return null; | |
16848 } | |
16849 return checkResolved2(node, node.staticElement, MethodElement); | |
16850 } | |
16851 Object visitLibraryDirective(LibraryDirective node) => checkResolved2(node, no
de.element, LibraryElement); | |
16852 Object visitNamedExpression(NamedExpression node) => node.expression.accept(th
is); | |
16853 Object visitPartDirective(PartDirective node) => checkResolved2(node, node.ele
ment, CompilationUnitElement); | |
16854 Object visitPartOfDirective(PartOfDirective node) => checkResolved2(node, node
.element, LibraryElement); | |
16855 Object visitPostfixExpression(PostfixExpression node) { | |
16856 node.visitChildren(this); | |
16857 if (!node.operator.isUserDefinableOperator) { | |
16858 return null; | |
16859 } | |
16860 Type2 operandType = node.operand.staticType; | |
16861 if (operandType == null || operandType.isDynamic) { | |
16862 return null; | |
16863 } | |
16864 return checkResolved2(node, node.staticElement, MethodElement); | |
16865 } | |
16866 Object visitPrefixedIdentifier(PrefixedIdentifier node) { | |
16867 SimpleIdentifier prefix = node.prefix; | |
16868 prefix.accept(this); | |
16869 Type2 prefixType = prefix.staticType; | |
16870 if (prefixType == null || prefixType.isDynamic) { | |
16871 return null; | |
16872 } | |
16873 return checkResolved(node, node.staticElement); | |
16874 } | |
16875 Object visitPrefixExpression(PrefixExpression node) { | |
16876 node.visitChildren(this); | |
16877 if (!node.operator.isUserDefinableOperator) { | |
16878 return null; | |
16879 } | |
16880 Type2 operandType = node.operand.staticType; | |
16881 if (operandType == null || operandType.isDynamic) { | |
16882 return null; | |
16883 } | |
16884 return checkResolved2(node, node.staticElement, MethodElement); | |
16885 } | |
16886 Object visitPropertyAccess(PropertyAccess node) { | |
16887 Expression target = node.realTarget; | |
16888 target.accept(this); | |
16889 Type2 targetType = target.staticType; | |
16890 if (targetType == null || targetType.isDynamic) { | |
16891 return null; | |
16892 } | |
16893 return node.propertyName.accept(this); | |
16894 } | |
16895 Object visitSimpleIdentifier(SimpleIdentifier node) { | |
16896 if (node.name == "void") { | |
16897 return null; | |
16898 } | |
16899 ASTNode parent = node.parent; | |
16900 if (parent is MethodInvocation) { | |
16901 MethodInvocation invocation = parent as MethodInvocation; | |
16902 if (identical(invocation.methodName, node)) { | |
16903 Expression target = invocation.realTarget; | |
16904 Type2 targetType = target == null ? null : target.staticType; | |
16905 if (targetType == null || targetType.isDynamic) { | |
16906 return null; | |
16907 } | |
16908 } | |
16909 } | |
16910 return checkResolved(node, node.staticElement); | |
16911 } | |
16912 Object checkResolved(ASTNode node, Element element) => checkResolved2(node, el
ement, null); | |
16913 Object checkResolved2(ASTNode node, Element element, Type expectedClass) { | |
16914 if (element == null) { | |
16915 if (_knownExceptions == null || !_knownExceptions.contains(node)) { | |
16916 _unresolvedNodes.add(node); | |
16917 } | |
16918 } else if (expectedClass != null) { | |
16919 if (!isInstanceOf(element, expectedClass)) { | |
16920 _wrongTypedNodes.add(node); | |
16921 } | |
16922 } | |
16923 return null; | |
16924 } | |
16925 String getFileName(ASTNode node) { | |
16926 if (node != null) { | |
16927 ASTNode root = node.root; | |
16928 if (root is CompilationUnit) { | |
16929 CompilationUnit rootCU = root as CompilationUnit; | |
16930 if (rootCU.element != null) { | |
16931 return rootCU.element.source.fullName; | |
16932 } else { | |
16933 return "<unknown file- CompilationUnit.getElement() returned null>"; | |
16934 } | |
16935 } else { | |
16936 return "<unknown file- CompilationUnit.getRoot() is not a CompilationUni
t>"; | |
16937 } | |
16938 } | |
16939 return "<unknown file- ASTNode is null>"; | |
16940 } | |
16941 void printNodes(PrintStringWriter writer, List<ASTNode> nodes) { | |
16942 for (ASTNode identifier in nodes) { | |
16943 writer.print(" "); | |
16944 writer.print(identifier.toString()); | |
16945 writer.print(" ("); | |
16946 writer.print(getFileName(identifier)); | |
16947 writer.print(" : "); | |
16948 writer.print(identifier.offset); | |
16949 writer.println(")"); | |
16950 } | |
16951 } | |
16952 } | |
16953 class MemberMapTest extends JUnitTestCase { | |
16954 | |
16955 /** | |
16956 * The null type. | |
16957 */ | |
16958 InterfaceType _nullType; | |
16959 void setUp() { | |
16960 _nullType = new TestTypeProvider().nullType; | |
16961 } | |
16962 void test_MemberMap_copyConstructor() { | |
16963 MethodElement m1 = ElementFactory.methodElement("m1", _nullType, []); | |
16964 MethodElement m2 = ElementFactory.methodElement("m2", _nullType, []); | |
16965 MethodElement m3 = ElementFactory.methodElement("m3", _nullType, []); | |
16966 MemberMap map = new MemberMap(); | |
16967 map.put(m1.name, m1); | |
16968 map.put(m2.name, m2); | |
16969 map.put(m3.name, m3); | |
16970 MemberMap copy = new MemberMap.con2(map); | |
16971 JUnitTestCase.assertEquals(map.size, copy.size); | |
16972 JUnitTestCase.assertEquals(m1, copy.get(m1.name)); | |
16973 JUnitTestCase.assertEquals(m2, copy.get(m2.name)); | |
16974 JUnitTestCase.assertEquals(m3, copy.get(m3.name)); | |
16975 } | |
16976 void test_MemberMap_override() { | |
16977 MethodElement m1 = ElementFactory.methodElement("m", _nullType, []); | |
16978 MethodElement m2 = ElementFactory.methodElement("m", _nullType, []); | |
16979 MemberMap map = new MemberMap(); | |
16980 map.put(m1.name, m1); | |
16981 map.put(m2.name, m2); | |
16982 JUnitTestCase.assertEquals(1, map.size); | |
16983 JUnitTestCase.assertEquals(m2, map.get("m")); | |
16984 } | |
16985 void test_MemberMap_put() { | |
16986 MethodElement m1 = ElementFactory.methodElement("m1", _nullType, []); | |
16987 MemberMap map = new MemberMap(); | |
16988 JUnitTestCase.assertEquals(0, map.size); | |
16989 map.put(m1.name, m1); | |
16990 JUnitTestCase.assertEquals(1, map.size); | |
16991 JUnitTestCase.assertEquals(m1, map.get("m1")); | |
16992 } | |
16993 static dartSuite() { | |
16994 _ut.group('MemberMapTest', () { | |
16995 _ut.test('test_MemberMap_copyConstructor', () { | |
16996 final __test = new MemberMapTest(); | |
16997 runJUnitTest(__test, __test.test_MemberMap_copyConstructor); | |
16998 }); | |
16999 _ut.test('test_MemberMap_override', () { | |
17000 final __test = new MemberMapTest(); | |
17001 runJUnitTest(__test, __test.test_MemberMap_override); | |
17002 }); | |
17003 _ut.test('test_MemberMap_put', () { | |
17004 final __test = new MemberMapTest(); | |
17005 runJUnitTest(__test, __test.test_MemberMap_put); | |
17006 }); | |
17007 }); | |
17008 } | |
17009 } | |
17010 class LibraryScopeTest extends ResolverTestCase { | |
17011 void test_creation_empty() { | |
17012 LibraryElement definingLibrary = createTestLibrary(); | |
17013 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
17014 new LibraryScope(definingLibrary, errorListener); | |
17015 } | |
17016 void test_creation_nonEmpty() { | |
17017 AnalysisContext context = new AnalysisContextImpl(); | |
17018 String importedTypeName = "A"; | |
17019 ClassElement importedType = new ClassElementImpl(ASTFactory.identifier3(impo
rtedTypeName)); | |
17020 LibraryElement importedLibrary = createTestLibrary2(context, "imported", [])
; | |
17021 ((importedLibrary.definingCompilationUnit as CompilationUnitElementImpl)).ty
pes = <ClassElement> [importedType]; | |
17022 LibraryElementImpl definingLibrary = createTestLibrary2(context, "importing"
, []); | |
17023 ImportElementImpl importElement = new ImportElementImpl(); | |
17024 importElement.importedLibrary = importedLibrary; | |
17025 definingLibrary.imports = <ImportElement> [importElement]; | |
17026 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
17027 Scope scope = new LibraryScope(definingLibrary, errorListener); | |
17028 JUnitTestCase.assertEquals(importedType, scope.lookup(ASTFactory.identifier3
(importedTypeName), definingLibrary)); | |
17029 } | |
17030 void test_getDefiningLibrary() { | |
17031 LibraryElement definingLibrary = createTestLibrary(); | |
17032 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
17033 LibraryScope scope = new LibraryScope(definingLibrary, errorListener); | |
17034 JUnitTestCase.assertEquals(definingLibrary, scope.definingLibrary); | |
17035 } | |
17036 void test_getErrorListener() { | |
17037 LibraryElement definingLibrary = createTestLibrary(); | |
17038 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
17039 LibraryScope scope = new LibraryScope(definingLibrary, errorListener); | |
17040 JUnitTestCase.assertEquals(errorListener, scope.errorListener); | |
17041 } | |
17042 static dartSuite() { | |
17043 _ut.group('LibraryScopeTest', () { | |
17044 _ut.test('test_creation_empty', () { | |
17045 final __test = new LibraryScopeTest(); | |
17046 runJUnitTest(__test, __test.test_creation_empty); | |
17047 }); | |
17048 _ut.test('test_creation_nonEmpty', () { | |
17049 final __test = new LibraryScopeTest(); | |
17050 runJUnitTest(__test, __test.test_creation_nonEmpty); | |
17051 }); | |
17052 _ut.test('test_getDefiningLibrary', () { | |
17053 final __test = new LibraryScopeTest(); | |
17054 runJUnitTest(__test, __test.test_getDefiningLibrary); | |
17055 }); | |
17056 _ut.test('test_getErrorListener', () { | |
17057 final __test = new LibraryScopeTest(); | |
17058 runJUnitTest(__test, __test.test_getErrorListener); | |
17059 }); | |
17060 }); | |
17061 } | |
17062 } | |
17063 class StaticTypeAnalyzerTest extends EngineTestCase { | |
17064 | |
17065 /** | |
17066 * The error listener to which errors will be reported. | |
17067 */ | |
17068 GatheringErrorListener _listener; | |
17069 | |
17070 /** | |
17071 * The resolver visitor used to create the analyzer. | |
17072 */ | |
17073 ResolverVisitor _visitor; | |
17074 | |
17075 /** | |
17076 * The analyzer being used to analyze the test cases. | |
17077 */ | |
17078 StaticTypeAnalyzer _analyzer; | |
17079 | |
17080 /** | |
17081 * The type provider used to access the types. | |
17082 */ | |
17083 TestTypeProvider _typeProvider; | |
17084 void fail_visitFunctionExpressionInvocation() { | |
17085 JUnitTestCase.fail("Not yet tested"); | |
17086 _listener.assertNoErrors(); | |
17087 } | |
17088 void fail_visitMethodInvocation() { | |
17089 JUnitTestCase.fail("Not yet tested"); | |
17090 _listener.assertNoErrors(); | |
17091 } | |
17092 void fail_visitSimpleIdentifier() { | |
17093 JUnitTestCase.fail("Not yet tested"); | |
17094 _listener.assertNoErrors(); | |
17095 } | |
17096 void setUp() { | |
17097 _listener = new GatheringErrorListener(); | |
17098 _typeProvider = new TestTypeProvider(); | |
17099 _analyzer = createAnalyzer(); | |
17100 } | |
17101 void test_visitAdjacentStrings() { | |
17102 Expression node = ASTFactory.adjacentStrings([resolvedString("a"), resolvedS
tring("b")]); | |
17103 JUnitTestCase.assertSame(_typeProvider.stringType, analyze(node)); | |
17104 _listener.assertNoErrors(); | |
17105 } | |
17106 void test_visitArgumentDefinitionTest() { | |
17107 Expression node = ASTFactory.argumentDefinitionTest("p"); | |
17108 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17109 _listener.assertNoErrors(); | |
17110 } | |
17111 void test_visitAsExpression() { | |
17112 ClassElement superclass = ElementFactory.classElement2("A", []); | |
17113 InterfaceType superclassType = superclass.type; | |
17114 ClassElement subclass = ElementFactory.classElement("B", superclassType, [])
; | |
17115 Expression node = ASTFactory.asExpression(ASTFactory.thisExpression(), ASTFa
ctory.typeName(subclass, [])); | |
17116 JUnitTestCase.assertSame(subclass.type, analyze2(node, superclassType)); | |
17117 _listener.assertNoErrors(); | |
17118 } | |
17119 void test_visitAssignmentExpression_compound() { | |
17120 InterfaceType numType = _typeProvider.numType; | |
17121 SimpleIdentifier identifier = resolvedVariable(_typeProvider.intType, "i"); | |
17122 AssignmentExpression node = ASTFactory.assignmentExpression(identifier, Toke
nType.PLUS_EQ, resolvedInteger(1)); | |
17123 MethodElement plusMethod = getMethod(numType, "+"); | |
17124 node.staticElement = plusMethod; | |
17125 JUnitTestCase.assertSame(numType, analyze(node)); | |
17126 _listener.assertNoErrors(); | |
17127 } | |
17128 void test_visitAssignmentExpression_simple() { | |
17129 InterfaceType intType = _typeProvider.intType; | |
17130 Expression node = ASTFactory.assignmentExpression(resolvedVariable(intType,
"i"), TokenType.EQ, resolvedInteger(0)); | |
17131 JUnitTestCase.assertSame(intType, analyze(node)); | |
17132 _listener.assertNoErrors(); | |
17133 } | |
17134 void test_visitBinaryExpression_equals() { | |
17135 Expression node = ASTFactory.binaryExpression(resolvedInteger(2), TokenType.
EQ_EQ, resolvedInteger(3)); | |
17136 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17137 _listener.assertNoErrors(); | |
17138 } | |
17139 void test_visitBinaryExpression_logicalAnd() { | |
17140 Expression node = ASTFactory.binaryExpression(ASTFactory.booleanLiteral(fals
e), TokenType.AMPERSAND_AMPERSAND, ASTFactory.booleanLiteral(true)); | |
17141 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17142 _listener.assertNoErrors(); | |
17143 } | |
17144 void test_visitBinaryExpression_logicalOr() { | |
17145 Expression node = ASTFactory.binaryExpression(ASTFactory.booleanLiteral(fals
e), TokenType.BAR_BAR, ASTFactory.booleanLiteral(true)); | |
17146 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17147 _listener.assertNoErrors(); | |
17148 } | |
17149 void test_visitBinaryExpression_notEquals() { | |
17150 Expression node = ASTFactory.binaryExpression(resolvedInteger(2), TokenType.
BANG_EQ, resolvedInteger(3)); | |
17151 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17152 _listener.assertNoErrors(); | |
17153 } | |
17154 void test_visitBinaryExpression_plusID() { | |
17155 BinaryExpression node = ASTFactory.binaryExpression(resolvedInteger(1), Toke
nType.PLUS, resolvedDouble(2.0)); | |
17156 node.staticElement = getMethod(_typeProvider.numType, "+"); | |
17157 JUnitTestCase.assertSame(_typeProvider.doubleType, analyze(node)); | |
17158 _listener.assertNoErrors(); | |
17159 } | |
17160 void test_visitBinaryExpression_plusII() { | |
17161 BinaryExpression node = ASTFactory.binaryExpression(resolvedInteger(1), Toke
nType.PLUS, resolvedInteger(2)); | |
17162 node.staticElement = getMethod(_typeProvider.numType, "+"); | |
17163 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17164 _listener.assertNoErrors(); | |
17165 } | |
17166 void test_visitBinaryExpression_slash() { | |
17167 BinaryExpression node = ASTFactory.binaryExpression(resolvedInteger(2), Toke
nType.SLASH, resolvedInteger(2)); | |
17168 node.staticElement = getMethod(_typeProvider.numType, "/"); | |
17169 JUnitTestCase.assertSame(_typeProvider.doubleType, analyze(node)); | |
17170 _listener.assertNoErrors(); | |
17171 } | |
17172 void test_visitBinaryExpression_star_notSpecial() { | |
17173 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
17174 InterfaceType typeA = classA.type; | |
17175 MethodElement operator = ElementFactory.methodElement("*", typeA, [_typeProv
ider.doubleType]); | |
17176 classA.methods = <MethodElement> [operator]; | |
17177 BinaryExpression node = ASTFactory.binaryExpression(ASTFactory.asExpression(
ASTFactory.identifier3("a"), ASTFactory.typeName(classA, [])), TokenType.PLUS, r
esolvedDouble(2.0)); | |
17178 node.staticElement = operator; | |
17179 JUnitTestCase.assertSame(typeA, analyze(node)); | |
17180 _listener.assertNoErrors(); | |
17181 } | |
17182 void test_visitBinaryExpression_starID() { | |
17183 BinaryExpression node = ASTFactory.binaryExpression(resolvedInteger(1), Toke
nType.PLUS, resolvedDouble(2.0)); | |
17184 node.staticElement = getMethod(_typeProvider.numType, "*"); | |
17185 JUnitTestCase.assertSame(_typeProvider.doubleType, analyze(node)); | |
17186 _listener.assertNoErrors(); | |
17187 } | |
17188 void test_visitBooleanLiteral_false() { | |
17189 Expression node = ASTFactory.booleanLiteral(false); | |
17190 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17191 _listener.assertNoErrors(); | |
17192 } | |
17193 void test_visitBooleanLiteral_true() { | |
17194 Expression node = ASTFactory.booleanLiteral(true); | |
17195 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17196 _listener.assertNoErrors(); | |
17197 } | |
17198 void test_visitCascadeExpression() { | |
17199 Expression node = ASTFactory.cascadeExpression(resolvedString("a"), [ASTFact
ory.propertyAccess2(null, "length")]); | |
17200 JUnitTestCase.assertSame(_typeProvider.stringType, analyze(node)); | |
17201 _listener.assertNoErrors(); | |
17202 } | |
17203 void test_visitConditionalExpression_differentTypes() { | |
17204 Expression node = ASTFactory.conditionalExpression(ASTFactory.booleanLiteral
(true), resolvedDouble(1.0), resolvedInteger(0)); | |
17205 JUnitTestCase.assertSame(_typeProvider.numType, analyze(node)); | |
17206 _listener.assertNoErrors(); | |
17207 } | |
17208 void test_visitConditionalExpression_sameTypes() { | |
17209 Expression node = ASTFactory.conditionalExpression(ASTFactory.booleanLiteral
(true), resolvedInteger(1), resolvedInteger(0)); | |
17210 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17211 _listener.assertNoErrors(); | |
17212 } | |
17213 void test_visitDoubleLiteral() { | |
17214 Expression node = ASTFactory.doubleLiteral(4.33); | |
17215 JUnitTestCase.assertSame(_typeProvider.doubleType, analyze(node)); | |
17216 _listener.assertNoErrors(); | |
17217 } | |
17218 void test_visitFunctionExpression_named_block() { | |
17219 Type2 dynamicType = _typeProvider.dynamicType; | |
17220 FormalParameter p1 = ASTFactory.namedFormalParameter(ASTFactory.simpleFormal
Parameter3("p1"), resolvedInteger(0)); | |
17221 setType(p1, dynamicType); | |
17222 FormalParameter p2 = ASTFactory.namedFormalParameter(ASTFactory.simpleFormal
Parameter3("p2"), resolvedInteger(0)); | |
17223 setType(p2, dynamicType); | |
17224 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.blockFunctionBody2([])); | |
17225 analyze3(p1); | |
17226 analyze3(p2); | |
17227 Type2 resultType = analyze(node); | |
17228 Map<String, Type2> expectedNamedTypes = new Map<String, Type2>(); | |
17229 expectedNamedTypes["p1"] = dynamicType; | |
17230 expectedNamedTypes["p2"] = dynamicType; | |
17231 assertFunctionType(dynamicType, null, null, expectedNamedTypes, resultType); | |
17232 _listener.assertNoErrors(); | |
17233 } | |
17234 void test_visitFunctionExpression_named_expression() { | |
17235 Type2 dynamicType = _typeProvider.dynamicType; | |
17236 FormalParameter p = ASTFactory.namedFormalParameter(ASTFactory.simpleFormalP
arameter3("p"), resolvedInteger(0)); | |
17237 setType(p, dynamicType); | |
17238 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p]), ASTFactory.expressionFunctionBody(resolvedInteger(0))); | |
17239 analyze3(p); | |
17240 Type2 resultType = analyze(node); | |
17241 Map<String, Type2> expectedNamedTypes = new Map<String, Type2>(); | |
17242 expectedNamedTypes["p"] = dynamicType; | |
17243 assertFunctionType(_typeProvider.intType, null, null, expectedNamedTypes, re
sultType); | |
17244 _listener.assertNoErrors(); | |
17245 } | |
17246 void test_visitFunctionExpression_normal_block() { | |
17247 Type2 dynamicType = _typeProvider.dynamicType; | |
17248 FormalParameter p1 = ASTFactory.simpleFormalParameter3("p1"); | |
17249 setType(p1, dynamicType); | |
17250 FormalParameter p2 = ASTFactory.simpleFormalParameter3("p2"); | |
17251 setType(p2, dynamicType); | |
17252 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.blockFunctionBody2([])); | |
17253 analyze3(p1); | |
17254 analyze3(p2); | |
17255 Type2 resultType = analyze(node); | |
17256 assertFunctionType(dynamicType, <Type2> [dynamicType, dynamicType], null, nu
ll, resultType); | |
17257 _listener.assertNoErrors(); | |
17258 } | |
17259 void test_visitFunctionExpression_normal_expression() { | |
17260 Type2 dynamicType = _typeProvider.dynamicType; | |
17261 FormalParameter p = ASTFactory.simpleFormalParameter3("p"); | |
17262 setType(p, dynamicType); | |
17263 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p]), ASTFactory.expressionFunctionBody(resolvedInteger(0))); | |
17264 analyze3(p); | |
17265 Type2 resultType = analyze(node); | |
17266 assertFunctionType(_typeProvider.intType, <Type2> [dynamicType], null, null,
resultType); | |
17267 _listener.assertNoErrors(); | |
17268 } | |
17269 void test_visitFunctionExpression_normalAndNamed_block() { | |
17270 Type2 dynamicType = _typeProvider.dynamicType; | |
17271 FormalParameter p1 = ASTFactory.simpleFormalParameter3("p1"); | |
17272 setType(p1, dynamicType); | |
17273 FormalParameter p2 = ASTFactory.namedFormalParameter(ASTFactory.simpleFormal
Parameter3("p2"), resolvedInteger(0)); | |
17274 setType(p2, dynamicType); | |
17275 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.blockFunctionBody2([])); | |
17276 analyze3(p2); | |
17277 Type2 resultType = analyze(node); | |
17278 Map<String, Type2> expectedNamedTypes = new Map<String, Type2>(); | |
17279 expectedNamedTypes["p2"] = dynamicType; | |
17280 assertFunctionType(dynamicType, <Type2> [dynamicType], null, expectedNamedTy
pes, resultType); | |
17281 _listener.assertNoErrors(); | |
17282 } | |
17283 void test_visitFunctionExpression_normalAndNamed_expression() { | |
17284 Type2 dynamicType = _typeProvider.dynamicType; | |
17285 FormalParameter p1 = ASTFactory.simpleFormalParameter3("p1"); | |
17286 setType(p1, dynamicType); | |
17287 FormalParameter p2 = ASTFactory.namedFormalParameter(ASTFactory.simpleFormal
Parameter3("p2"), resolvedInteger(0)); | |
17288 setType(p2, dynamicType); | |
17289 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.expressionFunctionBody(resolvedInteger(0))); | |
17290 analyze3(p2); | |
17291 Type2 resultType = analyze(node); | |
17292 Map<String, Type2> expectedNamedTypes = new Map<String, Type2>(); | |
17293 expectedNamedTypes["p2"] = dynamicType; | |
17294 assertFunctionType(_typeProvider.intType, <Type2> [dynamicType], null, expec
tedNamedTypes, resultType); | |
17295 _listener.assertNoErrors(); | |
17296 } | |
17297 void test_visitFunctionExpression_normalAndPositional_block() { | |
17298 Type2 dynamicType = _typeProvider.dynamicType; | |
17299 FormalParameter p1 = ASTFactory.simpleFormalParameter3("p1"); | |
17300 setType(p1, dynamicType); | |
17301 FormalParameter p2 = ASTFactory.positionalFormalParameter(ASTFactory.simpleF
ormalParameter3("p2"), resolvedInteger(0)); | |
17302 setType(p2, dynamicType); | |
17303 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.blockFunctionBody2([])); | |
17304 analyze3(p1); | |
17305 analyze3(p2); | |
17306 Type2 resultType = analyze(node); | |
17307 assertFunctionType(dynamicType, <Type2> [dynamicType], <Type2> [dynamicType]
, null, resultType); | |
17308 _listener.assertNoErrors(); | |
17309 } | |
17310 void test_visitFunctionExpression_normalAndPositional_expression() { | |
17311 Type2 dynamicType = _typeProvider.dynamicType; | |
17312 FormalParameter p1 = ASTFactory.simpleFormalParameter3("p1"); | |
17313 setType(p1, dynamicType); | |
17314 FormalParameter p2 = ASTFactory.positionalFormalParameter(ASTFactory.simpleF
ormalParameter3("p2"), resolvedInteger(0)); | |
17315 setType(p2, dynamicType); | |
17316 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.expressionFunctionBody(resolvedInteger(0))); | |
17317 analyze3(p1); | |
17318 analyze3(p2); | |
17319 Type2 resultType = analyze(node); | |
17320 assertFunctionType(_typeProvider.intType, <Type2> [dynamicType], <Type2> [dy
namicType], null, resultType); | |
17321 _listener.assertNoErrors(); | |
17322 } | |
17323 void test_visitFunctionExpression_positional_block() { | |
17324 Type2 dynamicType = _typeProvider.dynamicType; | |
17325 FormalParameter p1 = ASTFactory.positionalFormalParameter(ASTFactory.simpleF
ormalParameter3("p1"), resolvedInteger(0)); | |
17326 setType(p1, dynamicType); | |
17327 FormalParameter p2 = ASTFactory.positionalFormalParameter(ASTFactory.simpleF
ormalParameter3("p2"), resolvedInteger(0)); | |
17328 setType(p2, dynamicType); | |
17329 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p1, p2]), ASTFactory.blockFunctionBody2([])); | |
17330 analyze3(p1); | |
17331 analyze3(p2); | |
17332 Type2 resultType = analyze(node); | |
17333 assertFunctionType(dynamicType, null, <Type2> [dynamicType, dynamicType], nu
ll, resultType); | |
17334 _listener.assertNoErrors(); | |
17335 } | |
17336 void test_visitFunctionExpression_positional_expression() { | |
17337 Type2 dynamicType = _typeProvider.dynamicType; | |
17338 FormalParameter p = ASTFactory.positionalFormalParameter(ASTFactory.simpleFo
rmalParameter3("p"), resolvedInteger(0)); | |
17339 setType(p, dynamicType); | |
17340 FunctionExpression node = resolvedFunctionExpression(ASTFactory.formalParame
terList([p]), ASTFactory.expressionFunctionBody(resolvedInteger(0))); | |
17341 analyze3(p); | |
17342 Type2 resultType = analyze(node); | |
17343 assertFunctionType(_typeProvider.intType, null, <Type2> [dynamicType], null,
resultType); | |
17344 _listener.assertNoErrors(); | |
17345 } | |
17346 void test_visitIndexExpression_getter() { | |
17347 InterfaceType listType = _typeProvider.listType; | |
17348 SimpleIdentifier identifier = resolvedVariable(listType, "a"); | |
17349 IndexExpression node = ASTFactory.indexExpression(identifier, resolvedIntege
r(2)); | |
17350 MethodElement indexMethod = listType.element.methods[0]; | |
17351 node.staticElement = indexMethod; | |
17352 JUnitTestCase.assertSame(listType.typeArguments[0], analyze(node)); | |
17353 _listener.assertNoErrors(); | |
17354 } | |
17355 void test_visitIndexExpression_setter() { | |
17356 InterfaceType listType = _typeProvider.listType; | |
17357 SimpleIdentifier identifier = resolvedVariable(listType, "a"); | |
17358 IndexExpression node = ASTFactory.indexExpression(identifier, resolvedIntege
r(2)); | |
17359 MethodElement indexMethod = listType.element.methods[1]; | |
17360 node.staticElement = indexMethod; | |
17361 ASTFactory.assignmentExpression(node, TokenType.EQ, ASTFactory.integer(0)); | |
17362 JUnitTestCase.assertSame(listType.typeArguments[0], analyze(node)); | |
17363 _listener.assertNoErrors(); | |
17364 } | |
17365 void test_visitIndexExpression_typeParameters() { | |
17366 InterfaceType intType = _typeProvider.intType; | |
17367 InterfaceType listType = _typeProvider.listType; | |
17368 MethodElement methodElement = getMethod(listType, "[]"); | |
17369 SimpleIdentifier identifier = ASTFactory.identifier3("list"); | |
17370 InterfaceType listOfIntType = listType.substitute4(<Type2> [intType]); | |
17371 identifier.staticType = listOfIntType; | |
17372 IndexExpression indexExpression = ASTFactory.indexExpression(identifier, AST
Factory.integer(0)); | |
17373 MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType); | |
17374 indexExpression.staticElement = indexMethod; | |
17375 JUnitTestCase.assertSame(intType, analyze(indexExpression)); | |
17376 _listener.assertNoErrors(); | |
17377 } | |
17378 void test_visitIndexExpression_typeParameters_inSetterContext() { | |
17379 InterfaceType intType = _typeProvider.intType; | |
17380 InterfaceType listType = _typeProvider.listType; | |
17381 MethodElement methodElement = getMethod(listType, "[]="); | |
17382 SimpleIdentifier identifier = ASTFactory.identifier3("list"); | |
17383 InterfaceType listOfIntType = listType.substitute4(<Type2> [intType]); | |
17384 identifier.staticType = listOfIntType; | |
17385 IndexExpression indexExpression = ASTFactory.indexExpression(identifier, AST
Factory.integer(0)); | |
17386 MethodElement indexMethod = MethodMember.from(methodElement, listOfIntType); | |
17387 indexExpression.staticElement = indexMethod; | |
17388 ASTFactory.assignmentExpression(indexExpression, TokenType.EQ, ASTFactory.in
teger(0)); | |
17389 JUnitTestCase.assertSame(intType, analyze(indexExpression)); | |
17390 _listener.assertNoErrors(); | |
17391 } | |
17392 void test_visitInstanceCreationExpression_named() { | |
17393 ClassElementImpl classElement = ElementFactory.classElement2("C", []); | |
17394 String constructorName = "m"; | |
17395 ConstructorElementImpl constructor = ElementFactory.constructorElement(class
Element, constructorName); | |
17396 constructor.returnType = classElement.type; | |
17397 FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor); | |
17398 constructor.type = constructorType; | |
17399 classElement.constructors = <ConstructorElement> [constructor]; | |
17400 InstanceCreationExpression node = ASTFactory.instanceCreationExpression2(nul
l, ASTFactory.typeName(classElement, []), [ASTFactory.identifier3(constructorNam
e)]); | |
17401 node.staticElement = constructor; | |
17402 JUnitTestCase.assertSame(classElement.type, analyze(node)); | |
17403 _listener.assertNoErrors(); | |
17404 } | |
17405 void test_visitInstanceCreationExpression_typeParameters() { | |
17406 ClassElementImpl elementC = ElementFactory.classElement2("C", ["E"]); | |
17407 ClassElementImpl elementI = ElementFactory.classElement2("I", []); | |
17408 ConstructorElementImpl constructor = ElementFactory.constructorElement(eleme
ntC, null); | |
17409 elementC.constructors = <ConstructorElement> [constructor]; | |
17410 constructor.returnType = elementC.type; | |
17411 FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor); | |
17412 constructor.type = constructorType; | |
17413 TypeName typeName = ASTFactory.typeName(elementC, [ASTFactory.typeName(eleme
ntI, [])]); | |
17414 typeName.type = elementC.type.substitute4(<Type2> [elementI.type]); | |
17415 InstanceCreationExpression node = ASTFactory.instanceCreationExpression2(nul
l, typeName, []); | |
17416 node.staticElement = constructor; | |
17417 InterfaceType interfaceType = analyze(node) as InterfaceType; | |
17418 List<Type2> typeArgs = interfaceType.typeArguments; | |
17419 JUnitTestCase.assertEquals(1, typeArgs.length); | |
17420 JUnitTestCase.assertEquals(elementI.type, typeArgs[0]); | |
17421 _listener.assertNoErrors(); | |
17422 } | |
17423 void test_visitInstanceCreationExpression_unnamed() { | |
17424 ClassElementImpl classElement = ElementFactory.classElement2("C", []); | |
17425 ConstructorElementImpl constructor = ElementFactory.constructorElement(class
Element, null); | |
17426 constructor.returnType = classElement.type; | |
17427 FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor); | |
17428 constructor.type = constructorType; | |
17429 classElement.constructors = <ConstructorElement> [constructor]; | |
17430 InstanceCreationExpression node = ASTFactory.instanceCreationExpression2(nul
l, ASTFactory.typeName(classElement, []), []); | |
17431 node.staticElement = constructor; | |
17432 JUnitTestCase.assertSame(classElement.type, analyze(node)); | |
17433 _listener.assertNoErrors(); | |
17434 } | |
17435 void test_visitIntegerLiteral() { | |
17436 Expression node = resolvedInteger(42); | |
17437 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17438 _listener.assertNoErrors(); | |
17439 } | |
17440 void test_visitIsExpression_negated() { | |
17441 Expression node = ASTFactory.isExpression(resolvedString("a"), true, ASTFact
ory.typeName4("String", [])); | |
17442 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17443 _listener.assertNoErrors(); | |
17444 } | |
17445 void test_visitIsExpression_notNegated() { | |
17446 Expression node = ASTFactory.isExpression(resolvedString("a"), false, ASTFac
tory.typeName4("String", [])); | |
17447 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17448 _listener.assertNoErrors(); | |
17449 } | |
17450 void test_visitListLiteral_empty() { | |
17451 Expression node = ASTFactory.listLiteral([]); | |
17452 Type2 resultType = analyze(node); | |
17453 assertType2(_typeProvider.listType.substitute4(<Type2> [_typeProvider.dynami
cType]), resultType); | |
17454 _listener.assertNoErrors(); | |
17455 } | |
17456 void test_visitListLiteral_nonEmpty() { | |
17457 Expression node = ASTFactory.listLiteral([resolvedInteger(0)]); | |
17458 Type2 resultType = analyze(node); | |
17459 assertType2(_typeProvider.listType.substitute4(<Type2> [_typeProvider.dynami
cType]), resultType); | |
17460 _listener.assertNoErrors(); | |
17461 } | |
17462 void test_visitMapLiteral_empty() { | |
17463 Expression node = ASTFactory.mapLiteral2([]); | |
17464 Type2 resultType = analyze(node); | |
17465 assertType2(_typeProvider.mapType.substitute4(<Type2> [_typeProvider.dynamic
Type, _typeProvider.dynamicType]), resultType); | |
17466 _listener.assertNoErrors(); | |
17467 } | |
17468 void test_visitMapLiteral_nonEmpty() { | |
17469 Expression node = ASTFactory.mapLiteral2([ASTFactory.mapLiteralEntry("k", re
solvedInteger(0))]); | |
17470 Type2 resultType = analyze(node); | |
17471 assertType2(_typeProvider.mapType.substitute4(<Type2> [_typeProvider.dynamic
Type, _typeProvider.dynamicType]), resultType); | |
17472 _listener.assertNoErrors(); | |
17473 } | |
17474 void test_visitMethodInvocation_then() { | |
17475 Expression node = ASTFactory.methodInvocation(null, "then", []); | |
17476 analyze(node); | |
17477 _listener.assertNoErrors(); | |
17478 } | |
17479 void test_visitNamedExpression() { | |
17480 Expression node = ASTFactory.namedExpression2("n", resolvedString("a")); | |
17481 JUnitTestCase.assertSame(_typeProvider.stringType, analyze(node)); | |
17482 _listener.assertNoErrors(); | |
17483 } | |
17484 void test_visitNullLiteral() { | |
17485 Expression node = ASTFactory.nullLiteral(); | |
17486 JUnitTestCase.assertSame(_typeProvider.bottomType, analyze(node)); | |
17487 _listener.assertNoErrors(); | |
17488 } | |
17489 void test_visitParenthesizedExpression() { | |
17490 Expression node = ASTFactory.parenthesizedExpression(resolvedInteger(0)); | |
17491 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17492 _listener.assertNoErrors(); | |
17493 } | |
17494 void test_visitPostfixExpression_minusMinus() { | |
17495 PostfixExpression node = ASTFactory.postfixExpression(resolvedInteger(0), To
kenType.MINUS_MINUS); | |
17496 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17497 _listener.assertNoErrors(); | |
17498 } | |
17499 void test_visitPostfixExpression_plusPlus() { | |
17500 PostfixExpression node = ASTFactory.postfixExpression(resolvedInteger(0), To
kenType.PLUS_PLUS); | |
17501 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17502 _listener.assertNoErrors(); | |
17503 } | |
17504 void test_visitPrefixedIdentifier_getter() { | |
17505 Type2 boolType = _typeProvider.boolType; | |
17506 PropertyAccessorElementImpl getter = ElementFactory.getterElement("b", false
, boolType); | |
17507 PrefixedIdentifier node = ASTFactory.identifier5("a", "b"); | |
17508 node.identifier.staticElement = getter; | |
17509 JUnitTestCase.assertSame(boolType, analyze(node)); | |
17510 _listener.assertNoErrors(); | |
17511 } | |
17512 void test_visitPrefixedIdentifier_setter() { | |
17513 Type2 boolType = _typeProvider.boolType; | |
17514 FieldElementImpl field = ElementFactory.fieldElement("b", false, false, fals
e, boolType); | |
17515 PropertyAccessorElement setter = field.setter; | |
17516 PrefixedIdentifier node = ASTFactory.identifier5("a", "b"); | |
17517 node.identifier.staticElement = setter; | |
17518 JUnitTestCase.assertSame(boolType, analyze(node)); | |
17519 _listener.assertNoErrors(); | |
17520 } | |
17521 void test_visitPrefixedIdentifier_variable() { | |
17522 VariableElementImpl variable = ElementFactory.localVariableElement2("b"); | |
17523 variable.type = _typeProvider.boolType; | |
17524 PrefixedIdentifier node = ASTFactory.identifier5("a", "b"); | |
17525 node.identifier.staticElement = variable; | |
17526 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17527 _listener.assertNoErrors(); | |
17528 } | |
17529 void test_visitPrefixExpression_bang() { | |
17530 PrefixExpression node = ASTFactory.prefixExpression(TokenType.BANG, resolved
Integer(0)); | |
17531 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17532 _listener.assertNoErrors(); | |
17533 } | |
17534 void test_visitPrefixExpression_minus() { | |
17535 PrefixExpression node = ASTFactory.prefixExpression(TokenType.MINUS, resolve
dInteger(0)); | |
17536 MethodElement minusMethod = getMethod(_typeProvider.numType, "-"); | |
17537 node.staticElement = minusMethod; | |
17538 JUnitTestCase.assertSame(_typeProvider.numType, analyze(node)); | |
17539 _listener.assertNoErrors(); | |
17540 } | |
17541 void test_visitPrefixExpression_minusMinus() { | |
17542 PrefixExpression node = ASTFactory.prefixExpression(TokenType.MINUS_MINUS, r
esolvedInteger(0)); | |
17543 MethodElement minusMethod = getMethod(_typeProvider.numType, "-"); | |
17544 node.staticElement = minusMethod; | |
17545 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17546 _listener.assertNoErrors(); | |
17547 } | |
17548 void test_visitPrefixExpression_not() { | |
17549 Expression node = ASTFactory.prefixExpression(TokenType.BANG, ASTFactory.boo
leanLiteral(true)); | |
17550 JUnitTestCase.assertSame(_typeProvider.boolType, analyze(node)); | |
17551 _listener.assertNoErrors(); | |
17552 } | |
17553 void test_visitPrefixExpression_plusPlus() { | |
17554 PrefixExpression node = ASTFactory.prefixExpression(TokenType.PLUS_PLUS, res
olvedInteger(0)); | |
17555 MethodElement plusMethod = getMethod(_typeProvider.numType, "+"); | |
17556 node.staticElement = plusMethod; | |
17557 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17558 _listener.assertNoErrors(); | |
17559 } | |
17560 void test_visitPrefixExpression_tilde() { | |
17561 PrefixExpression node = ASTFactory.prefixExpression(TokenType.TILDE, resolve
dInteger(0)); | |
17562 MethodElement tildeMethod = getMethod(_typeProvider.intType, "~"); | |
17563 node.staticElement = tildeMethod; | |
17564 JUnitTestCase.assertSame(_typeProvider.intType, analyze(node)); | |
17565 _listener.assertNoErrors(); | |
17566 } | |
17567 void test_visitPropertyAccess_getter() { | |
17568 Type2 boolType = _typeProvider.boolType; | |
17569 PropertyAccessorElementImpl getter = ElementFactory.getterElement("b", false
, boolType); | |
17570 PropertyAccess node = ASTFactory.propertyAccess2(ASTFactory.identifier3("a")
, "b"); | |
17571 node.propertyName.staticElement = getter; | |
17572 JUnitTestCase.assertSame(boolType, analyze(node)); | |
17573 _listener.assertNoErrors(); | |
17574 } | |
17575 void test_visitPropertyAccess_setter() { | |
17576 Type2 boolType = _typeProvider.boolType; | |
17577 FieldElementImpl field = ElementFactory.fieldElement("b", false, false, fals
e, boolType); | |
17578 PropertyAccessorElement setter = field.setter; | |
17579 PropertyAccess node = ASTFactory.propertyAccess2(ASTFactory.identifier3("a")
, "b"); | |
17580 node.propertyName.staticElement = setter; | |
17581 JUnitTestCase.assertSame(boolType, analyze(node)); | |
17582 _listener.assertNoErrors(); | |
17583 } | |
17584 void test_visitSimpleStringLiteral() { | |
17585 Expression node = resolvedString("a"); | |
17586 JUnitTestCase.assertSame(_typeProvider.stringType, analyze(node)); | |
17587 _listener.assertNoErrors(); | |
17588 } | |
17589 void test_visitStringInterpolation() { | |
17590 Expression node = ASTFactory.string([ | |
17591 ASTFactory.interpolationString("a", "a"), | |
17592 ASTFactory.interpolationExpression(resolvedString("b")), | |
17593 ASTFactory.interpolationString("c", "c")]); | |
17594 JUnitTestCase.assertSame(_typeProvider.stringType, analyze(node)); | |
17595 _listener.assertNoErrors(); | |
17596 } | |
17597 void test_visitSuperExpression() { | |
17598 InterfaceType superType = ElementFactory.classElement2("A", []).type; | |
17599 InterfaceType thisType = ElementFactory.classElement("B", superType, []).typ
e; | |
17600 Expression node = ASTFactory.superExpression(); | |
17601 JUnitTestCase.assertSame(thisType, analyze2(node, thisType)); | |
17602 _listener.assertNoErrors(); | |
17603 } | |
17604 void test_visitSymbolLiteral() { | |
17605 JUnitTestCase.assertSame(_typeProvider.symbolType, analyze(ASTFactory.symbol
Literal(["a"]))); | |
17606 } | |
17607 void test_visitThisExpression() { | |
17608 InterfaceType thisType = ElementFactory.classElement("B", ElementFactory.cla
ssElement2("A", []).type, []).type; | |
17609 Expression node = ASTFactory.thisExpression(); | |
17610 JUnitTestCase.assertSame(thisType, analyze2(node, thisType)); | |
17611 _listener.assertNoErrors(); | |
17612 } | |
17613 void test_visitThrowExpression_withoutValue() { | |
17614 Expression node = ASTFactory.throwExpression(); | |
17615 JUnitTestCase.assertSame(_typeProvider.bottomType, analyze(node)); | |
17616 _listener.assertNoErrors(); | |
17617 } | |
17618 void test_visitThrowExpression_withValue() { | |
17619 Expression node = ASTFactory.throwExpression2(resolvedInteger(0)); | |
17620 JUnitTestCase.assertSame(_typeProvider.bottomType, analyze(node)); | |
17621 _listener.assertNoErrors(); | |
17622 } | |
17623 | |
17624 /** | |
17625 * Return the type associated with the given expression after the static type
analyzer has | |
17626 * computed a type for it. | |
17627 * | |
17628 * @param node the expression with which the type is associated | |
17629 * @return the type associated with the expression | |
17630 */ | |
17631 Type2 analyze(Expression node) => analyze2(node, null); | |
17632 | |
17633 /** | |
17634 * Return the type associated with the given expression after the static type
analyzer has | |
17635 * computed a type for it. | |
17636 * | |
17637 * @param node the expression with which the type is associated | |
17638 * @param thisType the type of 'this' | |
17639 * @return the type associated with the expression | |
17640 */ | |
17641 Type2 analyze2(Expression node, InterfaceType thisType) { | |
17642 try { | |
17643 _analyzer.thisType_J2DAccessor = thisType; | |
17644 } on JavaException catch (exception) { | |
17645 throw new IllegalArgumentException("Could not set type of 'this'", excepti
on); | |
17646 } | |
17647 node.accept(_analyzer); | |
17648 return node.staticType; | |
17649 } | |
17650 | |
17651 /** | |
17652 * Return the type associated with the given parameter after the static type a
nalyzer has computed | |
17653 * a type for it. | |
17654 * | |
17655 * @param node the parameter with which the type is associated | |
17656 * @return the type associated with the parameter | |
17657 */ | |
17658 Type2 analyze3(FormalParameter node) { | |
17659 node.accept(_analyzer); | |
17660 return ((node.identifier.staticElement as ParameterElement)).type; | |
17661 } | |
17662 | |
17663 /** | |
17664 * Assert that the actual type is a function type with the expected characteri
stics. | |
17665 * | |
17666 * @param expectedReturnType the expected return type of the function | |
17667 * @param expectedNormalTypes the expected types of the normal parameters | |
17668 * @param expectedOptionalTypes the expected types of the optional parameters | |
17669 * @param expectedNamedTypes the expected types of the named parameters | |
17670 * @param actualType the type being tested | |
17671 */ | |
17672 void assertFunctionType(Type2 expectedReturnType, List<Type2> expectedNormalTy
pes, List<Type2> expectedOptionalTypes, Map<String, Type2> expectedNamedTypes, T
ype2 actualType) { | |
17673 EngineTestCase.assertInstanceOf(FunctionType, actualType); | |
17674 FunctionType functionType = actualType as FunctionType; | |
17675 List<Type2> normalTypes = functionType.normalParameterTypes; | |
17676 if (expectedNormalTypes == null) { | |
17677 EngineTestCase.assertLength(0, normalTypes); | |
17678 } else { | |
17679 int expectedCount = expectedNormalTypes.length; | |
17680 EngineTestCase.assertLength(expectedCount, normalTypes); | |
17681 for (int i = 0; i < expectedCount; i++) { | |
17682 JUnitTestCase.assertSame(expectedNormalTypes[i], normalTypes[i]); | |
17683 } | |
17684 } | |
17685 List<Type2> optionalTypes = functionType.optionalParameterTypes; | |
17686 if (expectedOptionalTypes == null) { | |
17687 EngineTestCase.assertLength(0, optionalTypes); | |
17688 } else { | |
17689 int expectedCount = expectedOptionalTypes.length; | |
17690 EngineTestCase.assertLength(expectedCount, optionalTypes); | |
17691 for (int i = 0; i < expectedCount; i++) { | |
17692 JUnitTestCase.assertSame(expectedOptionalTypes[i], optionalTypes[i]); | |
17693 } | |
17694 } | |
17695 Map<String, Type2> namedTypes = functionType.namedParameterTypes; | |
17696 if (expectedNamedTypes == null) { | |
17697 EngineTestCase.assertSize2(0, namedTypes); | |
17698 } else { | |
17699 EngineTestCase.assertSize2(expectedNamedTypes.length, namedTypes); | |
17700 for (MapEntry<String, Type2> entry in getMapEntrySet(expectedNamedTypes))
{ | |
17701 JUnitTestCase.assertSame(entry.getValue(), namedTypes[entry.getKey()]); | |
17702 } | |
17703 } | |
17704 JUnitTestCase.assertSame(expectedReturnType, functionType.returnType); | |
17705 } | |
17706 void assertType(InterfaceTypeImpl expectedType, InterfaceTypeImpl actualType)
{ | |
17707 JUnitTestCase.assertEquals(expectedType.displayName, actualType.displayName)
; | |
17708 JUnitTestCase.assertEquals(expectedType.element, actualType.element); | |
17709 List<Type2> expectedArguments = expectedType.typeArguments; | |
17710 int length = expectedArguments.length; | |
17711 List<Type2> actualArguments = actualType.typeArguments; | |
17712 EngineTestCase.assertLength(length, actualArguments); | |
17713 for (int i = 0; i < length; i++) { | |
17714 assertType2(expectedArguments[i], actualArguments[i]); | |
17715 } | |
17716 } | |
17717 void assertType2(Type2 expectedType, Type2 actualType) { | |
17718 if (expectedType is InterfaceTypeImpl) { | |
17719 EngineTestCase.assertInstanceOf(InterfaceTypeImpl, actualType); | |
17720 assertType(expectedType as InterfaceTypeImpl, actualType as InterfaceTypeI
mpl); | |
17721 } | |
17722 } | |
17723 | |
17724 /** | |
17725 * Create the analyzer used by the tests. | |
17726 * | |
17727 * @return the analyzer to be used by the tests | |
17728 */ | |
17729 StaticTypeAnalyzer createAnalyzer() { | |
17730 AnalysisContextImpl context = new AnalysisContextImpl(); | |
17731 SourceFactory sourceFactory = new SourceFactory.con2([new DartUriResolver(Di
rectoryBasedDartSdk.defaultSdk)]); | |
17732 context.sourceFactory = sourceFactory; | |
17733 FileBasedSource source = new FileBasedSource.con1(sourceFactory.contentCache
, FileUtilities2.createFile("/lib.dart")); | |
17734 CompilationUnitElementImpl definingCompilationUnit = new CompilationUnitElem
entImpl("lib.dart"); | |
17735 definingCompilationUnit.source = source; | |
17736 LibraryElementImpl definingLibrary = new LibraryElementImpl(context, null); | |
17737 definingLibrary.definingCompilationUnit = definingCompilationUnit; | |
17738 Library library = new Library(context, _listener, source); | |
17739 library.libraryElement = definingLibrary; | |
17740 _visitor = new ResolverVisitor.con1(library, source, _typeProvider); | |
17741 _visitor.overrideManager.enterScope(); | |
17742 try { | |
17743 return _visitor.typeAnalyzer_J2DAccessor as StaticTypeAnalyzer; | |
17744 } on JavaException catch (exception) { | |
17745 throw new IllegalArgumentException("Could not create analyzer", exception)
; | |
17746 } | |
17747 } | |
17748 | |
17749 /** | |
17750 * Return an integer literal that has been resolved to the correct type. | |
17751 * | |
17752 * @param value the value of the literal | |
17753 * @return an integer literal that has been resolved to the correct type | |
17754 */ | |
17755 DoubleLiteral resolvedDouble(double value) { | |
17756 DoubleLiteral literal = ASTFactory.doubleLiteral(value); | |
17757 literal.staticType = _typeProvider.doubleType; | |
17758 return literal; | |
17759 } | |
17760 | |
17761 /** | |
17762 * Create a function expression that has an element associated with it, where
the element has an | |
17763 * incomplete type associated with it (just like the one | |
17764 * [ElementBuilder#visitFunctionExpression] would have built if we had | |
17765 * run it). | |
17766 * | |
17767 * @param parameters the parameters to the function | |
17768 * @param body the body of the function | |
17769 * @return a resolved function expression | |
17770 */ | |
17771 FunctionExpression resolvedFunctionExpression(FormalParameterList parameters,
FunctionBody body) { | |
17772 List<ParameterElement> parameterElements = new List<ParameterElement>(); | |
17773 for (FormalParameter parameter in parameters.parameters) { | |
17774 ParameterElementImpl element = new ParameterElementImpl.con1(parameter.ide
ntifier); | |
17775 element.parameterKind = parameter.kind; | |
17776 element.type = _typeProvider.dynamicType; | |
17777 parameter.identifier.staticElement = element; | |
17778 parameterElements.add(element); | |
17779 } | |
17780 FunctionExpression node = ASTFactory.functionExpression2(parameters, body); | |
17781 FunctionElementImpl element = new FunctionElementImpl.con1(null); | |
17782 element.parameters = new List.from(parameterElements); | |
17783 element.type = new FunctionTypeImpl.con1(element); | |
17784 node.element = element; | |
17785 return node; | |
17786 } | |
17787 | |
17788 /** | |
17789 * Return an integer literal that has been resolved to the correct type. | |
17790 * | |
17791 * @param value the value of the literal | |
17792 * @return an integer literal that has been resolved to the correct type | |
17793 */ | |
17794 IntegerLiteral resolvedInteger(int value) { | |
17795 IntegerLiteral literal = ASTFactory.integer(value); | |
17796 literal.staticType = _typeProvider.intType; | |
17797 return literal; | |
17798 } | |
17799 | |
17800 /** | |
17801 * Return a string literal that has been resolved to the correct type. | |
17802 * | |
17803 * @param value the value of the literal | |
17804 * @return a string literal that has been resolved to the correct type | |
17805 */ | |
17806 SimpleStringLiteral resolvedString(String value) { | |
17807 SimpleStringLiteral string = ASTFactory.string2(value); | |
17808 string.staticType = _typeProvider.stringType; | |
17809 return string; | |
17810 } | |
17811 | |
17812 /** | |
17813 * Return a simple identifier that has been resolved to a variable element wit
h the given type. | |
17814 * | |
17815 * @param type the type of the variable being represented | |
17816 * @param variableName the name of the variable | |
17817 * @return a simple identifier that has been resolved to a variable element wi
th the given type | |
17818 */ | |
17819 SimpleIdentifier resolvedVariable(InterfaceType type, String variableName) { | |
17820 SimpleIdentifier identifier = ASTFactory.identifier3(variableName); | |
17821 VariableElementImpl element = ElementFactory.localVariableElement(identifier
); | |
17822 element.type = type; | |
17823 identifier.staticElement = element; | |
17824 identifier.staticType = type; | |
17825 return identifier; | |
17826 } | |
17827 | |
17828 /** | |
17829 * Set the type of the given parameter to the given type. | |
17830 * | |
17831 * @param parameter the parameter whose type is to be set | |
17832 * @param type the new type of the given parameter | |
17833 */ | |
17834 void setType(FormalParameter parameter, Type2 type) { | |
17835 SimpleIdentifier identifier = parameter.identifier; | |
17836 Element element = identifier.staticElement; | |
17837 if (element is! ParameterElement) { | |
17838 element = new ParameterElementImpl.con1(identifier); | |
17839 identifier.staticElement = element; | |
17840 } | |
17841 ((element as ParameterElementImpl)).type = type; | |
17842 } | |
17843 static dartSuite() { | |
17844 _ut.group('StaticTypeAnalyzerTest', () { | |
17845 _ut.test('test_visitAdjacentStrings', () { | |
17846 final __test = new StaticTypeAnalyzerTest(); | |
17847 runJUnitTest(__test, __test.test_visitAdjacentStrings); | |
17848 }); | |
17849 _ut.test('test_visitArgumentDefinitionTest', () { | |
17850 final __test = new StaticTypeAnalyzerTest(); | |
17851 runJUnitTest(__test, __test.test_visitArgumentDefinitionTest); | |
17852 }); | |
17853 _ut.test('test_visitAsExpression', () { | |
17854 final __test = new StaticTypeAnalyzerTest(); | |
17855 runJUnitTest(__test, __test.test_visitAsExpression); | |
17856 }); | |
17857 _ut.test('test_visitAssignmentExpression_compound', () { | |
17858 final __test = new StaticTypeAnalyzerTest(); | |
17859 runJUnitTest(__test, __test.test_visitAssignmentExpression_compound); | |
17860 }); | |
17861 _ut.test('test_visitAssignmentExpression_simple', () { | |
17862 final __test = new StaticTypeAnalyzerTest(); | |
17863 runJUnitTest(__test, __test.test_visitAssignmentExpression_simple); | |
17864 }); | |
17865 _ut.test('test_visitBinaryExpression_equals', () { | |
17866 final __test = new StaticTypeAnalyzerTest(); | |
17867 runJUnitTest(__test, __test.test_visitBinaryExpression_equals); | |
17868 }); | |
17869 _ut.test('test_visitBinaryExpression_logicalAnd', () { | |
17870 final __test = new StaticTypeAnalyzerTest(); | |
17871 runJUnitTest(__test, __test.test_visitBinaryExpression_logicalAnd); | |
17872 }); | |
17873 _ut.test('test_visitBinaryExpression_logicalOr', () { | |
17874 final __test = new StaticTypeAnalyzerTest(); | |
17875 runJUnitTest(__test, __test.test_visitBinaryExpression_logicalOr); | |
17876 }); | |
17877 _ut.test('test_visitBinaryExpression_notEquals', () { | |
17878 final __test = new StaticTypeAnalyzerTest(); | |
17879 runJUnitTest(__test, __test.test_visitBinaryExpression_notEquals); | |
17880 }); | |
17881 _ut.test('test_visitBinaryExpression_plusID', () { | |
17882 final __test = new StaticTypeAnalyzerTest(); | |
17883 runJUnitTest(__test, __test.test_visitBinaryExpression_plusID); | |
17884 }); | |
17885 _ut.test('test_visitBinaryExpression_plusII', () { | |
17886 final __test = new StaticTypeAnalyzerTest(); | |
17887 runJUnitTest(__test, __test.test_visitBinaryExpression_plusII); | |
17888 }); | |
17889 _ut.test('test_visitBinaryExpression_slash', () { | |
17890 final __test = new StaticTypeAnalyzerTest(); | |
17891 runJUnitTest(__test, __test.test_visitBinaryExpression_slash); | |
17892 }); | |
17893 _ut.test('test_visitBinaryExpression_starID', () { | |
17894 final __test = new StaticTypeAnalyzerTest(); | |
17895 runJUnitTest(__test, __test.test_visitBinaryExpression_starID); | |
17896 }); | |
17897 _ut.test('test_visitBinaryExpression_star_notSpecial', () { | |
17898 final __test = new StaticTypeAnalyzerTest(); | |
17899 runJUnitTest(__test, __test.test_visitBinaryExpression_star_notSpecial); | |
17900 }); | |
17901 _ut.test('test_visitBooleanLiteral_false', () { | |
17902 final __test = new StaticTypeAnalyzerTest(); | |
17903 runJUnitTest(__test, __test.test_visitBooleanLiteral_false); | |
17904 }); | |
17905 _ut.test('test_visitBooleanLiteral_true', () { | |
17906 final __test = new StaticTypeAnalyzerTest(); | |
17907 runJUnitTest(__test, __test.test_visitBooleanLiteral_true); | |
17908 }); | |
17909 _ut.test('test_visitCascadeExpression', () { | |
17910 final __test = new StaticTypeAnalyzerTest(); | |
17911 runJUnitTest(__test, __test.test_visitCascadeExpression); | |
17912 }); | |
17913 _ut.test('test_visitConditionalExpression_differentTypes', () { | |
17914 final __test = new StaticTypeAnalyzerTest(); | |
17915 runJUnitTest(__test, __test.test_visitConditionalExpression_differentTyp
es); | |
17916 }); | |
17917 _ut.test('test_visitConditionalExpression_sameTypes', () { | |
17918 final __test = new StaticTypeAnalyzerTest(); | |
17919 runJUnitTest(__test, __test.test_visitConditionalExpression_sameTypes); | |
17920 }); | |
17921 _ut.test('test_visitDoubleLiteral', () { | |
17922 final __test = new StaticTypeAnalyzerTest(); | |
17923 runJUnitTest(__test, __test.test_visitDoubleLiteral); | |
17924 }); | |
17925 _ut.test('test_visitFunctionExpression_named_block', () { | |
17926 final __test = new StaticTypeAnalyzerTest(); | |
17927 runJUnitTest(__test, __test.test_visitFunctionExpression_named_block); | |
17928 }); | |
17929 _ut.test('test_visitFunctionExpression_named_expression', () { | |
17930 final __test = new StaticTypeAnalyzerTest(); | |
17931 runJUnitTest(__test, __test.test_visitFunctionExpression_named_expressio
n); | |
17932 }); | |
17933 _ut.test('test_visitFunctionExpression_normalAndNamed_block', () { | |
17934 final __test = new StaticTypeAnalyzerTest(); | |
17935 runJUnitTest(__test, __test.test_visitFunctionExpression_normalAndNamed_
block); | |
17936 }); | |
17937 _ut.test('test_visitFunctionExpression_normalAndNamed_expression', () { | |
17938 final __test = new StaticTypeAnalyzerTest(); | |
17939 runJUnitTest(__test, __test.test_visitFunctionExpression_normalAndNamed_
expression); | |
17940 }); | |
17941 _ut.test('test_visitFunctionExpression_normalAndPositional_block', () { | |
17942 final __test = new StaticTypeAnalyzerTest(); | |
17943 runJUnitTest(__test, __test.test_visitFunctionExpression_normalAndPositi
onal_block); | |
17944 }); | |
17945 _ut.test('test_visitFunctionExpression_normalAndPositional_expression', ()
{ | |
17946 final __test = new StaticTypeAnalyzerTest(); | |
17947 runJUnitTest(__test, __test.test_visitFunctionExpression_normalAndPositi
onal_expression); | |
17948 }); | |
17949 _ut.test('test_visitFunctionExpression_normal_block', () { | |
17950 final __test = new StaticTypeAnalyzerTest(); | |
17951 runJUnitTest(__test, __test.test_visitFunctionExpression_normal_block); | |
17952 }); | |
17953 _ut.test('test_visitFunctionExpression_normal_expression', () { | |
17954 final __test = new StaticTypeAnalyzerTest(); | |
17955 runJUnitTest(__test, __test.test_visitFunctionExpression_normal_expressi
on); | |
17956 }); | |
17957 _ut.test('test_visitFunctionExpression_positional_block', () { | |
17958 final __test = new StaticTypeAnalyzerTest(); | |
17959 runJUnitTest(__test, __test.test_visitFunctionExpression_positional_bloc
k); | |
17960 }); | |
17961 _ut.test('test_visitFunctionExpression_positional_expression', () { | |
17962 final __test = new StaticTypeAnalyzerTest(); | |
17963 runJUnitTest(__test, __test.test_visitFunctionExpression_positional_expr
ession); | |
17964 }); | |
17965 _ut.test('test_visitIndexExpression_getter', () { | |
17966 final __test = new StaticTypeAnalyzerTest(); | |
17967 runJUnitTest(__test, __test.test_visitIndexExpression_getter); | |
17968 }); | |
17969 _ut.test('test_visitIndexExpression_setter', () { | |
17970 final __test = new StaticTypeAnalyzerTest(); | |
17971 runJUnitTest(__test, __test.test_visitIndexExpression_setter); | |
17972 }); | |
17973 _ut.test('test_visitIndexExpression_typeParameters', () { | |
17974 final __test = new StaticTypeAnalyzerTest(); | |
17975 runJUnitTest(__test, __test.test_visitIndexExpression_typeParameters); | |
17976 }); | |
17977 _ut.test('test_visitIndexExpression_typeParameters_inSetterContext', () { | |
17978 final __test = new StaticTypeAnalyzerTest(); | |
17979 runJUnitTest(__test, __test.test_visitIndexExpression_typeParameters_inS
etterContext); | |
17980 }); | |
17981 _ut.test('test_visitInstanceCreationExpression_named', () { | |
17982 final __test = new StaticTypeAnalyzerTest(); | |
17983 runJUnitTest(__test, __test.test_visitInstanceCreationExpression_named); | |
17984 }); | |
17985 _ut.test('test_visitInstanceCreationExpression_typeParameters', () { | |
17986 final __test = new StaticTypeAnalyzerTest(); | |
17987 runJUnitTest(__test, __test.test_visitInstanceCreationExpression_typePar
ameters); | |
17988 }); | |
17989 _ut.test('test_visitInstanceCreationExpression_unnamed', () { | |
17990 final __test = new StaticTypeAnalyzerTest(); | |
17991 runJUnitTest(__test, __test.test_visitInstanceCreationExpression_unnamed
); | |
17992 }); | |
17993 _ut.test('test_visitIntegerLiteral', () { | |
17994 final __test = new StaticTypeAnalyzerTest(); | |
17995 runJUnitTest(__test, __test.test_visitIntegerLiteral); | |
17996 }); | |
17997 _ut.test('test_visitIsExpression_negated', () { | |
17998 final __test = new StaticTypeAnalyzerTest(); | |
17999 runJUnitTest(__test, __test.test_visitIsExpression_negated); | |
18000 }); | |
18001 _ut.test('test_visitIsExpression_notNegated', () { | |
18002 final __test = new StaticTypeAnalyzerTest(); | |
18003 runJUnitTest(__test, __test.test_visitIsExpression_notNegated); | |
18004 }); | |
18005 _ut.test('test_visitListLiteral_empty', () { | |
18006 final __test = new StaticTypeAnalyzerTest(); | |
18007 runJUnitTest(__test, __test.test_visitListLiteral_empty); | |
18008 }); | |
18009 _ut.test('test_visitListLiteral_nonEmpty', () { | |
18010 final __test = new StaticTypeAnalyzerTest(); | |
18011 runJUnitTest(__test, __test.test_visitListLiteral_nonEmpty); | |
18012 }); | |
18013 _ut.test('test_visitMapLiteral_empty', () { | |
18014 final __test = new StaticTypeAnalyzerTest(); | |
18015 runJUnitTest(__test, __test.test_visitMapLiteral_empty); | |
18016 }); | |
18017 _ut.test('test_visitMapLiteral_nonEmpty', () { | |
18018 final __test = new StaticTypeAnalyzerTest(); | |
18019 runJUnitTest(__test, __test.test_visitMapLiteral_nonEmpty); | |
18020 }); | |
18021 _ut.test('test_visitMethodInvocation_then', () { | |
18022 final __test = new StaticTypeAnalyzerTest(); | |
18023 runJUnitTest(__test, __test.test_visitMethodInvocation_then); | |
18024 }); | |
18025 _ut.test('test_visitNamedExpression', () { | |
18026 final __test = new StaticTypeAnalyzerTest(); | |
18027 runJUnitTest(__test, __test.test_visitNamedExpression); | |
18028 }); | |
18029 _ut.test('test_visitNullLiteral', () { | |
18030 final __test = new StaticTypeAnalyzerTest(); | |
18031 runJUnitTest(__test, __test.test_visitNullLiteral); | |
18032 }); | |
18033 _ut.test('test_visitParenthesizedExpression', () { | |
18034 final __test = new StaticTypeAnalyzerTest(); | |
18035 runJUnitTest(__test, __test.test_visitParenthesizedExpression); | |
18036 }); | |
18037 _ut.test('test_visitPostfixExpression_minusMinus', () { | |
18038 final __test = new StaticTypeAnalyzerTest(); | |
18039 runJUnitTest(__test, __test.test_visitPostfixExpression_minusMinus); | |
18040 }); | |
18041 _ut.test('test_visitPostfixExpression_plusPlus', () { | |
18042 final __test = new StaticTypeAnalyzerTest(); | |
18043 runJUnitTest(__test, __test.test_visitPostfixExpression_plusPlus); | |
18044 }); | |
18045 _ut.test('test_visitPrefixExpression_bang', () { | |
18046 final __test = new StaticTypeAnalyzerTest(); | |
18047 runJUnitTest(__test, __test.test_visitPrefixExpression_bang); | |
18048 }); | |
18049 _ut.test('test_visitPrefixExpression_minus', () { | |
18050 final __test = new StaticTypeAnalyzerTest(); | |
18051 runJUnitTest(__test, __test.test_visitPrefixExpression_minus); | |
18052 }); | |
18053 _ut.test('test_visitPrefixExpression_minusMinus', () { | |
18054 final __test = new StaticTypeAnalyzerTest(); | |
18055 runJUnitTest(__test, __test.test_visitPrefixExpression_minusMinus); | |
18056 }); | |
18057 _ut.test('test_visitPrefixExpression_not', () { | |
18058 final __test = new StaticTypeAnalyzerTest(); | |
18059 runJUnitTest(__test, __test.test_visitPrefixExpression_not); | |
18060 }); | |
18061 _ut.test('test_visitPrefixExpression_plusPlus', () { | |
18062 final __test = new StaticTypeAnalyzerTest(); | |
18063 runJUnitTest(__test, __test.test_visitPrefixExpression_plusPlus); | |
18064 }); | |
18065 _ut.test('test_visitPrefixExpression_tilde', () { | |
18066 final __test = new StaticTypeAnalyzerTest(); | |
18067 runJUnitTest(__test, __test.test_visitPrefixExpression_tilde); | |
18068 }); | |
18069 _ut.test('test_visitPrefixedIdentifier_getter', () { | |
18070 final __test = new StaticTypeAnalyzerTest(); | |
18071 runJUnitTest(__test, __test.test_visitPrefixedIdentifier_getter); | |
18072 }); | |
18073 _ut.test('test_visitPrefixedIdentifier_setter', () { | |
18074 final __test = new StaticTypeAnalyzerTest(); | |
18075 runJUnitTest(__test, __test.test_visitPrefixedIdentifier_setter); | |
18076 }); | |
18077 _ut.test('test_visitPrefixedIdentifier_variable', () { | |
18078 final __test = new StaticTypeAnalyzerTest(); | |
18079 runJUnitTest(__test, __test.test_visitPrefixedIdentifier_variable); | |
18080 }); | |
18081 _ut.test('test_visitPropertyAccess_getter', () { | |
18082 final __test = new StaticTypeAnalyzerTest(); | |
18083 runJUnitTest(__test, __test.test_visitPropertyAccess_getter); | |
18084 }); | |
18085 _ut.test('test_visitPropertyAccess_setter', () { | |
18086 final __test = new StaticTypeAnalyzerTest(); | |
18087 runJUnitTest(__test, __test.test_visitPropertyAccess_setter); | |
18088 }); | |
18089 _ut.test('test_visitSimpleStringLiteral', () { | |
18090 final __test = new StaticTypeAnalyzerTest(); | |
18091 runJUnitTest(__test, __test.test_visitSimpleStringLiteral); | |
18092 }); | |
18093 _ut.test('test_visitStringInterpolation', () { | |
18094 final __test = new StaticTypeAnalyzerTest(); | |
18095 runJUnitTest(__test, __test.test_visitStringInterpolation); | |
18096 }); | |
18097 _ut.test('test_visitSuperExpression', () { | |
18098 final __test = new StaticTypeAnalyzerTest(); | |
18099 runJUnitTest(__test, __test.test_visitSuperExpression); | |
18100 }); | |
18101 _ut.test('test_visitSymbolLiteral', () { | |
18102 final __test = new StaticTypeAnalyzerTest(); | |
18103 runJUnitTest(__test, __test.test_visitSymbolLiteral); | |
18104 }); | |
18105 _ut.test('test_visitThisExpression', () { | |
18106 final __test = new StaticTypeAnalyzerTest(); | |
18107 runJUnitTest(__test, __test.test_visitThisExpression); | |
18108 }); | |
18109 _ut.test('test_visitThrowExpression_withValue', () { | |
18110 final __test = new StaticTypeAnalyzerTest(); | |
18111 runJUnitTest(__test, __test.test_visitThrowExpression_withValue); | |
18112 }); | |
18113 _ut.test('test_visitThrowExpression_withoutValue', () { | |
18114 final __test = new StaticTypeAnalyzerTest(); | |
18115 runJUnitTest(__test, __test.test_visitThrowExpression_withoutValue); | |
18116 }); | |
18117 }); | |
18118 } | |
18119 } | |
18120 class NonHintCodeTest extends ResolverTestCase { | |
18121 void test_deadCode_deadBlock_conditionalElse_debugConst() { | |
18122 Source source = addSource(EngineTestCase.createSource([ | |
18123 "const bool DEBUG = true;", | |
18124 "f() {", | |
18125 " DEBUG ? 1 : 2;", | |
18126 "}"])); | |
18127 resolve(source); | |
18128 assertNoErrors(source); | |
18129 verify([source]); | |
18130 } | |
18131 void test_deadCode_deadBlock_conditionalIf_debugConst() { | |
18132 Source source = addSource(EngineTestCase.createSource([ | |
18133 "const bool DEBUG = false;", | |
18134 "f() {", | |
18135 " DEBUG ? 1 : 2;", | |
18136 "}"])); | |
18137 resolve(source); | |
18138 assertNoErrors(source); | |
18139 verify([source]); | |
18140 } | |
18141 void test_deadCode_deadBlock_else() { | |
18142 Source source = addSource(EngineTestCase.createSource([ | |
18143 "const bool DEBUG = true;", | |
18144 "f() {", | |
18145 " if(DEBUG) {} else {}", | |
18146 "}"])); | |
18147 resolve(source); | |
18148 assertNoErrors(source); | |
18149 verify([source]); | |
18150 } | |
18151 void test_deadCode_deadBlock_if_debugConst_prefixedIdentifier() { | |
18152 Source source = addSource(EngineTestCase.createSource([ | |
18153 "class A {", | |
18154 " static const bool DEBUG = false;", | |
18155 "}", | |
18156 "f() {", | |
18157 " if(A.DEBUG) {}", | |
18158 "}"])); | |
18159 resolve(source); | |
18160 assertNoErrors(source); | |
18161 verify([source]); | |
18162 } | |
18163 void test_deadCode_deadBlock_if_debugConst_prefixedIdentifier2() { | |
18164 Source source = addSource(EngineTestCase.createSource([ | |
18165 "library L;", | |
18166 "import 'lib2.dart';", | |
18167 "f() {", | |
18168 " if(A.DEBUG) {}", | |
18169 "}"])); | |
18170 addSource2("/lib2.dart", EngineTestCase.createSource([ | |
18171 "library lib2;", | |
18172 "class A {", | |
18173 " static const bool DEBUG = false;", | |
18174 "}"])); | |
18175 resolve(source); | |
18176 assertNoErrors(source); | |
18177 verify([source]); | |
18178 } | |
18179 void test_deadCode_deadBlock_if_debugConst_propertyAccessor() { | |
18180 Source source = addSource(EngineTestCase.createSource([ | |
18181 "library L;", | |
18182 "import 'lib2.dart' as LIB;", | |
18183 "f() {", | |
18184 " if(LIB.A.DEBUG) {}", | |
18185 "}"])); | |
18186 addSource2("/lib2.dart", EngineTestCase.createSource([ | |
18187 "library lib2;", | |
18188 "class A {", | |
18189 " static const bool DEBUG = false;", | |
18190 "}"])); | |
18191 resolve(source); | |
18192 assertNoErrors(source); | |
18193 verify([source]); | |
18194 } | |
18195 void test_deadCode_deadBlock_if_debugConst_simpleIdentifier() { | |
18196 Source source = addSource(EngineTestCase.createSource([ | |
18197 "const bool DEBUG = false;", | |
18198 "f() {", | |
18199 " if(DEBUG) {}", | |
18200 "}"])); | |
18201 resolve(source); | |
18202 assertNoErrors(source); | |
18203 verify([source]); | |
18204 } | |
18205 void test_deadCode_deadBlock_while_debugConst() { | |
18206 Source source = addSource(EngineTestCase.createSource([ | |
18207 "const bool DEBUG = false;", | |
18208 "f() {", | |
18209 " while(DEBUG) {}", | |
18210 "}"])); | |
18211 resolve(source); | |
18212 assertNoErrors(source); | |
18213 verify([source]); | |
18214 } | |
18215 void test_deadCode_deadCatch_onCatchSubtype() { | |
18216 Source source = addSource(EngineTestCase.createSource([ | |
18217 "class A {}", | |
18218 "class B extends A {}", | |
18219 "f() {", | |
18220 " try {} on B catch (e) {} on A catch (e) {} catch (e) {}", | |
18221 "}"])); | |
18222 resolve(source); | |
18223 assertNoErrors(source); | |
18224 verify([source]); | |
18225 } | |
18226 void test_deadCode_deadOperandLHS_and_debugConst() { | |
18227 Source source = addSource(EngineTestCase.createSource([ | |
18228 "const bool DEBUG = false;", | |
18229 "f() {", | |
18230 " bool b = DEBUG && false;", | |
18231 "}"])); | |
18232 resolve(source); | |
18233 assertNoErrors(source); | |
18234 verify([source]); | |
18235 } | |
18236 void test_deadCode_deadOperandLHS_or_debugConst() { | |
18237 Source source = addSource(EngineTestCase.createSource([ | |
18238 "const bool DEBUG = true;", | |
18239 "f() {", | |
18240 " bool b = DEBUG || true;", | |
18241 "}"])); | |
18242 resolve(source); | |
18243 assertNoErrors(source); | |
18244 verify([source]); | |
18245 } | |
18246 void test_divisionOptimization() { | |
18247 Source source = addSource(EngineTestCase.createSource(["f(int x, int y) {",
" var v = x / y.toInt();", "}"])); | |
18248 resolve(source); | |
18249 assertNoErrors(source); | |
18250 verify([source]); | |
18251 } | |
18252 void test_divisionOptimization_supressIfDivisionNotDefinedInCore() { | |
18253 Source source = addSource(EngineTestCase.createSource(["f(x, y) {", " var v
= (x / y).toInt();", "}"])); | |
18254 resolve(source); | |
18255 assertNoErrors(source); | |
18256 verify([source]); | |
18257 } | |
18258 void test_divisionOptimization_supressIfDivisionOverridden() { | |
18259 Source source = addSource(EngineTestCase.createSource([ | |
18260 "class A {", | |
18261 " num operator /(x) {}", | |
18262 "}", | |
18263 "f(A x, A y) {", | |
18264 " var v = (x / y).toInt();", | |
18265 "}"])); | |
18266 resolve(source); | |
18267 assertNoErrors(source); | |
18268 verify([source]); | |
18269 } | |
18270 void test_duplicateImport_as() { | |
18271 Source source = addSource(EngineTestCase.createSource([ | |
18272 "library L;", | |
18273 "import 'lib1.dart';", | |
18274 "import 'lib1.dart' as one;", | |
18275 "A a;", | |
18276 "one.A a2;"])); | |
18277 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}"])); | |
18278 resolve(source); | |
18279 assertNoErrors(source); | |
18280 verify([source]); | |
18281 } | |
18282 void test_duplicateImport_hide() { | |
18283 Source source = addSource(EngineTestCase.createSource([ | |
18284 "library L;", | |
18285 "import 'lib1.dart';", | |
18286 "import 'lib1.dart' hide A;", | |
18287 "A a;", | |
18288 "B b;"])); | |
18289 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}", "class B {}"])); | |
18290 resolve(source); | |
18291 assertNoErrors(source); | |
18292 verify([source]); | |
18293 } | |
18294 void test_duplicateImport_show() { | |
18295 Source source = addSource(EngineTestCase.createSource([ | |
18296 "library L;", | |
18297 "import 'lib1.dart';", | |
18298 "import 'lib1.dart' show A;", | |
18299 "A a;", | |
18300 "B b;"])); | |
18301 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s A {}", "class B {}"])); | |
18302 resolve(source); | |
18303 assertNoErrors(source); | |
18304 verify([source]); | |
18305 } | |
18306 void test_overriddingPrivateMember_sameLibrary() { | |
18307 Source source = addSource(EngineTestCase.createSource([ | |
18308 "class A {", | |
18309 " _m(int x) => 0;", | |
18310 "}", | |
18311 "class B extends A {", | |
18312 " _m(int x) => 0;", | |
18313 "}"])); | |
18314 resolve(source); | |
18315 assertNoErrors(source); | |
18316 verify([source]); | |
18317 } | |
18318 void test_overrideEqualsButNotHashCode() { | |
18319 Source source = addSource(EngineTestCase.createSource([ | |
18320 "class A {", | |
18321 " bool operator ==(x) {}", | |
18322 " get hashCode => 0;", | |
18323 "}"])); | |
18324 resolve(source); | |
18325 assertNoErrors(source); | |
18326 verify([source]); | |
18327 } | |
18328 void test_proxy_annotation_prefixed() { | |
18329 Source source = addSource(EngineTestCase.createSource([ | |
18330 "library L;", | |
18331 "import 'meta.dart';", | |
18332 "@proxy", | |
18333 "class A {}", | |
18334 "f(var a) {", | |
18335 " a = new A();", | |
18336 " a.m();", | |
18337 " var x = a.g;", | |
18338 " a.s = 1;", | |
18339 " var y = a + a;", | |
18340 " a++;", | |
18341 " ++a;", | |
18342 "}"])); | |
18343 addSource2("/meta.dart", EngineTestCase.createSource([ | |
18344 "library meta;", | |
18345 "const proxy = const _Proxy();", | |
18346 "class _Proxy { const _Proxy(); }"])); | |
18347 resolve(source); | |
18348 assertNoErrors(source); | |
18349 } | |
18350 void test_proxy_annotation_prefixed2() { | |
18351 Source source = addSource(EngineTestCase.createSource([ | |
18352 "library L;", | |
18353 "import 'meta.dart';", | |
18354 "@proxy", | |
18355 "class A {}", | |
18356 "class B {", | |
18357 " f(var a) {", | |
18358 " a = new A();", | |
18359 " a.m();", | |
18360 " var x = a.g;", | |
18361 " a.s = 1;", | |
18362 " var y = a + a;", | |
18363 " a++;", | |
18364 " ++a;", | |
18365 " }", | |
18366 "}"])); | |
18367 addSource2("/meta.dart", EngineTestCase.createSource([ | |
18368 "library meta;", | |
18369 "const proxy = const _Proxy();", | |
18370 "class _Proxy { const _Proxy(); }"])); | |
18371 resolve(source); | |
18372 assertNoErrors(source); | |
18373 } | |
18374 void test_proxy_annotation_prefixed3() { | |
18375 Source source = addSource(EngineTestCase.createSource([ | |
18376 "library L;", | |
18377 "import 'meta.dart';", | |
18378 "class B {", | |
18379 " f(var a) {", | |
18380 " a = new A();", | |
18381 " a.m();", | |
18382 " var x = a.g;", | |
18383 " a.s = 1;", | |
18384 " var y = a + a;", | |
18385 " a++;", | |
18386 " ++a;", | |
18387 " }", | |
18388 "}", | |
18389 "@proxy", | |
18390 "class A {}"])); | |
18391 addSource2("/meta.dart", EngineTestCase.createSource([ | |
18392 "library meta;", | |
18393 "const proxy = const _Proxy();", | |
18394 "class _Proxy { const _Proxy(); }"])); | |
18395 resolve(source); | |
18396 assertNoErrors(source); | |
18397 } | |
18398 void test_undefinedGetter_inSubtype() { | |
18399 Source source = addSource(EngineTestCase.createSource([ | |
18400 "class A {}", | |
18401 "class B extends A {", | |
18402 " get b => 0;", | |
18403 "}", | |
18404 "f(var a) {", | |
18405 " if(a is A) {", | |
18406 " return a.b;", | |
18407 " }", | |
18408 "}"])); | |
18409 resolve(source); | |
18410 assertNoErrors(source); | |
18411 } | |
18412 void test_undefinedMethod_assignmentExpression_inSubtype() { | |
18413 Source source = addSource(EngineTestCase.createSource([ | |
18414 "class A {}", | |
18415 "class B extends A {", | |
18416 " operator +(B b) {return new B();}", | |
18417 "}", | |
18418 "f(var a, var a2) {", | |
18419 " a = new A();", | |
18420 " a2 = new A();", | |
18421 " a += a2;", | |
18422 "}"])); | |
18423 resolve(source); | |
18424 assertNoErrors(source); | |
18425 } | |
18426 void test_undefinedMethod_inSubtype() { | |
18427 Source source = addSource(EngineTestCase.createSource([ | |
18428 "class A {}", | |
18429 "class B extends A {", | |
18430 " b() {}", | |
18431 "}", | |
18432 "f() {", | |
18433 " var a = new A();", | |
18434 " a.b();", | |
18435 "}"])); | |
18436 resolve(source); | |
18437 assertNoErrors(source); | |
18438 } | |
18439 void test_undefinedOperator_binaryExpression_inSubtype() { | |
18440 Source source = addSource(EngineTestCase.createSource([ | |
18441 "class A {}", | |
18442 "class B extends A {", | |
18443 " operator +(B b) {}", | |
18444 "}", | |
18445 "f(var a) {", | |
18446 " if(a is A) {", | |
18447 " a + 1;", | |
18448 " }", | |
18449 "}"])); | |
18450 resolve(source); | |
18451 assertNoErrors(source); | |
18452 } | |
18453 void test_undefinedOperator_indexBoth_inSubtype() { | |
18454 Source source = addSource(EngineTestCase.createSource([ | |
18455 "class A {}", | |
18456 "class B extends A {", | |
18457 " operator [](int index) {}", | |
18458 "}", | |
18459 "f(var a) {", | |
18460 " if(a is A) {", | |
18461 " a[0]++;", | |
18462 " }", | |
18463 "}"])); | |
18464 resolve(source); | |
18465 assertNoErrors(source); | |
18466 } | |
18467 void test_undefinedOperator_indexGetter_inSubtype() { | |
18468 Source source = addSource(EngineTestCase.createSource([ | |
18469 "class A {}", | |
18470 "class B extends A {", | |
18471 " operator [](int index) {}", | |
18472 "}", | |
18473 "f(var a) {", | |
18474 " if(a is A) {", | |
18475 " a[0];", | |
18476 " }", | |
18477 "}"])); | |
18478 resolve(source); | |
18479 assertNoErrors(source); | |
18480 } | |
18481 void test_undefinedOperator_indexSetter_inSubtype() { | |
18482 Source source = addSource(EngineTestCase.createSource([ | |
18483 "class A {}", | |
18484 "class B extends A {", | |
18485 " operator []=(i, v) {}", | |
18486 "}", | |
18487 "f(var a) {", | |
18488 " if(a is A) {", | |
18489 " a[0] = 1;", | |
18490 " }", | |
18491 "}"])); | |
18492 resolve(source); | |
18493 assertNoErrors(source); | |
18494 } | |
18495 void test_undefinedOperator_postfixExpression() { | |
18496 Source source = addSource(EngineTestCase.createSource([ | |
18497 "class A {}", | |
18498 "class B extends A {", | |
18499 " operator +(B b) {return new B();}", | |
18500 "}", | |
18501 "f(var a) {", | |
18502 " if(a is A) {", | |
18503 " a++;", | |
18504 " }", | |
18505 "}"])); | |
18506 resolve(source); | |
18507 assertNoErrors(source); | |
18508 } | |
18509 void test_undefinedOperator_prefixExpression() { | |
18510 Source source = addSource(EngineTestCase.createSource([ | |
18511 "class A {}", | |
18512 "class B extends A {", | |
18513 " operator +(B b) {return new B();}", | |
18514 "}", | |
18515 "f(var a) {", | |
18516 " if(a is A) {", | |
18517 " ++a;", | |
18518 " }", | |
18519 "}"])); | |
18520 resolve(source); | |
18521 assertNoErrors(source); | |
18522 } | |
18523 void test_undefinedSetter_inSubtype() { | |
18524 Source source = addSource(EngineTestCase.createSource([ | |
18525 "class A {}", | |
18526 "class B extends A {", | |
18527 " set b(x) {}", | |
18528 "}", | |
18529 "f(var a) {", | |
18530 " if(a is A) {", | |
18531 " a.b = 0;", | |
18532 " }", | |
18533 "}"])); | |
18534 resolve(source); | |
18535 assertNoErrors(source); | |
18536 } | |
18537 void test_unnecessaryCast_13855_parameter_A() { | |
18538 Source source = addSource(EngineTestCase.createSource([ | |
18539 "class A{", | |
18540 " a() {}", | |
18541 "}", | |
18542 "class B<E> {", | |
18543 " E e;", | |
18544 " m() {", | |
18545 " (e as A).a();", | |
18546 " }", | |
18547 "}"])); | |
18548 resolve(source); | |
18549 assertNoErrors(source); | |
18550 verify([source]); | |
18551 } | |
18552 void test_unnecessaryCast_dynamic_type() { | |
18553 Source source = addSource(EngineTestCase.createSource(["m(v) {", " var b =
v as Object;", "}"])); | |
18554 resolve(source); | |
18555 assertNoErrors(source); | |
18556 verify([source]); | |
18557 } | |
18558 void test_unnecessaryCast_type_dynamic() { | |
18559 Source source = addSource(EngineTestCase.createSource(["m(v) {", " var b =
Object as dynamic;", "}"])); | |
18560 resolve(source); | |
18561 assertNoErrors(source); | |
18562 verify([source]); | |
18563 } | |
18564 void test_unusedImport_annotationOnDirective() { | |
18565 Source source = addSource(EngineTestCase.createSource(["library L;", "@A()",
"import 'lib1.dart';"])); | |
18566 Source source2 = addSource2("/lib1.dart", EngineTestCase.createSource(["libr
ary lib1;", "class A {", " const A() {}", "}"])); | |
18567 resolve(source); | |
18568 assertErrors(source, []); | |
18569 verify([source, source2]); | |
18570 } | |
18571 void test_unusedImport_core_library() { | |
18572 Source source = addSource(EngineTestCase.createSource(["library L;", "import
'dart:core';"])); | |
18573 resolve(source); | |
18574 assertNoErrors(source); | |
18575 verify([source]); | |
18576 } | |
18577 void test_unusedImport_export() { | |
18578 Source source = addSource(EngineTestCase.createSource(["library L;", "import
'lib1.dart';", "Two two;"])); | |
18579 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "expo
rt 'lib2.dart';", "class One {}"])); | |
18580 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "clas
s Two {}"])); | |
18581 resolve(source); | |
18582 assertNoErrors(source); | |
18583 verify([source]); | |
18584 } | |
18585 void test_unusedImport_export_infiniteLoop() { | |
18586 Source source = addSource(EngineTestCase.createSource(["library L;", "import
'lib1.dart';", "Two two;"])); | |
18587 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "expo
rt 'lib2.dart';", "class One {}"])); | |
18588 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "expo
rt 'lib3.dart';", "class Two {}"])); | |
18589 addSource2("/lib3.dart", EngineTestCase.createSource(["library lib3;", "expo
rt 'lib2.dart';", "class Three {}"])); | |
18590 resolve(source); | |
18591 assertNoErrors(source); | |
18592 verify([source]); | |
18593 } | |
18594 void test_unusedImport_export2() { | |
18595 Source source = addSource(EngineTestCase.createSource(["library L;", "import
'lib1.dart';", "Three three;"])); | |
18596 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "expo
rt 'lib2.dart';", "class One {}"])); | |
18597 addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "expo
rt 'lib3.dart';", "class Two {}"])); | |
18598 addSource2("/lib3.dart", EngineTestCase.createSource(["library lib3;", "clas
s Three {}"])); | |
18599 resolve(source); | |
18600 assertNoErrors(source); | |
18601 verify([source]); | |
18602 } | |
18603 void test_unusedImport_prefix_topLevelFunction() { | |
18604 Source source = addSource(EngineTestCase.createSource([ | |
18605 "library L;", | |
18606 "import 'lib1.dart' hide topLevelFunction;", | |
18607 "import 'lib1.dart' as one show topLevelFunction;", | |
18608 "class A {", | |
18609 " static void x() {", | |
18610 " One o;", | |
18611 " one.topLevelFunction();", | |
18612 " }", | |
18613 "}"])); | |
18614 addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "clas
s One {}", "topLevelFunction() {}"])); | |
18615 resolve(source); | |
18616 assertNoErrors(source); | |
18617 verify([source]); | |
18618 } | |
18619 static dartSuite() { | |
18620 _ut.group('NonHintCodeTest', () { | |
18621 _ut.test('test_deadCode_deadBlock_conditionalElse_debugConst', () { | |
18622 final __test = new NonHintCodeTest(); | |
18623 runJUnitTest(__test, __test.test_deadCode_deadBlock_conditionalElse_debu
gConst); | |
18624 }); | |
18625 _ut.test('test_deadCode_deadBlock_conditionalIf_debugConst', () { | |
18626 final __test = new NonHintCodeTest(); | |
18627 runJUnitTest(__test, __test.test_deadCode_deadBlock_conditionalIf_debugC
onst); | |
18628 }); | |
18629 _ut.test('test_deadCode_deadBlock_else', () { | |
18630 final __test = new NonHintCodeTest(); | |
18631 runJUnitTest(__test, __test.test_deadCode_deadBlock_else); | |
18632 }); | |
18633 _ut.test('test_deadCode_deadBlock_if_debugConst_prefixedIdentifier', () { | |
18634 final __test = new NonHintCodeTest(); | |
18635 runJUnitTest(__test, __test.test_deadCode_deadBlock_if_debugConst_prefix
edIdentifier); | |
18636 }); | |
18637 _ut.test('test_deadCode_deadBlock_if_debugConst_prefixedIdentifier2', () { | |
18638 final __test = new NonHintCodeTest(); | |
18639 runJUnitTest(__test, __test.test_deadCode_deadBlock_if_debugConst_prefix
edIdentifier2); | |
18640 }); | |
18641 _ut.test('test_deadCode_deadBlock_if_debugConst_propertyAccessor', () { | |
18642 final __test = new NonHintCodeTest(); | |
18643 runJUnitTest(__test, __test.test_deadCode_deadBlock_if_debugConst_proper
tyAccessor); | |
18644 }); | |
18645 _ut.test('test_deadCode_deadBlock_if_debugConst_simpleIdentifier', () { | |
18646 final __test = new NonHintCodeTest(); | |
18647 runJUnitTest(__test, __test.test_deadCode_deadBlock_if_debugConst_simple
Identifier); | |
18648 }); | |
18649 _ut.test('test_deadCode_deadBlock_while_debugConst', () { | |
18650 final __test = new NonHintCodeTest(); | |
18651 runJUnitTest(__test, __test.test_deadCode_deadBlock_while_debugConst); | |
18652 }); | |
18653 _ut.test('test_deadCode_deadCatch_onCatchSubtype', () { | |
18654 final __test = new NonHintCodeTest(); | |
18655 runJUnitTest(__test, __test.test_deadCode_deadCatch_onCatchSubtype); | |
18656 }); | |
18657 _ut.test('test_deadCode_deadOperandLHS_and_debugConst', () { | |
18658 final __test = new NonHintCodeTest(); | |
18659 runJUnitTest(__test, __test.test_deadCode_deadOperandLHS_and_debugConst)
; | |
18660 }); | |
18661 _ut.test('test_deadCode_deadOperandLHS_or_debugConst', () { | |
18662 final __test = new NonHintCodeTest(); | |
18663 runJUnitTest(__test, __test.test_deadCode_deadOperandLHS_or_debugConst); | |
18664 }); | |
18665 _ut.test('test_divisionOptimization', () { | |
18666 final __test = new NonHintCodeTest(); | |
18667 runJUnitTest(__test, __test.test_divisionOptimization); | |
18668 }); | |
18669 _ut.test('test_divisionOptimization_supressIfDivisionNotDefinedInCore', ()
{ | |
18670 final __test = new NonHintCodeTest(); | |
18671 runJUnitTest(__test, __test.test_divisionOptimization_supressIfDivisionN
otDefinedInCore); | |
18672 }); | |
18673 _ut.test('test_divisionOptimization_supressIfDivisionOverridden', () { | |
18674 final __test = new NonHintCodeTest(); | |
18675 runJUnitTest(__test, __test.test_divisionOptimization_supressIfDivisionO
verridden); | |
18676 }); | |
18677 _ut.test('test_duplicateImport_as', () { | |
18678 final __test = new NonHintCodeTest(); | |
18679 runJUnitTest(__test, __test.test_duplicateImport_as); | |
18680 }); | |
18681 _ut.test('test_duplicateImport_hide', () { | |
18682 final __test = new NonHintCodeTest(); | |
18683 runJUnitTest(__test, __test.test_duplicateImport_hide); | |
18684 }); | |
18685 _ut.test('test_duplicateImport_show', () { | |
18686 final __test = new NonHintCodeTest(); | |
18687 runJUnitTest(__test, __test.test_duplicateImport_show); | |
18688 }); | |
18689 _ut.test('test_overriddingPrivateMember_sameLibrary', () { | |
18690 final __test = new NonHintCodeTest(); | |
18691 runJUnitTest(__test, __test.test_overriddingPrivateMember_sameLibrary); | |
18692 }); | |
18693 _ut.test('test_overrideEqualsButNotHashCode', () { | |
18694 final __test = new NonHintCodeTest(); | |
18695 runJUnitTest(__test, __test.test_overrideEqualsButNotHashCode); | |
18696 }); | |
18697 _ut.test('test_proxy_annotation_prefixed', () { | |
18698 final __test = new NonHintCodeTest(); | |
18699 runJUnitTest(__test, __test.test_proxy_annotation_prefixed); | |
18700 }); | |
18701 _ut.test('test_proxy_annotation_prefixed2', () { | |
18702 final __test = new NonHintCodeTest(); | |
18703 runJUnitTest(__test, __test.test_proxy_annotation_prefixed2); | |
18704 }); | |
18705 _ut.test('test_proxy_annotation_prefixed3', () { | |
18706 final __test = new NonHintCodeTest(); | |
18707 runJUnitTest(__test, __test.test_proxy_annotation_prefixed3); | |
18708 }); | |
18709 _ut.test('test_undefinedGetter_inSubtype', () { | |
18710 final __test = new NonHintCodeTest(); | |
18711 runJUnitTest(__test, __test.test_undefinedGetter_inSubtype); | |
18712 }); | |
18713 _ut.test('test_undefinedMethod_assignmentExpression_inSubtype', () { | |
18714 final __test = new NonHintCodeTest(); | |
18715 runJUnitTest(__test, __test.test_undefinedMethod_assignmentExpression_in
Subtype); | |
18716 }); | |
18717 _ut.test('test_undefinedMethod_inSubtype', () { | |
18718 final __test = new NonHintCodeTest(); | |
18719 runJUnitTest(__test, __test.test_undefinedMethod_inSubtype); | |
18720 }); | |
18721 _ut.test('test_undefinedOperator_binaryExpression_inSubtype', () { | |
18722 final __test = new NonHintCodeTest(); | |
18723 runJUnitTest(__test, __test.test_undefinedOperator_binaryExpression_inSu
btype); | |
18724 }); | |
18725 _ut.test('test_undefinedOperator_indexBoth_inSubtype', () { | |
18726 final __test = new NonHintCodeTest(); | |
18727 runJUnitTest(__test, __test.test_undefinedOperator_indexBoth_inSubtype); | |
18728 }); | |
18729 _ut.test('test_undefinedOperator_indexGetter_inSubtype', () { | |
18730 final __test = new NonHintCodeTest(); | |
18731 runJUnitTest(__test, __test.test_undefinedOperator_indexGetter_inSubtype
); | |
18732 }); | |
18733 _ut.test('test_undefinedOperator_indexSetter_inSubtype', () { | |
18734 final __test = new NonHintCodeTest(); | |
18735 runJUnitTest(__test, __test.test_undefinedOperator_indexSetter_inSubtype
); | |
18736 }); | |
18737 _ut.test('test_undefinedOperator_postfixExpression', () { | |
18738 final __test = new NonHintCodeTest(); | |
18739 runJUnitTest(__test, __test.test_undefinedOperator_postfixExpression); | |
18740 }); | |
18741 _ut.test('test_undefinedOperator_prefixExpression', () { | |
18742 final __test = new NonHintCodeTest(); | |
18743 runJUnitTest(__test, __test.test_undefinedOperator_prefixExpression); | |
18744 }); | |
18745 _ut.test('test_undefinedSetter_inSubtype', () { | |
18746 final __test = new NonHintCodeTest(); | |
18747 runJUnitTest(__test, __test.test_undefinedSetter_inSubtype); | |
18748 }); | |
18749 _ut.test('test_unnecessaryCast_13855_parameter_A', () { | |
18750 final __test = new NonHintCodeTest(); | |
18751 runJUnitTest(__test, __test.test_unnecessaryCast_13855_parameter_A); | |
18752 }); | |
18753 _ut.test('test_unnecessaryCast_dynamic_type', () { | |
18754 final __test = new NonHintCodeTest(); | |
18755 runJUnitTest(__test, __test.test_unnecessaryCast_dynamic_type); | |
18756 }); | |
18757 _ut.test('test_unnecessaryCast_type_dynamic', () { | |
18758 final __test = new NonHintCodeTest(); | |
18759 runJUnitTest(__test, __test.test_unnecessaryCast_type_dynamic); | |
18760 }); | |
18761 _ut.test('test_unusedImport_annotationOnDirective', () { | |
18762 final __test = new NonHintCodeTest(); | |
18763 runJUnitTest(__test, __test.test_unusedImport_annotationOnDirective); | |
18764 }); | |
18765 _ut.test('test_unusedImport_core_library', () { | |
18766 final __test = new NonHintCodeTest(); | |
18767 runJUnitTest(__test, __test.test_unusedImport_core_library); | |
18768 }); | |
18769 _ut.test('test_unusedImport_export', () { | |
18770 final __test = new NonHintCodeTest(); | |
18771 runJUnitTest(__test, __test.test_unusedImport_export); | |
18772 }); | |
18773 _ut.test('test_unusedImport_export2', () { | |
18774 final __test = new NonHintCodeTest(); | |
18775 runJUnitTest(__test, __test.test_unusedImport_export2); | |
18776 }); | |
18777 _ut.test('test_unusedImport_export_infiniteLoop', () { | |
18778 final __test = new NonHintCodeTest(); | |
18779 runJUnitTest(__test, __test.test_unusedImport_export_infiniteLoop); | |
18780 }); | |
18781 _ut.test('test_unusedImport_prefix_topLevelFunction', () { | |
18782 final __test = new NonHintCodeTest(); | |
18783 runJUnitTest(__test, __test.test_unusedImport_prefix_topLevelFunction); | |
18784 }); | |
18785 }); | |
18786 } | |
18787 } | |
18788 class EnclosedScopeTest extends ResolverTestCase { | |
18789 void test_define_duplicate() { | |
18790 LibraryElement definingLibrary2 = createTestLibrary(); | |
18791 GatheringErrorListener errorListener2 = new GatheringErrorListener(); | |
18792 Scope rootScope = new Scope_21(definingLibrary2, errorListener2); | |
18793 EnclosedScope scope = new EnclosedScope(rootScope); | |
18794 VariableElement element1 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v1")); | |
18795 VariableElement element2 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v1")); | |
18796 scope.define(element1); | |
18797 scope.define(element2); | |
18798 errorListener2.assertErrors3([ErrorSeverity.ERROR]); | |
18799 } | |
18800 void test_define_normal() { | |
18801 LibraryElement definingLibrary3 = createTestLibrary(); | |
18802 GatheringErrorListener errorListener3 = new GatheringErrorListener(); | |
18803 Scope rootScope = new Scope_22(definingLibrary3, errorListener3); | |
18804 EnclosedScope outerScope = new EnclosedScope(rootScope); | |
18805 EnclosedScope innerScope = new EnclosedScope(outerScope); | |
18806 VariableElement element1 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v1")); | |
18807 VariableElement element2 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v2")); | |
18808 outerScope.define(element1); | |
18809 innerScope.define(element2); | |
18810 errorListener3.assertNoErrors(); | |
18811 } | |
18812 static dartSuite() { | |
18813 _ut.group('EnclosedScopeTest', () { | |
18814 _ut.test('test_define_duplicate', () { | |
18815 final __test = new EnclosedScopeTest(); | |
18816 runJUnitTest(__test, __test.test_define_duplicate); | |
18817 }); | |
18818 _ut.test('test_define_normal', () { | |
18819 final __test = new EnclosedScopeTest(); | |
18820 runJUnitTest(__test, __test.test_define_normal); | |
18821 }); | |
18822 }); | |
18823 } | |
18824 } | |
18825 class Scope_21 extends Scope { | |
18826 LibraryElement definingLibrary2; | |
18827 GatheringErrorListener errorListener2; | |
18828 Scope_21(this.definingLibrary2, this.errorListener2) : super(); | |
18829 LibraryElement get definingLibrary => definingLibrary2; | |
18830 AnalysisErrorListener get errorListener => errorListener2; | |
18831 Element lookup3(Identifier identifier, String name, LibraryElement referencing
Library) => null; | |
18832 } | |
18833 class Scope_22 extends Scope { | |
18834 LibraryElement definingLibrary3; | |
18835 GatheringErrorListener errorListener3; | |
18836 Scope_22(this.definingLibrary3, this.errorListener3) : super(); | |
18837 LibraryElement get definingLibrary => definingLibrary3; | |
18838 AnalysisErrorListener get errorListener => errorListener3; | |
18839 Element lookup3(Identifier identifier, String name, LibraryElement referencing
Library) => null; | |
18840 } | |
18841 class LibraryElementBuilderTest extends EngineTestCase { | |
18842 | |
18843 /** | |
18844 * The source factory used to create [Source]. | |
18845 */ | |
18846 SourceFactory _sourceFactory; | |
18847 void setUp() { | |
18848 _sourceFactory = new SourceFactory.con2([new FileUriResolver()]); | |
18849 } | |
18850 void test_accessorsAcrossFiles() { | |
18851 Source librarySource = addSource("/lib.dart", EngineTestCase.createSource([ | |
18852 "library lib;", | |
18853 "part 'first.dart';", | |
18854 "part 'second.dart';"])); | |
18855 addSource("/first.dart", EngineTestCase.createSource(["part of lib;", "int g
et V => 0;"])); | |
18856 addSource("/second.dart", EngineTestCase.createSource(["part of lib;", "void
set V(int v) {}"])); | |
18857 LibraryElement element = buildLibrary(librarySource, []); | |
18858 JUnitTestCase.assertNotNull(element); | |
18859 List<CompilationUnitElement> sourcedUnits = element.parts; | |
18860 EngineTestCase.assertLength(2, sourcedUnits); | |
18861 List<PropertyAccessorElement> firstAccessors = sourcedUnits[0].accessors; | |
18862 EngineTestCase.assertLength(1, firstAccessors); | |
18863 List<PropertyAccessorElement> secondAccessors = sourcedUnits[1].accessors; | |
18864 EngineTestCase.assertLength(1, secondAccessors); | |
18865 JUnitTestCase.assertSame(firstAccessors[0].variable, secondAccessors[0].vari
able); | |
18866 } | |
18867 void test_empty() { | |
18868 Source librarySource = addSource("/lib.dart", "library lib;"); | |
18869 LibraryElement element = buildLibrary(librarySource, []); | |
18870 JUnitTestCase.assertNotNull(element); | |
18871 JUnitTestCase.assertEquals("lib", element.name); | |
18872 JUnitTestCase.assertNull(element.entryPoint); | |
18873 EngineTestCase.assertLength(0, element.importedLibraries); | |
18874 EngineTestCase.assertLength(0, element.imports); | |
18875 JUnitTestCase.assertSame(element, element.library); | |
18876 EngineTestCase.assertLength(0, element.prefixes); | |
18877 EngineTestCase.assertLength(0, element.parts); | |
18878 CompilationUnitElement unit = element.definingCompilationUnit; | |
18879 JUnitTestCase.assertNotNull(unit); | |
18880 JUnitTestCase.assertEquals("lib.dart", unit.name); | |
18881 JUnitTestCase.assertEquals(element, unit.library); | |
18882 EngineTestCase.assertLength(0, unit.accessors); | |
18883 EngineTestCase.assertLength(0, unit.functions); | |
18884 EngineTestCase.assertLength(0, unit.functionTypeAliases); | |
18885 EngineTestCase.assertLength(0, unit.types); | |
18886 EngineTestCase.assertLength(0, unit.topLevelVariables); | |
18887 } | |
18888 void test_invalidUri_part() { | |
18889 Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["
library lib;", "", "part '\${'a'}.dart';"])); | |
18890 LibraryElement element = buildLibrary(librarySource, [CompileTimeErrorCode.U
RI_WITH_INTERPOLATION]); | |
18891 JUnitTestCase.assertNotNull(element); | |
18892 } | |
18893 void test_missingLibraryDirectiveWithPart() { | |
18894 addSource("/a.dart", EngineTestCase.createSource(["part of lib;"])); | |
18895 Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["
part 'a.dart';"])); | |
18896 LibraryElement element = buildLibrary(librarySource, [ResolverErrorCode.MISS
ING_LIBRARY_DIRECTIVE_WITH_PART]); | |
18897 JUnitTestCase.assertNotNull(element); | |
18898 } | |
18899 void test_missingPartOfDirective() { | |
18900 addSource("/a.dart", "class A {}"); | |
18901 Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["
library lib;", "", "part 'a.dart';"])); | |
18902 LibraryElement element = buildLibrary(librarySource, [CompileTimeErrorCode.P
ART_OF_NON_PART]); | |
18903 JUnitTestCase.assertNotNull(element); | |
18904 } | |
18905 void test_multipleFiles() { | |
18906 Source librarySource = addSource("/lib.dart", EngineTestCase.createSource([ | |
18907 "library lib;", | |
18908 "part 'first.dart';", | |
18909 "part 'second.dart';", | |
18910 "", | |
18911 "class A {}"])); | |
18912 addSource("/first.dart", EngineTestCase.createSource(["part of lib;", "class
B {}"])); | |
18913 addSource("/second.dart", EngineTestCase.createSource(["part of lib;", "clas
s C {}"])); | |
18914 LibraryElement element = buildLibrary(librarySource, []); | |
18915 JUnitTestCase.assertNotNull(element); | |
18916 List<CompilationUnitElement> sourcedUnits = element.parts; | |
18917 EngineTestCase.assertLength(2, sourcedUnits); | |
18918 assertTypes(element.definingCompilationUnit, ["A"]); | |
18919 if (sourcedUnits[0].name == "first.dart") { | |
18920 assertTypes(sourcedUnits[0], ["B"]); | |
18921 assertTypes(sourcedUnits[1], ["C"]); | |
18922 } else { | |
18923 assertTypes(sourcedUnits[0], ["C"]); | |
18924 assertTypes(sourcedUnits[1], ["B"]); | |
18925 } | |
18926 } | |
18927 void test_singleFile() { | |
18928 Source librarySource = addSource("/lib.dart", EngineTestCase.createSource(["
library lib;", "", "class A {}"])); | |
18929 LibraryElement element = buildLibrary(librarySource, []); | |
18930 JUnitTestCase.assertNotNull(element); | |
18931 assertTypes(element.definingCompilationUnit, ["A"]); | |
18932 } | |
18933 | |
18934 /** | |
18935 * Add a source file to the content provider. The file path should be absolute
. | |
18936 * | |
18937 * @param filePath the path of the file being added | |
18938 * @param contents the contents to be returned by the content provider for the
specified file | |
18939 * @return the source object representing the added file | |
18940 */ | |
18941 Source addSource(String filePath, String contents) { | |
18942 Source source = new FileBasedSource.con1(_sourceFactory.contentCache, FileUt
ilities2.createFile(filePath)); | |
18943 _sourceFactory.setContents(source, contents); | |
18944 return source; | |
18945 } | |
18946 | |
18947 /** | |
18948 * Ensure that there are elements representing all of the types in the given a
rray of type names. | |
18949 * | |
18950 * @param unit the compilation unit containing the types | |
18951 * @param typeNames the names of the types that should be found | |
18952 */ | |
18953 void assertTypes(CompilationUnitElement unit, List<String> typeNames) { | |
18954 JUnitTestCase.assertNotNull(unit); | |
18955 List<ClassElement> types = unit.types; | |
18956 EngineTestCase.assertLength(typeNames.length, types); | |
18957 for (ClassElement type in types) { | |
18958 JUnitTestCase.assertNotNull(type); | |
18959 String actualTypeName = type.displayName; | |
18960 bool wasExpected = false; | |
18961 for (String expectedTypeName in typeNames) { | |
18962 if (expectedTypeName == actualTypeName) { | |
18963 wasExpected = true; | |
18964 } | |
18965 } | |
18966 if (!wasExpected) { | |
18967 JUnitTestCase.fail("Found unexpected type ${actualTypeName}"); | |
18968 } | |
18969 } | |
18970 } | |
18971 | |
18972 /** | |
18973 * Build the element model for the library whose defining compilation unit has
the given source. | |
18974 * | |
18975 * @param librarySource the source of the defining compilation unit for the li
brary | |
18976 * @param expectedErrorCodes the errors that are expected to be found while bu
ilding the element | |
18977 * model | |
18978 * @return the element model that was built for the library | |
18979 * @throws Exception if the element model could not be built | |
18980 */ | |
18981 LibraryElement buildLibrary(Source librarySource, List<ErrorCode> expectedErro
rCodes) { | |
18982 AnalysisContextImpl context = new AnalysisContextImpl(); | |
18983 context.sourceFactory = new SourceFactory.con2([ | |
18984 new DartUriResolver(DirectoryBasedDartSdk.defaultSdk), | |
18985 new FileUriResolver()]); | |
18986 LibraryResolver resolver = new LibraryResolver(context); | |
18987 LibraryElementBuilder builder = new LibraryElementBuilder(resolver); | |
18988 Library library = resolver.createLibrary(librarySource) as Library; | |
18989 LibraryElement element = builder.buildLibrary(library); | |
18990 GatheringErrorListener listener = new GatheringErrorListener(); | |
18991 listener.addAll(resolver.errorListener); | |
18992 listener.assertErrors2(expectedErrorCodes); | |
18993 return element; | |
18994 } | |
18995 static dartSuite() { | |
18996 _ut.group('LibraryElementBuilderTest', () { | |
18997 _ut.test('test_accessorsAcrossFiles', () { | |
18998 final __test = new LibraryElementBuilderTest(); | |
18999 runJUnitTest(__test, __test.test_accessorsAcrossFiles); | |
19000 }); | |
19001 _ut.test('test_empty', () { | |
19002 final __test = new LibraryElementBuilderTest(); | |
19003 runJUnitTest(__test, __test.test_empty); | |
19004 }); | |
19005 _ut.test('test_invalidUri_part', () { | |
19006 final __test = new LibraryElementBuilderTest(); | |
19007 runJUnitTest(__test, __test.test_invalidUri_part); | |
19008 }); | |
19009 _ut.test('test_missingLibraryDirectiveWithPart', () { | |
19010 final __test = new LibraryElementBuilderTest(); | |
19011 runJUnitTest(__test, __test.test_missingLibraryDirectiveWithPart); | |
19012 }); | |
19013 _ut.test('test_missingPartOfDirective', () { | |
19014 final __test = new LibraryElementBuilderTest(); | |
19015 runJUnitTest(__test, __test.test_missingPartOfDirective); | |
19016 }); | |
19017 _ut.test('test_multipleFiles', () { | |
19018 final __test = new LibraryElementBuilderTest(); | |
19019 runJUnitTest(__test, __test.test_multipleFiles); | |
19020 }); | |
19021 _ut.test('test_singleFile', () { | |
19022 final __test = new LibraryElementBuilderTest(); | |
19023 runJUnitTest(__test, __test.test_singleFile); | |
19024 }); | |
19025 }); | |
19026 } | |
19027 } | |
19028 class ScopeTest extends ResolverTestCase { | |
19029 void test_define_duplicate() { | |
19030 LibraryElement definingLibrary = createTestLibrary(); | |
19031 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
19032 ScopeTest_TestScope scope = new ScopeTest_TestScope(definingLibrary, errorLi
stener); | |
19033 VariableElement element1 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v1")); | |
19034 VariableElement element2 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v1")); | |
19035 scope.define(element1); | |
19036 scope.define(element2); | |
19037 errorListener.assertErrors3([ErrorSeverity.ERROR]); | |
19038 } | |
19039 void test_define_normal() { | |
19040 LibraryElement definingLibrary = createTestLibrary(); | |
19041 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
19042 ScopeTest_TestScope scope = new ScopeTest_TestScope(definingLibrary, errorLi
stener); | |
19043 VariableElement element1 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v1")); | |
19044 VariableElement element2 = ElementFactory.localVariableElement(ASTFactory.id
entifier3("v2")); | |
19045 scope.define(element1); | |
19046 scope.define(element2); | |
19047 errorListener.assertNoErrors(); | |
19048 } | |
19049 void test_getDefiningLibrary() { | |
19050 LibraryElement definingLibrary = createTestLibrary(); | |
19051 ScopeTest_TestScope scope = new ScopeTest_TestScope(definingLibrary, null); | |
19052 JUnitTestCase.assertEquals(definingLibrary, scope.definingLibrary); | |
19053 } | |
19054 void test_getErrorListener() { | |
19055 LibraryElement definingLibrary = new LibraryElementImpl(new AnalysisContextI
mpl(), ASTFactory.libraryIdentifier2(["test"])); | |
19056 GatheringErrorListener errorListener = new GatheringErrorListener(); | |
19057 ScopeTest_TestScope scope = new ScopeTest_TestScope(definingLibrary, errorLi
stener); | |
19058 JUnitTestCase.assertEquals(errorListener, scope.errorListener); | |
19059 } | |
19060 void test_isPrivateName_nonPrivate() { | |
19061 JUnitTestCase.assertFalse(Scope.isPrivateName("Public")); | |
19062 } | |
19063 void test_isPrivateName_private() { | |
19064 JUnitTestCase.assertTrue(Scope.isPrivateName("_Private")); | |
19065 } | |
19066 static dartSuite() { | |
19067 _ut.group('ScopeTest', () { | |
19068 _ut.test('test_define_duplicate', () { | |
19069 final __test = new ScopeTest(); | |
19070 runJUnitTest(__test, __test.test_define_duplicate); | |
19071 }); | |
19072 _ut.test('test_define_normal', () { | |
19073 final __test = new ScopeTest(); | |
19074 runJUnitTest(__test, __test.test_define_normal); | |
19075 }); | |
19076 _ut.test('test_getDefiningLibrary', () { | |
19077 final __test = new ScopeTest(); | |
19078 runJUnitTest(__test, __test.test_getDefiningLibrary); | |
19079 }); | |
19080 _ut.test('test_getErrorListener', () { | |
19081 final __test = new ScopeTest(); | |
19082 runJUnitTest(__test, __test.test_getErrorListener); | |
19083 }); | |
19084 _ut.test('test_isPrivateName_nonPrivate', () { | |
19085 final __test = new ScopeTest(); | |
19086 runJUnitTest(__test, __test.test_isPrivateName_nonPrivate); | |
19087 }); | |
19088 _ut.test('test_isPrivateName_private', () { | |
19089 final __test = new ScopeTest(); | |
19090 runJUnitTest(__test, __test.test_isPrivateName_private); | |
19091 }); | |
19092 }); | |
19093 } | |
19094 } | |
19095 /** | |
19096 * A non-abstract subclass that can be used for testing purposes. | |
19097 */ | |
19098 class ScopeTest_TestScope extends Scope { | |
19099 | |
19100 /** | |
19101 * The element representing the library in which this scope is enclosed. | |
19102 */ | |
19103 LibraryElement _definingLibrary; | |
19104 | |
19105 /** | |
19106 * The listener that is to be informed when an error is encountered. | |
19107 */ | |
19108 AnalysisErrorListener _errorListener; | |
19109 ScopeTest_TestScope(LibraryElement definingLibrary, AnalysisErrorListener erro
rListener) { | |
19110 this._definingLibrary = definingLibrary; | |
19111 this._errorListener = errorListener; | |
19112 } | |
19113 LibraryElement get definingLibrary => _definingLibrary; | |
19114 AnalysisErrorListener get errorListener => _errorListener; | |
19115 Element lookup3(Identifier identifier, String name, LibraryElement referencing
Library) => localLookup(name, referencingLibrary); | |
19116 } | |
19117 class SimpleResolverTest extends ResolverTestCase { | |
19118 void fail_staticInvocation() { | |
19119 Source source = addSource(EngineTestCase.createSource([ | |
19120 "class A {", | |
19121 " static int get g => (a,b) => 0;", | |
19122 "}", | |
19123 "class B {", | |
19124 " f() {", | |
19125 " A.g(1,0);", | |
19126 " }", | |
19127 "}"])); | |
19128 resolve(source); | |
19129 assertNoErrors(source); | |
19130 verify([source]); | |
19131 } | |
19132 void test_argumentResolution_required_matching() { | |
19133 Source source = addSource(EngineTestCase.createSource([ | |
19134 "class A {", | |
19135 " void f() {", | |
19136 " g(1, 2, 3);", | |
19137 " }", | |
19138 " void g(a, b, c) {}", | |
19139 "}"])); | |
19140 validateArgumentResolution(source, [0, 1, 2]); | |
19141 } | |
19142 void test_argumentResolution_required_tooFew() { | |
19143 Source source = addSource(EngineTestCase.createSource([ | |
19144 "class A {", | |
19145 " void f() {", | |
19146 " g(1, 2);", | |
19147 " }", | |
19148 " void g(a, b, c) {}", | |
19149 "}"])); | |
19150 validateArgumentResolution(source, [0, 1]); | |
19151 } | |
19152 void test_argumentResolution_required_tooMany() { | |
19153 Source source = addSource(EngineTestCase.createSource([ | |
19154 "class A {", | |
19155 " void f() {", | |
19156 " g(1, 2, 3);", | |
19157 " }", | |
19158 " void g(a, b) {}", | |
19159 "}"])); | |
19160 validateArgumentResolution(source, [0, 1, -1]); | |
19161 } | |
19162 void test_argumentResolution_requiredAndNamed_extra() { | |
19163 Source source = addSource(EngineTestCase.createSource([ | |
19164 "class A {", | |
19165 " void f() {", | |
19166 " g(1, 2, c: 3, d: 4);", | |
19167 " }", | |
19168 " void g(a, b, {c}) {}", | |
19169 "}"])); | |
19170 validateArgumentResolution(source, [0, 1, 2, -1]); | |
19171 } | |
19172 void test_argumentResolution_requiredAndNamed_matching() { | |
19173 Source source = addSource(EngineTestCase.createSource([ | |
19174 "class A {", | |
19175 " void f() {", | |
19176 " g(1, 2, c: 3);", | |
19177 " }", | |
19178 " void g(a, b, {c}) {}", | |
19179 "}"])); | |
19180 validateArgumentResolution(source, [0, 1, 2]); | |
19181 } | |
19182 void test_argumentResolution_requiredAndNamed_missing() { | |
19183 Source source = addSource(EngineTestCase.createSource([ | |
19184 "class A {", | |
19185 " void f() {", | |
19186 " g(1, 2, d: 3);", | |
19187 " }", | |
19188 " void g(a, b, {c, d}) {}", | |
19189 "}"])); | |
19190 validateArgumentResolution(source, [0, 1, 3]); | |
19191 } | |
19192 void test_argumentResolution_requiredAndPositional_fewer() { | |
19193 Source source = addSource(EngineTestCase.createSource([ | |
19194 "class A {", | |
19195 " void f() {", | |
19196 " g(1, 2, 3);", | |
19197 " }", | |
19198 " void g(a, b, [c, d]) {}", | |
19199 "}"])); | |
19200 validateArgumentResolution(source, [0, 1, 2]); | |
19201 } | |
19202 void test_argumentResolution_requiredAndPositional_matching() { | |
19203 Source source = addSource(EngineTestCase.createSource([ | |
19204 "class A {", | |
19205 " void f() {", | |
19206 " g(1, 2, 3, 4);", | |
19207 " }", | |
19208 " void g(a, b, [c, d]) {}", | |
19209 "}"])); | |
19210 validateArgumentResolution(source, [0, 1, 2, 3]); | |
19211 } | |
19212 void test_argumentResolution_requiredAndPositional_more() { | |
19213 Source source = addSource(EngineTestCase.createSource([ | |
19214 "class A {", | |
19215 " void f() {", | |
19216 " g(1, 2, 3, 4);", | |
19217 " }", | |
19218 " void g(a, b, [c]) {}", | |
19219 "}"])); | |
19220 validateArgumentResolution(source, [0, 1, 2, -1]); | |
19221 } | |
19222 void test_class_definesCall() { | |
19223 Source source = addSource(EngineTestCase.createSource([ | |
19224 "class A {", | |
19225 " int call(int x) { return x; }", | |
19226 "}", | |
19227 "int f(A a) {", | |
19228 " return a(0);", | |
19229 "}"])); | |
19230 resolve(source); | |
19231 assertNoErrors(source); | |
19232 verify([source]); | |
19233 } | |
19234 void test_class_extends_implements() { | |
19235 Source source = addSource(EngineTestCase.createSource([ | |
19236 "class A extends B implements C {}", | |
19237 "class B {}", | |
19238 "class C {}"])); | |
19239 resolve(source); | |
19240 assertNoErrors(source); | |
19241 verify([source]); | |
19242 } | |
19243 void test_commentReference_class() { | |
19244 Source source = addSource(EngineTestCase.createSource([ | |
19245 "f() {}", | |
19246 "/** [A] [new A] [A.n] [new A.n] [m] [f] */", | |
19247 "class A {", | |
19248 " A() {}", | |
19249 " A.n() {}", | |
19250 " m() {}", | |
19251 "}"])); | |
19252 resolve(source); | |
19253 assertNoErrors(source); | |
19254 verify([source]); | |
19255 } | |
19256 void test_commentReference_parameter() { | |
19257 Source source = addSource(EngineTestCase.createSource([ | |
19258 "class A {", | |
19259 " A() {}", | |
19260 " A.n() {}", | |
19261 " /** [e] [f] */", | |
19262 " m(e, f()) {}", | |
19263 "}"])); | |
19264 resolve(source); | |
19265 assertNoErrors(source); | |
19266 verify([source]); | |
19267 } | |
19268 void test_commentReference_singleLine() { | |
19269 Source source = addSource(EngineTestCase.createSource(["/// [A]", "class A {
}"])); | |
19270 resolve(source); | |
19271 assertNoErrors(source); | |
19272 verify([source]); | |
19273 } | |
19274 void test_empty() { | |
19275 Source source = addSource(""); | |
19276 resolve(source); | |
19277 assertNoErrors(source); | |
19278 verify([source]); | |
19279 } | |
19280 void test_extractedMethodAsConstant() { | |
19281 Source source = addSource(EngineTestCase.createSource([ | |
19282 "abstract class Comparable<T> {", | |
19283 " int compareTo(T other);", | |
19284 " static int compare(Comparable a, Comparable b) => a.compareTo(b);", | |
19285 "}", | |
19286 "class A {", | |
19287 " void sort([compare = Comparable.compare]) {}", | |
19288 "}"])); | |
19289 resolve(source); | |
19290 assertNoErrors(source); | |
19291 verify([source]); | |
19292 } | |
19293 void test_fieldFormalParameter() { | |
19294 Source source = addSource(EngineTestCase.createSource(["class A {", " int x
;", " A(this.x) {}", "}"])); | |
19295 resolve(source); | |
19296 assertNoErrors(source); | |
19297 verify([source]); | |
19298 } | |
19299 void test_forEachLoops_nonConflicting() { | |
19300 Source source = addSource(EngineTestCase.createSource([ | |
19301 "f() {", | |
19302 " List list = [1,2,3];", | |
19303 " for (int x in list) {}", | |
19304 " for (int x in list) {}", | |
19305 "}"])); | |
19306 resolve(source); | |
19307 assertNoErrors(source); | |
19308 verify([source]); | |
19309 } | |
19310 void test_forLoops_nonConflicting() { | |
19311 Source source = addSource(EngineTestCase.createSource([ | |
19312 "f() {", | |
19313 " for (int i = 0; i < 3; i++) {", | |
19314 " }", | |
19315 " for (int i = 0; i < 3; i++) {", | |
19316 " }", | |
19317 "}"])); | |
19318 resolve(source); | |
19319 assertNoErrors(source); | |
19320 verify([source]); | |
19321 } | |
19322 void test_functionTypeAlias() { | |
19323 Source source = addSource(EngineTestCase.createSource([ | |
19324 "typedef bool P(e);", | |
19325 "class A {", | |
19326 " P p;", | |
19327 " m(e) {", | |
19328 " if (p(e)) {}", | |
19329 " }", | |
19330 "}"])); | |
19331 resolve(source); | |
19332 assertNoErrors(source); | |
19333 verify([source]); | |
19334 } | |
19335 void test_getterAndSetterWithDifferentTypes() { | |
19336 Source source = addSource(EngineTestCase.createSource([ | |
19337 "class A {", | |
19338 " int get f => 0;", | |
19339 " void set f(String s) {}", | |
19340 "}", | |
19341 "g (A a) {", | |
19342 " a.f = a.f.toString();", | |
19343 "}"])); | |
19344 resolve(source); | |
19345 assertErrors(source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES])
; | |
19346 verify([source]); | |
19347 } | |
19348 void test_hasReferenceToSuper() { | |
19349 Source source = addSource(EngineTestCase.createSource(["class A {}", "class
B {toString() => super.toString();}"])); | |
19350 LibraryElement library = resolve(source); | |
19351 JUnitTestCase.assertNotNull(library); | |
19352 CompilationUnitElement unit = library.definingCompilationUnit; | |
19353 JUnitTestCase.assertNotNull(unit); | |
19354 List<ClassElement> classes = unit.types; | |
19355 EngineTestCase.assertLength(2, classes); | |
19356 JUnitTestCase.assertFalse(classes[0].hasReferenceToSuper()); | |
19357 JUnitTestCase.assertTrue(classes[1].hasReferenceToSuper()); | |
19358 assertNoErrors(source); | |
19359 verify([source]); | |
19360 } | |
19361 void test_import_hide() { | |
19362 addSource2("lib1.dart", EngineTestCase.createSource(["library lib1;", "set f
oo(value) {}", "class A {}"])); | |
19363 addSource2("lib2.dart", EngineTestCase.createSource(["library lib2;", "set f
oo(value) {}"])); | |
19364 Source source = addSource2("lib3.dart", EngineTestCase.createSource([ | |
19365 "import 'lib1.dart' hide foo;", | |
19366 "import 'lib2.dart';", | |
19367 "", | |
19368 "main() {", | |
19369 " foo = 0;", | |
19370 "}", | |
19371 "A a;"])); | |
19372 resolve(source); | |
19373 assertNoErrors(source); | |
19374 verify([source]); | |
19375 } | |
19376 void test_import_prefix() { | |
19377 addSource2("/two.dart", EngineTestCase.createSource(["library two;", "f(int
x) {", " return x * x;", "}"])); | |
19378 Source source = addSource2("/one.dart", EngineTestCase.createSource([ | |
19379 "library one;", | |
19380 "import 'two.dart' as _two;", | |
19381 "main() {", | |
19382 " _two.f(0);", | |
19383 "}"])); | |
19384 resolve(source); | |
19385 assertNoErrors(source); | |
19386 verify([source]); | |
19387 } | |
19388 void test_import_spaceInUri() { | |
19389 addSource2("sub folder/lib.dart", EngineTestCase.createSource(["library lib;
", "foo() {}"])); | |
19390 Source source = addSource2("app.dart", EngineTestCase.createSource([ | |
19391 "import 'sub folder/lib.dart';", | |
19392 "", | |
19393 "main() {", | |
19394 " foo();", | |
19395 "}"])); | |
19396 resolve(source); | |
19397 assertNoErrors(source); | |
19398 verify([source]); | |
19399 } | |
19400 void test_indexExpression_typeParameters() { | |
19401 Source source = addSource(EngineTestCase.createSource([ | |
19402 "f() {", | |
19403 " List<int> a;", | |
19404 " a[0];", | |
19405 " List<List<int>> b;", | |
19406 " b[0][0];", | |
19407 " List<List<List<int>>> c;", | |
19408 " c[0][0][0];", | |
19409 "}"])); | |
19410 resolve(source); | |
19411 assertNoErrors(source); | |
19412 verify([source]); | |
19413 } | |
19414 void test_indexExpression_typeParameters_invalidAssignmentWarning() { | |
19415 Source source = addSource(EngineTestCase.createSource(["f() {", " List<List
<int>> b;", " b[0][0] = 'hi';", "}"])); | |
19416 resolve(source); | |
19417 assertErrors(source, [StaticTypeWarningCode.INVALID_ASSIGNMENT]); | |
19418 verify([source]); | |
19419 } | |
19420 void test_indirectOperatorThroughCall() { | |
19421 Source source = addSource(EngineTestCase.createSource([ | |
19422 "class A {", | |
19423 " B call() { return new B(); }", | |
19424 "}", | |
19425 "", | |
19426 "class B {", | |
19427 " int operator [](int i) { return i; }", | |
19428 "}", | |
19429 "", | |
19430 "A f = new A();", | |
19431 "", | |
19432 "g(int x) {}", | |
19433 "", | |
19434 "main() {", | |
19435 " g(f()[0]);", | |
19436 "}"])); | |
19437 resolve(source); | |
19438 assertNoErrors(source); | |
19439 verify([source]); | |
19440 } | |
19441 void test_invoke_dynamicThroughGetter() { | |
19442 Source source = addSource(EngineTestCase.createSource([ | |
19443 "class A {", | |
19444 " List get X => [() => 0];", | |
19445 " m(A a) {", | |
19446 " X.last;", | |
19447 " }", | |
19448 "}"])); | |
19449 resolve(source); | |
19450 assertNoErrors(source); | |
19451 verify([source]); | |
19452 } | |
19453 void test_isValidMixin_badSuperclass() { | |
19454 Source source = addSource(EngineTestCase.createSource(["class A extends B {}
", "class B {}"])); | |
19455 LibraryElement library = resolve(source); | |
19456 JUnitTestCase.assertNotNull(library); | |
19457 CompilationUnitElement unit = library.definingCompilationUnit; | |
19458 JUnitTestCase.assertNotNull(unit); | |
19459 List<ClassElement> classes = unit.types; | |
19460 EngineTestCase.assertLength(2, classes); | |
19461 JUnitTestCase.assertFalse(classes[0].isValidMixin); | |
19462 assertNoErrors(source); | |
19463 verify([source]); | |
19464 } | |
19465 void test_isValidMixin_constructor() { | |
19466 Source source = addSource(EngineTestCase.createSource(["class A {", " A() {
}", "}"])); | |
19467 LibraryElement library = resolve(source); | |
19468 JUnitTestCase.assertNotNull(library); | |
19469 CompilationUnitElement unit = library.definingCompilationUnit; | |
19470 JUnitTestCase.assertNotNull(unit); | |
19471 List<ClassElement> classes = unit.types; | |
19472 EngineTestCase.assertLength(1, classes); | |
19473 JUnitTestCase.assertFalse(classes[0].isValidMixin); | |
19474 assertNoErrors(source); | |
19475 verify([source]); | |
19476 } | |
19477 void test_isValidMixin_super() { | |
19478 Source source = addSource(EngineTestCase.createSource([ | |
19479 "class A {", | |
19480 " toString() {", | |
19481 " return super.toString();", | |
19482 " }", | |
19483 "}"])); | |
19484 LibraryElement library = resolve(source); | |
19485 JUnitTestCase.assertNotNull(library); | |
19486 CompilationUnitElement unit = library.definingCompilationUnit; | |
19487 JUnitTestCase.assertNotNull(unit); | |
19488 List<ClassElement> classes = unit.types; | |
19489 EngineTestCase.assertLength(1, classes); | |
19490 JUnitTestCase.assertFalse(classes[0].isValidMixin); | |
19491 assertNoErrors(source); | |
19492 verify([source]); | |
19493 } | |
19494 void test_isValidMixin_valid() { | |
19495 Source source = addSource(EngineTestCase.createSource(["class A {}"])); | |
19496 LibraryElement library = resolve(source); | |
19497 JUnitTestCase.assertNotNull(library); | |
19498 CompilationUnitElement unit = library.definingCompilationUnit; | |
19499 JUnitTestCase.assertNotNull(unit); | |
19500 List<ClassElement> classes = unit.types; | |
19501 EngineTestCase.assertLength(1, classes); | |
19502 JUnitTestCase.assertTrue(classes[0].isValidMixin); | |
19503 assertNoErrors(source); | |
19504 verify([source]); | |
19505 } | |
19506 void test_labels_switch() { | |
19507 Source source = addSource(EngineTestCase.createSource([ | |
19508 "void doSwitch(int target) {", | |
19509 " switch (target) {", | |
19510 " l0: case 0:", | |
19511 " continue l1;", | |
19512 " l1: case 1:", | |
19513 " continue l0;", | |
19514 " default:", | |
19515 " continue l1;", | |
19516 " }", | |
19517 "}"])); | |
19518 LibraryElement library = resolve(source); | |
19519 JUnitTestCase.assertNotNull(library); | |
19520 assertNoErrors(source); | |
19521 verify([source]); | |
19522 } | |
19523 void test_metadata_class() { | |
19524 Source source = addSource(EngineTestCase.createSource(["const A = null;", "@
A class C {}"])); | |
19525 LibraryElement library = resolve(source); | |
19526 JUnitTestCase.assertNotNull(library); | |
19527 CompilationUnitElement unit = library.definingCompilationUnit; | |
19528 JUnitTestCase.assertNotNull(unit); | |
19529 List<ClassElement> classes = unit.types; | |
19530 EngineTestCase.assertLength(1, classes); | |
19531 List<ElementAnnotation> annotations = classes[0].metadata; | |
19532 EngineTestCase.assertLength(1, annotations); | |
19533 assertNoErrors(source); | |
19534 verify([source]); | |
19535 } | |
19536 void test_metadata_field() { | |
19537 Source source = addSource(EngineTestCase.createSource(["const A = null;", "c
lass C {", " @A int f;", "}"])); | |
19538 LibraryElement library = resolve(source); | |
19539 JUnitTestCase.assertNotNull(library); | |
19540 CompilationUnitElement unit = library.definingCompilationUnit; | |
19541 JUnitTestCase.assertNotNull(unit); | |
19542 List<ClassElement> classes = unit.types; | |
19543 EngineTestCase.assertLength(1, classes); | |
19544 FieldElement field = classes[0].fields[0]; | |
19545 List<ElementAnnotation> annotations = field.metadata; | |
19546 EngineTestCase.assertLength(1, annotations); | |
19547 assertNoErrors(source); | |
19548 verify([source]); | |
19549 } | |
19550 void test_metadata_libraryDirective() { | |
19551 Source source = addSource(EngineTestCase.createSource(["@A library lib;", "c
onst A = null;"])); | |
19552 LibraryElement library = resolve(source); | |
19553 JUnitTestCase.assertNotNull(library); | |
19554 List<ElementAnnotation> annotations = library.metadata; | |
19555 EngineTestCase.assertLength(1, annotations); | |
19556 assertNoErrors(source); | |
19557 verify([source]); | |
19558 } | |
19559 void test_metadata_method() { | |
19560 Source source = addSource(EngineTestCase.createSource(["const A = null;", "c
lass C {", " @A void m() {}", "}"])); | |
19561 LibraryElement library = resolve(source); | |
19562 JUnitTestCase.assertNotNull(library); | |
19563 CompilationUnitElement unit = library.definingCompilationUnit; | |
19564 JUnitTestCase.assertNotNull(unit); | |
19565 List<ClassElement> classes = unit.types; | |
19566 EngineTestCase.assertLength(1, classes); | |
19567 MethodElement method = classes[0].methods[0]; | |
19568 List<ElementAnnotation> annotations = method.metadata; | |
19569 EngineTestCase.assertLength(1, annotations); | |
19570 assertNoErrors(source); | |
19571 verify([source]); | |
19572 } | |
19573 void test_method_fromMixin() { | |
19574 Source source = addSource(EngineTestCase.createSource([ | |
19575 "class B {", | |
19576 " bar() => 1;", | |
19577 "}", | |
19578 "class A {", | |
19579 " foo() => 2;", | |
19580 "}", | |
19581 "", | |
19582 "class C extends B with A {", | |
19583 " bar() => super.bar();", | |
19584 " foo() => super.foo();", | |
19585 "}"])); | |
19586 resolve(source); | |
19587 assertNoErrors(source); | |
19588 verify([source]); | |
19589 } | |
19590 void test_method_fromSuperclassMixin() { | |
19591 Source source = addSource(EngineTestCase.createSource([ | |
19592 "class A {", | |
19593 " void m1() {}", | |
19594 "}", | |
19595 "class B extends Object with A {", | |
19596 "}", | |
19597 "class C extends B {", | |
19598 "}", | |
19599 "f(C c) {", | |
19600 " c.m1();", | |
19601 "}"])); | |
19602 resolve(source); | |
19603 assertNoErrors(source); | |
19604 verify([source]); | |
19605 } | |
19606 void test_methodCascades() { | |
19607 Source source = addSource(EngineTestCase.createSource([ | |
19608 "class A {", | |
19609 " void m1() {}", | |
19610 " void m2() {}", | |
19611 " void m() {", | |
19612 " A a = new A();", | |
19613 " a..m1()", | |
19614 " ..m2();", | |
19615 " }", | |
19616 "}"])); | |
19617 resolve(source); | |
19618 assertNoErrors(source); | |
19619 verify([source]); | |
19620 } | |
19621 void test_methodCascades_withSetter() { | |
19622 Source source = addSource(EngineTestCase.createSource([ | |
19623 "class A {", | |
19624 " String name;", | |
19625 " void m1() {}", | |
19626 " void m2() {}", | |
19627 " void m() {", | |
19628 " A a = new A();", | |
19629 " a..m1()", | |
19630 " ..name = 'name'", | |
19631 " ..m2();", | |
19632 " }", | |
19633 "}"])); | |
19634 resolve(source); | |
19635 assertNoErrors(source); | |
19636 verify([source]); | |
19637 } | |
19638 void test_resolveAgainstNull() { | |
19639 Source source = addSource(EngineTestCase.createSource(["f(var p) {", " retu
rn null == p;", "}"])); | |
19640 resolve(source); | |
19641 assertNoErrors(source); | |
19642 } | |
19643 void test_setter_inherited() { | |
19644 Source source = addSource(EngineTestCase.createSource([ | |
19645 "class A {", | |
19646 " int get x => 0;", | |
19647 " set x(int p) {}", | |
19648 "}", | |
19649 "class B extends A {", | |
19650 " int get x => super.x == null ? 0 : super.x;", | |
19651 " int f() => x = 1;", | |
19652 "}"])); | |
19653 resolve(source); | |
19654 assertNoErrors(source); | |
19655 verify([source]); | |
19656 } | |
19657 void test_setter_static() { | |
19658 Source source = addSource(EngineTestCase.createSource(["set s(x) {", "}", ""
, "main() {", " s = 123;", "}"])); | |
19659 resolve(source); | |
19660 assertNoErrors(source); | |
19661 verify([source]); | |
19662 } | |
19663 | |
19664 /** | |
19665 * Resolve the given source and verify that the arguments in a specific method
invocation were | |
19666 * correctly resolved. | |
19667 * | |
19668 * The source is expected to be source for a compilation unit, the first decla
ration is expected | |
19669 * to be a class, the first member of which is expected to be a method with a
block body, and the | |
19670 * first statement in the body is expected to be an expression statement whose
expression is a | |
19671 * method invocation. It is the arguments to that method invocation that are t
ested. The method | |
19672 * invocation can contain errors. | |
19673 * | |
19674 * The arguments were resolved correctly if the number of expressions in the l
ist matches the | |
19675 * length of the array of indices and if, for each index in the array of indic
es, the parameter to | |
19676 * which the argument expression was resolved is the parameter in the invoked
method's list of | |
19677 * parameters at that index. Arguments that should not be resolved to a parame
ter because of an | |
19678 * error can be denoted by including a negative index in the array of indices. | |
19679 * | |
19680 * @param source the source to be resolved | |
19681 * @param indices the array of indices used to associate arguments with parame
ters | |
19682 * @throws Exception if the source could not be resolved or if the structure o
f the source is not | |
19683 * valid | |
19684 */ | |
19685 void validateArgumentResolution(Source source, List<int> indices) { | |
19686 LibraryElement library = resolve(source); | |
19687 JUnitTestCase.assertNotNull(library); | |
19688 ClassElement classElement = library.definingCompilationUnit.types[0]; | |
19689 List<ParameterElement> parameters = classElement.methods[1].parameters; | |
19690 CompilationUnit unit = resolveCompilationUnit(source, library); | |
19691 JUnitTestCase.assertNotNull(unit); | |
19692 ClassDeclaration classDeclaration = unit.declarations[0] as ClassDeclaration
; | |
19693 MethodDeclaration methodDeclaration = classDeclaration.members[0] as MethodD
eclaration; | |
19694 Block block = ((methodDeclaration.body as BlockFunctionBody)).block; | |
19695 ExpressionStatement statement = block.statements[0] as ExpressionStatement; | |
19696 MethodInvocation invocation = statement.expression as MethodInvocation; | |
19697 NodeList<Expression> arguments = invocation.argumentList.arguments; | |
19698 int argumentCount = arguments.length; | |
19699 JUnitTestCase.assertEquals(indices.length, argumentCount); | |
19700 for (int i = 0; i < argumentCount; i++) { | |
19701 Expression argument = arguments[i]; | |
19702 ParameterElement element = argument.staticParameterElement; | |
19703 int index = indices[i]; | |
19704 if (index < 0) { | |
19705 JUnitTestCase.assertNull(element); | |
19706 } else { | |
19707 JUnitTestCase.assertSame(parameters[index], element); | |
19708 } | |
19709 } | |
19710 } | |
19711 static dartSuite() { | |
19712 _ut.group('SimpleResolverTest', () { | |
19713 _ut.test('test_argumentResolution_requiredAndNamed_extra', () { | |
19714 final __test = new SimpleResolverTest(); | |
19715 runJUnitTest(__test, __test.test_argumentResolution_requiredAndNamed_ext
ra); | |
19716 }); | |
19717 _ut.test('test_argumentResolution_requiredAndNamed_matching', () { | |
19718 final __test = new SimpleResolverTest(); | |
19719 runJUnitTest(__test, __test.test_argumentResolution_requiredAndNamed_mat
ching); | |
19720 }); | |
19721 _ut.test('test_argumentResolution_requiredAndNamed_missing', () { | |
19722 final __test = new SimpleResolverTest(); | |
19723 runJUnitTest(__test, __test.test_argumentResolution_requiredAndNamed_mis
sing); | |
19724 }); | |
19725 _ut.test('test_argumentResolution_requiredAndPositional_fewer', () { | |
19726 final __test = new SimpleResolverTest(); | |
19727 runJUnitTest(__test, __test.test_argumentResolution_requiredAndPositiona
l_fewer); | |
19728 }); | |
19729 _ut.test('test_argumentResolution_requiredAndPositional_matching', () { | |
19730 final __test = new SimpleResolverTest(); | |
19731 runJUnitTest(__test, __test.test_argumentResolution_requiredAndPositiona
l_matching); | |
19732 }); | |
19733 _ut.test('test_argumentResolution_requiredAndPositional_more', () { | |
19734 final __test = new SimpleResolverTest(); | |
19735 runJUnitTest(__test, __test.test_argumentResolution_requiredAndPositiona
l_more); | |
19736 }); | |
19737 _ut.test('test_argumentResolution_required_matching', () { | |
19738 final __test = new SimpleResolverTest(); | |
19739 runJUnitTest(__test, __test.test_argumentResolution_required_matching); | |
19740 }); | |
19741 _ut.test('test_argumentResolution_required_tooFew', () { | |
19742 final __test = new SimpleResolverTest(); | |
19743 runJUnitTest(__test, __test.test_argumentResolution_required_tooFew); | |
19744 }); | |
19745 _ut.test('test_argumentResolution_required_tooMany', () { | |
19746 final __test = new SimpleResolverTest(); | |
19747 runJUnitTest(__test, __test.test_argumentResolution_required_tooMany); | |
19748 }); | |
19749 _ut.test('test_class_definesCall', () { | |
19750 final __test = new SimpleResolverTest(); | |
19751 runJUnitTest(__test, __test.test_class_definesCall); | |
19752 }); | |
19753 _ut.test('test_class_extends_implements', () { | |
19754 final __test = new SimpleResolverTest(); | |
19755 runJUnitTest(__test, __test.test_class_extends_implements); | |
19756 }); | |
19757 _ut.test('test_commentReference_class', () { | |
19758 final __test = new SimpleResolverTest(); | |
19759 runJUnitTest(__test, __test.test_commentReference_class); | |
19760 }); | |
19761 _ut.test('test_commentReference_parameter', () { | |
19762 final __test = new SimpleResolverTest(); | |
19763 runJUnitTest(__test, __test.test_commentReference_parameter); | |
19764 }); | |
19765 _ut.test('test_commentReference_singleLine', () { | |
19766 final __test = new SimpleResolverTest(); | |
19767 runJUnitTest(__test, __test.test_commentReference_singleLine); | |
19768 }); | |
19769 _ut.test('test_empty', () { | |
19770 final __test = new SimpleResolverTest(); | |
19771 runJUnitTest(__test, __test.test_empty); | |
19772 }); | |
19773 _ut.test('test_extractedMethodAsConstant', () { | |
19774 final __test = new SimpleResolverTest(); | |
19775 runJUnitTest(__test, __test.test_extractedMethodAsConstant); | |
19776 }); | |
19777 _ut.test('test_fieldFormalParameter', () { | |
19778 final __test = new SimpleResolverTest(); | |
19779 runJUnitTest(__test, __test.test_fieldFormalParameter); | |
19780 }); | |
19781 _ut.test('test_forEachLoops_nonConflicting', () { | |
19782 final __test = new SimpleResolverTest(); | |
19783 runJUnitTest(__test, __test.test_forEachLoops_nonConflicting); | |
19784 }); | |
19785 _ut.test('test_forLoops_nonConflicting', () { | |
19786 final __test = new SimpleResolverTest(); | |
19787 runJUnitTest(__test, __test.test_forLoops_nonConflicting); | |
19788 }); | |
19789 _ut.test('test_functionTypeAlias', () { | |
19790 final __test = new SimpleResolverTest(); | |
19791 runJUnitTest(__test, __test.test_functionTypeAlias); | |
19792 }); | |
19793 _ut.test('test_getterAndSetterWithDifferentTypes', () { | |
19794 final __test = new SimpleResolverTest(); | |
19795 runJUnitTest(__test, __test.test_getterAndSetterWithDifferentTypes); | |
19796 }); | |
19797 _ut.test('test_hasReferenceToSuper', () { | |
19798 final __test = new SimpleResolverTest(); | |
19799 runJUnitTest(__test, __test.test_hasReferenceToSuper); | |
19800 }); | |
19801 _ut.test('test_import_hide', () { | |
19802 final __test = new SimpleResolverTest(); | |
19803 runJUnitTest(__test, __test.test_import_hide); | |
19804 }); | |
19805 _ut.test('test_import_prefix', () { | |
19806 final __test = new SimpleResolverTest(); | |
19807 runJUnitTest(__test, __test.test_import_prefix); | |
19808 }); | |
19809 _ut.test('test_import_spaceInUri', () { | |
19810 final __test = new SimpleResolverTest(); | |
19811 runJUnitTest(__test, __test.test_import_spaceInUri); | |
19812 }); | |
19813 _ut.test('test_indexExpression_typeParameters', () { | |
19814 final __test = new SimpleResolverTest(); | |
19815 runJUnitTest(__test, __test.test_indexExpression_typeParameters); | |
19816 }); | |
19817 _ut.test('test_indexExpression_typeParameters_invalidAssignmentWarning', (
) { | |
19818 final __test = new SimpleResolverTest(); | |
19819 runJUnitTest(__test, __test.test_indexExpression_typeParameters_invalidA
ssignmentWarning); | |
19820 }); | |
19821 _ut.test('test_indirectOperatorThroughCall', () { | |
19822 final __test = new SimpleResolverTest(); | |
19823 runJUnitTest(__test, __test.test_indirectOperatorThroughCall); | |
19824 }); | |
19825 _ut.test('test_invoke_dynamicThroughGetter', () { | |
19826 final __test = new SimpleResolverTest(); | |
19827 runJUnitTest(__test, __test.test_invoke_dynamicThroughGetter); | |
19828 }); | |
19829 _ut.test('test_isValidMixin_badSuperclass', () { | |
19830 final __test = new SimpleResolverTest(); | |
19831 runJUnitTest(__test, __test.test_isValidMixin_badSuperclass); | |
19832 }); | |
19833 _ut.test('test_isValidMixin_constructor', () { | |
19834 final __test = new SimpleResolverTest(); | |
19835 runJUnitTest(__test, __test.test_isValidMixin_constructor); | |
19836 }); | |
19837 _ut.test('test_isValidMixin_super', () { | |
19838 final __test = new SimpleResolverTest(); | |
19839 runJUnitTest(__test, __test.test_isValidMixin_super); | |
19840 }); | |
19841 _ut.test('test_isValidMixin_valid', () { | |
19842 final __test = new SimpleResolverTest(); | |
19843 runJUnitTest(__test, __test.test_isValidMixin_valid); | |
19844 }); | |
19845 _ut.test('test_labels_switch', () { | |
19846 final __test = new SimpleResolverTest(); | |
19847 runJUnitTest(__test, __test.test_labels_switch); | |
19848 }); | |
19849 _ut.test('test_metadata_class', () { | |
19850 final __test = new SimpleResolverTest(); | |
19851 runJUnitTest(__test, __test.test_metadata_class); | |
19852 }); | |
19853 _ut.test('test_metadata_field', () { | |
19854 final __test = new SimpleResolverTest(); | |
19855 runJUnitTest(__test, __test.test_metadata_field); | |
19856 }); | |
19857 _ut.test('test_metadata_libraryDirective', () { | |
19858 final __test = new SimpleResolverTest(); | |
19859 runJUnitTest(__test, __test.test_metadata_libraryDirective); | |
19860 }); | |
19861 _ut.test('test_metadata_method', () { | |
19862 final __test = new SimpleResolverTest(); | |
19863 runJUnitTest(__test, __test.test_metadata_method); | |
19864 }); | |
19865 _ut.test('test_methodCascades', () { | |
19866 final __test = new SimpleResolverTest(); | |
19867 runJUnitTest(__test, __test.test_methodCascades); | |
19868 }); | |
19869 _ut.test('test_methodCascades_withSetter', () { | |
19870 final __test = new SimpleResolverTest(); | |
19871 runJUnitTest(__test, __test.test_methodCascades_withSetter); | |
19872 }); | |
19873 _ut.test('test_method_fromMixin', () { | |
19874 final __test = new SimpleResolverTest(); | |
19875 runJUnitTest(__test, __test.test_method_fromMixin); | |
19876 }); | |
19877 _ut.test('test_method_fromSuperclassMixin', () { | |
19878 final __test = new SimpleResolverTest(); | |
19879 runJUnitTest(__test, __test.test_method_fromSuperclassMixin); | |
19880 }); | |
19881 _ut.test('test_resolveAgainstNull', () { | |
19882 final __test = new SimpleResolverTest(); | |
19883 runJUnitTest(__test, __test.test_resolveAgainstNull); | |
19884 }); | |
19885 _ut.test('test_setter_inherited', () { | |
19886 final __test = new SimpleResolverTest(); | |
19887 runJUnitTest(__test, __test.test_setter_inherited); | |
19888 }); | |
19889 _ut.test('test_setter_static', () { | |
19890 final __test = new SimpleResolverTest(); | |
19891 runJUnitTest(__test, __test.test_setter_static); | |
19892 }); | |
19893 }); | |
19894 } | |
19895 } | |
19896 class SubtypeManagerTest extends EngineTestCase { | |
19897 | |
19898 /** | |
19899 * The inheritance manager being tested. | |
19900 */ | |
19901 SubtypeManager _subtypeManager; | |
19902 | |
19903 /** | |
19904 * The compilation unit element containing all of the types setup in each test
. | |
19905 */ | |
19906 CompilationUnitElementImpl _definingCompilationUnit; | |
19907 void test_computeAllSubtypes_infiniteLoop() { | |
19908 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
19909 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
19910 classA.supertype = classB.type; | |
19911 _definingCompilationUnit.types = <ClassElement> [classA, classB]; | |
19912 Set<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA); | |
19913 List<ClassElement> arraySubtypesOfA = new List.from(subtypesOfA); | |
19914 EngineTestCase.assertSize3(2, subtypesOfA); | |
19915 EngineTestCase.assertContains(arraySubtypesOfA, [classA, classB]); | |
19916 } | |
19917 void test_computeAllSubtypes_manyRecursiveSubtypes() { | |
19918 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
19919 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
19920 ClassElementImpl classC = ElementFactory.classElement("C", classB.type, []); | |
19921 ClassElementImpl classD = ElementFactory.classElement("D", classB.type, []); | |
19922 ClassElementImpl classE = ElementFactory.classElement("E", classB.type, []); | |
19923 _definingCompilationUnit.types = <ClassElement> [classA, classB, classC, cla
ssD, classE]; | |
19924 Set<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA); | |
19925 List<ClassElement> arraySubtypesOfA = new List.from(subtypesOfA); | |
19926 Set<ClassElement> subtypesOfB = _subtypeManager.computeAllSubtypes(classB); | |
19927 List<ClassElement> arraySubtypesOfB = new List.from(subtypesOfB); | |
19928 EngineTestCase.assertSize3(4, subtypesOfA); | |
19929 EngineTestCase.assertContains(arraySubtypesOfA, [classB, classC, classD, cla
ssE]); | |
19930 EngineTestCase.assertSize3(3, subtypesOfB); | |
19931 EngineTestCase.assertContains(arraySubtypesOfB, [classC, classD, classE]); | |
19932 } | |
19933 void test_computeAllSubtypes_noSubtypes() { | |
19934 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
19935 _definingCompilationUnit.types = <ClassElement> [classA]; | |
19936 Set<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA); | |
19937 EngineTestCase.assertSize3(0, subtypesOfA); | |
19938 } | |
19939 void test_computeAllSubtypes_oneSubtype() { | |
19940 ClassElementImpl classA = ElementFactory.classElement2("A", []); | |
19941 ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []); | |
19942 _definingCompilationUnit.types = <ClassElement> [classA, classB]; | |
19943 Set<ClassElement> subtypesOfA = _subtypeManager.computeAllSubtypes(classA); | |
19944 List<ClassElement> arraySubtypesOfA = new List.from(subtypesOfA); | |
19945 EngineTestCase.assertSize3(1, subtypesOfA); | |
19946 EngineTestCase.assertContains(arraySubtypesOfA, [classB]); | |
19947 } | |
19948 void setUp() { | |
19949 super.setUp(); | |
19950 AnalysisContextImpl context = AnalysisContextFactory.contextWithCore(); | |
19951 FileBasedSource source = new FileBasedSource.con1(new ContentCache(), FileUt
ilities2.createFile("/test.dart")); | |
19952 _definingCompilationUnit = new CompilationUnitElementImpl("test.dart"); | |
19953 _definingCompilationUnit.source = source; | |
19954 LibraryElementImpl definingLibrary = ElementFactory.library(context, "test")
; | |
19955 definingLibrary.definingCompilationUnit = _definingCompilationUnit; | |
19956 _subtypeManager = new SubtypeManager(); | |
19957 } | |
19958 static dartSuite() { | |
19959 _ut.group('SubtypeManagerTest', () { | |
19960 _ut.test('test_computeAllSubtypes_infiniteLoop', () { | |
19961 final __test = new SubtypeManagerTest(); | |
19962 runJUnitTest(__test, __test.test_computeAllSubtypes_infiniteLoop); | |
19963 }); | |
19964 _ut.test('test_computeAllSubtypes_manyRecursiveSubtypes', () { | |
19965 final __test = new SubtypeManagerTest(); | |
19966 runJUnitTest(__test, __test.test_computeAllSubtypes_manyRecursiveSubtype
s); | |
19967 }); | |
19968 _ut.test('test_computeAllSubtypes_noSubtypes', () { | |
19969 final __test = new SubtypeManagerTest(); | |
19970 runJUnitTest(__test, __test.test_computeAllSubtypes_noSubtypes); | |
19971 }); | |
19972 _ut.test('test_computeAllSubtypes_oneSubtype', () { | |
19973 final __test = new SubtypeManagerTest(); | |
19974 runJUnitTest(__test, __test.test_computeAllSubtypes_oneSubtype); | |
19975 }); | |
19976 }); | |
19977 } | |
19978 } | |
19979 main() { | |
19980 // ElementResolverTest.dartSuite(); | |
19981 // InheritanceManagerTest.dartSuite(); | |
19982 // LibraryElementBuilderTest.dartSuite(); | |
19983 // LibraryTest.dartSuite(); | |
19984 // StaticTypeAnalyzerTest.dartSuite(); | |
19985 // SubtypeManagerTest.dartSuite(); | |
19986 // TypeOverrideManagerTest.dartSuite(); | |
19987 // TypeProviderImplTest.dartSuite(); | |
19988 // TypeResolverVisitorTest.dartSuite(); | |
19989 // EnclosedScopeTest.dartSuite(); | |
19990 // LibraryImportScopeTest.dartSuite(); | |
19991 // LibraryScopeTest.dartSuite(); | |
19992 // ScopeTest.dartSuite(); | |
19993 // CompileTimeErrorCodeTest.dartSuite(); | |
19994 // ErrorResolverTest.dartSuite(); | |
19995 // HintCodeTest.dartSuite(); | |
19996 // MemberMapTest.dartSuite(); | |
19997 // NonHintCodeTest.dartSuite(); | |
19998 // NonErrorResolverTest.dartSuite(); | |
19999 // SimpleResolverTest.dartSuite(); | |
20000 // StaticTypeWarningCodeTest.dartSuite(); | |
20001 // StaticWarningCodeTest.dartSuite(); | |
20002 // StrictModeTest.dartSuite(); | |
20003 // TypePropagationTest.dartSuite(); | |
20004 } | |
OLD | NEW |