Chromium Code Reviews| 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 |