OLD | NEW |
---|---|
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 package com.google.dart.compiler.resolver; | 4 package com.google.dart.compiler.resolver; |
5 | 5 |
6 import com.google.dart.compiler.CompilerTestCase; | 6 import com.google.dart.compiler.CompilerTestCase; |
7 import com.google.dart.compiler.DartCompilationError; | 7 import com.google.dart.compiler.DartCompilationError; |
8 import com.google.dart.compiler.ast.DartThisExpression; | 8 import com.google.dart.compiler.ast.DartThisExpression; |
9 import com.google.dart.compiler.ast.DartUnit; | 9 import com.google.dart.compiler.ast.DartUnit; |
10 import com.google.dart.compiler.testing.TestCompilerContext; | 10 import com.google.dart.compiler.testing.TestCompilerContext; |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
207 makeCode( | 207 makeCode( |
208 "// filler filler filler filler filler filler filler filler filler f iller", | 208 "// filler filler filler filler filler filler filler filler filler f iller", |
209 "class A {", | 209 "class A {", |
210 " factory A() {", | 210 " factory A() {", |
211 " return super.foo();", | 211 " return super.foo();", |
212 " }", | 212 " }", |
213 "}"), | 213 "}"), |
214 errEx(ResolverErrorCode.SUPER_IN_FACTORY_CONSTRUCTOR, 4, 12, 5)); | 214 errEx(ResolverErrorCode.SUPER_IN_FACTORY_CONSTRUCTOR, 4, 12, 5)); |
215 } | 215 } |
216 | 216 |
217 public void testNameConflict_field_field() { | |
218 checkSourceErrors( | |
219 makeCode( | |
220 "class ClassDeclarationWithLongEnoughNameToForceLineSplitting {", | |
221 " var foo;", | |
222 " var foo;", | |
223 "}"), | |
224 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 2, 7, 3), | |
225 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3)); | |
226 } | |
227 | |
217 public void testCall1() { | 228 public void testCall1() { |
218 checkNumErrors("StaticInstanceCallNegativeTest.dart", 1); | 229 checkNumErrors("StaticInstanceCallNegativeTest.dart", 1); |
219 } | 230 } |
220 | 231 |
221 public void testClassExtendsInterfaceNegativeTest() { | 232 public void testClassExtendsInterfaceNegativeTest() { |
222 checkNumErrors("ClassExtendsInterfaceNegativeTest.dart", 1); | 233 checkNumErrors("ClassExtendsInterfaceNegativeTest.dart", 1); |
223 } | 234 } |
224 | 235 |
225 public void tesClassImplementsUnknownInterfaceNegativeTest() { | 236 public void tesClassImplementsUnknownInterfaceNegativeTest() { |
226 checkNumErrors("ClassImplementsUnknownInterfaceNegativeTest.dart", 1); | 237 checkNumErrors("ClassImplementsUnknownInterfaceNegativeTest.dart", 1); |
(...skipping 28 matching lines...) Expand all Loading... | |
255 } | 266 } |
256 | 267 |
257 public void testConstVariableInitializationNegativeTest1() { | 268 public void testConstVariableInitializationNegativeTest1() { |
258 checkNumErrors("ConstVariableInitializationNegativeTest1.dart", 1); | 269 checkNumErrors("ConstVariableInitializationNegativeTest1.dart", 1); |
259 } | 270 } |
260 | 271 |
261 public void testConstVariableInitializationNegativeTest2() { | 272 public void testConstVariableInitializationNegativeTest2() { |
262 checkNumErrors("ConstVariableInitializationNegativeTest2.dart", 1); | 273 checkNumErrors("ConstVariableInitializationNegativeTest2.dart", 1); |
263 } | 274 } |
264 | 275 |
265 public void testNameShadowNegativeTest1() { | 276 public void test_nameShadow_topLevel_getterSetter_class() { |
266 checkNumErrors("NameShadowNegativeTest1.dart", 1); | 277 checkSourceErrors( |
267 } | 278 makeCode( |
268 | 279 "// filler filler filler filler filler filler filler filler filler f iller", |
269 public void testNameShadowNegativeTest2() { | 280 "get foo() {}", |
270 checkNumErrors("NameShadowNegativeTest2.dart", 1); | 281 "set bar(x) {}", |
271 } | 282 "class foo {}", |
272 | 283 "class bar{}"), |
273 public void testNameShadowNegativeTest4() { | 284 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 5, 3), |
274 checkNumErrors("NameShadowNegativeTest4.dart", 1); | 285 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 4, 7, 3), |
275 } | 286 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 5, 3), |
276 | 287 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 5, 7, 3)); |
277 public void testNameShadowNegativeTest5() { | 288 } |
278 checkNumErrors("NameShadowNegativeTest5.dart", 1); | 289 |
279 } | 290 public void test_nameShadow_topLevel_class_getterSetter() { |
280 | 291 checkSourceErrors( |
281 public void testNameShadowNegativeTest6() { | 292 makeCode( |
282 checkNumErrors("NameShadowNegativeTest6.dart", 1); | 293 "// filler filler filler filler filler filler filler filler filler f iller", |
283 } | 294 "class foo {}", |
284 | 295 "class bar {}", |
285 public void testNameShadowNegativeTest7() { | 296 "get foo() {}", |
286 checkNumErrors("NameShadowNegativeTest7.dart", 1); | 297 "set bar(x) {}"), |
287 } | 298 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 7, 3), |
288 | 299 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 4, 5, 3), |
289 public void testNameShadowNegativeTest8() { | 300 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 7, 3), |
290 checkNumErrors("NameShadowNegativeTest8.dart", 1); | 301 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 5, 5, 3)); |
291 } | 302 } |
292 | 303 |
293 public void testNameShadowNegativeTest9() { | 304 public void test_nameShadow_topLevel_getter_setter() { |
294 checkNumErrors("NameShadowNegativeTest9.dart", 1); | 305 checkSourceErrors(makeCode( |
295 } | 306 "// filler filler filler filler filler filler filler filler filler fille r", |
296 | 307 "get bar() {}", |
297 public void testNameShadowNegativeTest10() { | 308 "set bar(x) {}")); |
298 checkNumErrors("NameShadowNegativeTest10.dart", 1); | 309 } |
299 } | 310 |
300 | 311 public void test_nameShadow_topLevel_setter_getter() { |
301 public void testNameShadowNegativeTest11() { | 312 checkSourceErrors(makeCode( |
302 checkNumErrors("NameShadowNegativeTest11.dart", 1); | 313 "// filler filler filler filler filler filler filler filler filler fille r", |
314 "set bar(x) {}", | |
315 "get bar() {}")); | |
316 } | |
317 | |
318 public void test_nameShadow_topLevel_getters() { | |
319 checkSourceErrors( | |
320 makeCode( | |
321 "// filler filler filler filler filler filler filler filler filler f iller", | |
322 "get bar() {}", | |
323 "get bar() {}"), | |
324 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 5, 3), | |
325 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 5, 3)); | |
326 } | |
327 | |
328 public void test_nameShadow_topLevel_setters() { | |
329 checkSourceErrors( | |
330 makeCode( | |
331 "// filler filler filler filler filler filler filler filler filler f iller", | |
332 "set bar(x) {}", | |
333 "set bar(x) {}"), | |
334 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 2, 5, 3), | |
335 errEx(ResolverErrorCode.DUPLICATE_TOP_LEVEL_DEFINITION, 3, 5, 3)); | |
336 } | |
337 | |
338 /** | |
339 * Multiple unnamed constructor definitions. | |
340 */ | |
341 public void test_nameShadow_unnamedConstructors() { | |
342 checkSourceErrors( | |
343 makeCode( | |
344 "// filler filler filler filler filler filler filler filler filler f iller", | |
345 "class A {", | |
346 " A(x) {}", | |
347 " A(x,y) {}", | |
348 "}"), | |
349 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 1), | |
350 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 1)); | |
351 { | |
352 String message = errors.get(0).getMessage(); | |
353 assertTrue(message, message.contains("'A'")); | |
354 } | |
355 { | |
356 String message = errors.get(1).getMessage(); | |
357 assertTrue(message, message.contains("'A'")); | |
358 } | |
359 } | |
360 | |
361 /** | |
362 * Multiple unnamed constructor definitions. Make sure modifiers works as expe cted. | |
363 */ | |
364 public void test_nameShadow_unnamedConstructors_constModifier() { | |
365 checkSourceErrors( | |
366 makeCode( | |
367 "// filler filler filler filler filler filler filler filler filler f iller", | |
368 "class A {", | |
369 " A(x) {}", | |
370 " const A(x,y) {}", | |
371 "}"), | |
372 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 1), | |
373 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 9, 1), | |
374 errEx(ResolverErrorCode.CONST_CONSTRUCTOR_CANNOT_HAVE_BODY, 4, 9, 1)); | |
375 { | |
376 String message = errors.get(0).getMessage(); | |
377 assertTrue(message, message.contains("'A'")); | |
378 } | |
379 } | |
380 | |
381 /** | |
382 * Named constructor shadows another named constructor. | |
383 */ | |
384 public void test_nameShadow_namedConstructors() { | |
385 checkSourceErrors( | |
386 makeCode( | |
387 "// filler filler filler filler filler filler filler filler filler f iller", | |
388 "class A {", | |
389 " A.foo() {}", | |
390 " A.foo() {}", | |
391 "}"), | |
392 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 5), | |
393 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 5)); | |
394 { | |
395 String message = errors.get(0).getMessage(); | |
396 assertTrue(message, message.contains("'A.foo'")); | |
397 } | |
398 { | |
399 String message = errors.get(1).getMessage(); | |
400 assertTrue(message, message.contains("'A.foo'")); | |
401 } | |
402 } | |
403 | |
404 /** | |
405 * Method shadows another method. | |
406 */ | |
407 public void test_nameShadow_methods() { | |
408 checkSourceErrors( | |
409 makeCode( | |
410 "// filler filler filler filler filler filler filler filler filler f iller", | |
411 "class A {", | |
412 " foo() {}", | |
413 " foo() {}", | |
414 "}"), | |
415 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), | |
416 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 3)); | |
417 } | |
418 | |
419 /** | |
420 * Field shadows method. | |
421 */ | |
422 public void test_nameShadow_method_field() { | |
423 checkSourceErrors( | |
424 makeCode( | |
425 "// filler filler filler filler filler filler filler filler filler f iller", | |
426 "class A {", | |
427 " foo() {}", | |
428 " var foo;", | |
429 "}"), | |
430 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), | |
431 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); | |
432 } | |
433 | |
434 /** | |
435 * Static method shadows instance method. | |
436 */ | |
437 public void test_nameShadow_method_staticMethod() { | |
438 checkSourceErrors( | |
439 makeCode( | |
440 "// filler filler filler filler filler filler filler filler filler f iller", | |
441 "class A {", | |
442 " foo(x) {}", | |
443 " static foo(a,b) {}", | |
444 "}"), | |
445 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), | |
446 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 10, 3)); | |
447 } | |
448 | |
449 /** | |
450 * Field shadows another field. | |
451 */ | |
452 public void test_nameShadow_fields() { | |
453 checkSourceErrors( | |
454 makeCode( | |
455 "// filler filler filler filler filler filler filler filler filler f iller", | |
456 "class A {", | |
457 " var _a;", | |
458 " var _a;", | |
459 "}"), | |
460 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 2), | |
461 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 2)); | |
462 } | |
463 | |
464 /** | |
465 * Field shadows setter/getter. | |
466 */ | |
467 public void test_nameShadow_setter_field() { | |
468 checkSourceErrors( | |
469 makeCode( | |
470 "// filler filler filler filler filler filler filler filler filler f iller", | |
471 "class A {", | |
472 " set foo(x) {}", | |
473 " get foo() {}", | |
474 " var foo;", | |
475 "}"), | |
476 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
477 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 5, 7, 3)); | |
478 } | |
479 | |
480 /** | |
481 * Setter shadows field. | |
482 */ | |
483 public void test_nameShadow_field_setter() { | |
484 checkSourceErrors( | |
485 makeCode( | |
486 "// filler filler filler filler filler filler filler filler filler f iller", | |
487 "class A {", | |
488 " var foo;", | |
489 " set foo(x) {}", | |
490 "}"), | |
491 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
492 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); | |
493 } | |
494 | |
495 /** | |
496 * Method shadows setter. | |
497 */ | |
498 public void test_nameShadow_setter_method() { | |
499 checkSourceErrors( | |
500 makeCode( | |
501 "// filler filler filler filler filler filler filler filler filler f iller", | |
502 "class A {", | |
503 " set foo(x) {}", | |
504 " foo() {}", | |
505 "}"), | |
506 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
507 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 3, 3)); | |
508 } | |
509 | |
510 /** | |
511 * Getter shadows field. | |
512 */ | |
513 public void test_nameShadow_field_getter() { | |
514 checkSourceErrors( | |
515 makeCode( | |
516 "// filler filler filler filler filler filler filler filler filler f iller", | |
517 "class A {", | |
518 " var foo;", | |
519 " get foo() {}", | |
520 "}"), | |
521 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
522 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); | |
523 } | |
524 | |
525 /** | |
526 * Setter shadows another setter. | |
zundel
2011/12/12 16:02:59
Setter --> Getter and setter --> getter
| |
527 */ | |
528 public void test_nameShadow_getters() { | |
529 checkSourceErrors( | |
530 makeCode( | |
531 "// filler filler filler filler filler filler filler filler filler f iller", | |
532 "class A {", | |
533 " get foo() {}", | |
534 " set foo(x) {}", | |
535 " get foo() {}", | |
536 "}"), | |
537 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
538 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 5, 7, 3)); | |
539 } | |
540 | |
541 /** | |
542 * Setter shadows another setter. | |
543 */ | |
544 public void test_nameShadow_setters() { | |
545 checkSourceErrors( | |
546 makeCode( | |
547 "// filler filler filler filler filler filler filler filler filler f iller", | |
548 "class A {", | |
549 " set foo(x) {}", | |
550 " get foo() {}", | |
551 " set foo(x) {}", | |
552 "}"), | |
553 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
554 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 5, 7, 3)); | |
555 } | |
556 | |
557 /** | |
558 * Field shadows getter. | |
559 */ | |
560 public void test_nameShadow_getter_field() { | |
561 checkSourceErrors( | |
562 makeCode( | |
563 "// filler filler filler filler filler filler filler filler filler f iller", | |
564 "class A {", | |
565 " get foo() {}", | |
566 " var foo;", | |
567 "}"), | |
568 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 7, 3), | |
569 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); | |
570 } | |
571 | |
572 /** | |
573 * Setter shadows method. | |
574 */ | |
575 public void test_nameShadow_method_setter() { | |
576 checkSourceErrors( | |
577 makeCode( | |
578 "// filler filler filler filler filler filler filler filler filler f iller", | |
579 "class A {", | |
580 " foo() {}", | |
581 " set foo(x) {}", | |
582 "}"), | |
583 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 3, 3, 3), | |
584 errEx(ResolverErrorCode.DUPLICATE_MEMBER, 4, 7, 3)); | |
303 } | 585 } |
304 | 586 |
305 public void testUnresolvedSuperFieldNegativeTest() { | 587 public void testUnresolvedSuperFieldNegativeTest() { |
306 checkNumErrors("UnresolvedSuperFieldNegativeTest.dart", 1); | 588 checkNumErrors("UnresolvedSuperFieldNegativeTest.dart", 1); |
307 } | 589 } |
308 | 590 |
309 public void testStaticSuperFieldNegativeTest() { | 591 public void testStaticSuperFieldNegativeTest() { |
310 checkNumErrors("StaticSuperFieldNegativeTest.dart", 1); | 592 checkNumErrors("StaticSuperFieldNegativeTest.dart", 1); |
311 } | 593 } |
312 | 594 |
(...skipping 19 matching lines...) Expand all Loading... | |
332 | 614 |
333 private TestCompilerContext getContext() { | 615 private TestCompilerContext getContext() { |
334 return new TestCompilerContext() { | 616 return new TestCompilerContext() { |
335 @Override | 617 @Override |
336 public void onError(DartCompilationError event) { | 618 public void onError(DartCompilationError event) { |
337 errors.add(event); | 619 errors.add(event); |
338 } | 620 } |
339 }; | 621 }; |
340 } | 622 } |
341 } | 623 } |
OLD | NEW |