| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library analyzer.test.generated.resolver_test; | 5 library analyzer.test.generated.resolver_test; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 | 8 |
| 9 import 'package:analyzer/dart/ast/ast.dart'; | 9 import 'package:analyzer/dart/ast/ast.dart'; |
| 10 import 'package:analyzer/dart/ast/visitor.dart'; | 10 import 'package:analyzer/dart/ast/visitor.dart'; |
| (...skipping 9378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9389 } | 9389 } |
| 9390 }'''); | 9390 }'''); |
| 9391 computeLibrarySourceErrors(source); | 9391 computeLibrarySourceErrors(source); |
| 9392 assertNoErrors(source); | 9392 assertNoErrors(source); |
| 9393 verify([source]); | 9393 verify([source]); |
| 9394 } | 9394 } |
| 9395 | 9395 |
| 9396 void test_isValidMixin_badSuperclass() { | 9396 void test_isValidMixin_badSuperclass() { |
| 9397 Source source = addSource(r''' | 9397 Source source = addSource(r''' |
| 9398 class A extends B {} | 9398 class A extends B {} |
| 9399 class B {}'''); | 9399 class B {} |
| 9400 class C = Object with A;'''); |
| 9400 LibraryElement library = resolve2(source); | 9401 LibraryElement library = resolve2(source); |
| 9401 expect(library, isNotNull); | 9402 expect(library, isNotNull); |
| 9402 CompilationUnitElement unit = library.definingCompilationUnit; | 9403 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9403 expect(unit, isNotNull); | 9404 expect(unit, isNotNull); |
| 9404 List<ClassElement> classes = unit.types; | 9405 ClassElement a = unit.getType('A'); |
| 9405 expect(classes, hasLength(2)); | 9406 expect(a.isValidMixin, isFalse); |
| 9406 expect(classes[0].isValidMixin, isFalse); | 9407 assertErrors(source, [CompileTimeErrorCode.MIXIN_INHERITS_FROM_NOT_OBJECT]); |
| 9408 verify([source]); |
| 9409 } |
| 9410 |
| 9411 void test_isValidMixin_badSuperclass_withSuperMixins() { |
| 9412 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
| 9413 Source source = addSource(r''' |
| 9414 class A extends B {} |
| 9415 class B {} |
| 9416 class C = Object with A;'''); |
| 9417 LibraryElement library = resolve2(source); |
| 9418 expect(library, isNotNull); |
| 9419 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9420 expect(unit, isNotNull); |
| 9421 ClassElement a = unit.getType('A'); |
| 9422 expect(a.isValidMixin, isTrue); |
| 9407 assertNoErrors(source); | 9423 assertNoErrors(source); |
| 9408 verify([source]); | 9424 verify([source]); |
| 9409 } | 9425 } |
| 9410 | 9426 |
| 9411 void test_isValidMixin_constructor() { | 9427 void test_isValidMixin_constructor() { |
| 9412 Source source = addSource(r''' | 9428 Source source = addSource(r''' |
| 9413 class A { | 9429 class A { |
| 9414 A() {} | 9430 A() {} |
| 9415 }'''); | 9431 } |
| 9432 class C = Object with A;'''); |
| 9416 LibraryElement library = resolve2(source); | 9433 LibraryElement library = resolve2(source); |
| 9417 expect(library, isNotNull); | 9434 expect(library, isNotNull); |
| 9418 CompilationUnitElement unit = library.definingCompilationUnit; | 9435 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9419 expect(unit, isNotNull); | 9436 expect(unit, isNotNull); |
| 9420 List<ClassElement> classes = unit.types; | 9437 ClassElement a = unit.getType('A'); |
| 9421 expect(classes, hasLength(1)); | 9438 expect(a.isValidMixin, isFalse); |
| 9422 expect(classes[0].isValidMixin, isFalse); | 9439 assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]); |
| 9440 verify([source]); |
| 9441 } |
| 9442 |
| 9443 void test_isValidMixin_constructor_withSuperMixins() { |
| 9444 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
| 9445 Source source = addSource(r''' |
| 9446 class A { |
| 9447 A() {} |
| 9448 } |
| 9449 class C = Object with A;'''); |
| 9450 LibraryElement library = resolve2(source); |
| 9451 expect(library, isNotNull); |
| 9452 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9453 expect(unit, isNotNull); |
| 9454 ClassElement a = unit.getType('A'); |
| 9455 expect(a.isValidMixin, isFalse); |
| 9456 assertErrors(source, [CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR]); |
| 9457 verify([source]); |
| 9458 } |
| 9459 |
| 9460 void test_isValidMixin_factoryConstructor() { |
| 9461 Source source = addSource(r''' |
| 9462 class A { |
| 9463 factory A() => null; |
| 9464 } |
| 9465 class C = Object with A;'''); |
| 9466 LibraryElement library = resolve2(source); |
| 9467 expect(library, isNotNull); |
| 9468 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9469 expect(unit, isNotNull); |
| 9470 ClassElement a = unit.getType('A'); |
| 9471 expect(a.isValidMixin, isTrue); |
| 9423 assertNoErrors(source); | 9472 assertNoErrors(source); |
| 9424 verify([source]); | 9473 verify([source]); |
| 9425 } | 9474 } |
| 9475 |
| 9476 void test_isValidMixin_factoryConstructor_withSuperMixins() { |
| 9477 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
| 9478 Source source = addSource(r''' |
| 9479 class A { |
| 9480 factory A() => null; |
| 9481 } |
| 9482 class C = Object with A;'''); |
| 9483 LibraryElement library = resolve2(source); |
| 9484 expect(library, isNotNull); |
| 9485 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9486 expect(unit, isNotNull); |
| 9487 ClassElement a = unit.getType('A'); |
| 9488 expect(a.isValidMixin, isTrue); |
| 9489 assertNoErrors(source); |
| 9490 verify([source]); |
| 9491 } |
| 9426 | 9492 |
| 9427 void test_isValidMixin_super() { | 9493 void test_isValidMixin_super() { |
| 9428 Source source = addSource(r''' | 9494 Source source = addSource(r''' |
| 9429 class A { | 9495 class A { |
| 9430 toString() { | 9496 toString() { |
| 9431 return super.toString(); | 9497 return super.toString(); |
| 9432 } | 9498 } |
| 9433 }'''); | 9499 } |
| 9500 class C = Object with A;'''); |
| 9434 LibraryElement library = resolve2(source); | 9501 LibraryElement library = resolve2(source); |
| 9435 expect(library, isNotNull); | 9502 expect(library, isNotNull); |
| 9436 CompilationUnitElement unit = library.definingCompilationUnit; | 9503 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9437 expect(unit, isNotNull); | 9504 expect(unit, isNotNull); |
| 9438 List<ClassElement> classes = unit.types; | 9505 ClassElement a = unit.getType('A'); |
| 9439 expect(classes, hasLength(1)); | 9506 expect(a.isValidMixin, isFalse); |
| 9440 expect(classes[0].isValidMixin, isFalse); | 9507 assertErrors(source, [CompileTimeErrorCode.MIXIN_REFERENCES_SUPER]); |
| 9508 verify([source]); |
| 9509 } |
| 9510 |
| 9511 void test_isValidMixin_super_withSuperMixins() { |
| 9512 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
| 9513 Source source = addSource(r''' |
| 9514 class A { |
| 9515 toString() { |
| 9516 return super.toString(); |
| 9517 } |
| 9518 } |
| 9519 class C = Object with A;'''); |
| 9520 LibraryElement library = resolve2(source); |
| 9521 expect(library, isNotNull); |
| 9522 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9523 expect(unit, isNotNull); |
| 9524 ClassElement a = unit.getType('A'); |
| 9525 expect(a.isValidMixin, isTrue); |
| 9441 assertNoErrors(source); | 9526 assertNoErrors(source); |
| 9442 verify([source]); | 9527 verify([source]); |
| 9443 } | 9528 } |
| 9444 | 9529 |
| 9445 void test_isValidMixin_valid() { | 9530 void test_isValidMixin_valid() { |
| 9446 Source source = addSource("class A {}"); | 9531 Source source = addSource(''' |
| 9532 class A {} |
| 9533 class C = Object with A;'''); |
| 9447 LibraryElement library = resolve2(source); | 9534 LibraryElement library = resolve2(source); |
| 9448 expect(library, isNotNull); | 9535 expect(library, isNotNull); |
| 9449 CompilationUnitElement unit = library.definingCompilationUnit; | 9536 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9450 expect(unit, isNotNull); | 9537 expect(unit, isNotNull); |
| 9451 List<ClassElement> classes = unit.types; | 9538 ClassElement a = unit.getType('A'); |
| 9452 expect(classes, hasLength(1)); | 9539 expect(a.isValidMixin, isTrue); |
| 9453 expect(classes[0].isValidMixin, isTrue); | |
| 9454 assertNoErrors(source); | 9540 assertNoErrors(source); |
| 9455 verify([source]); | 9541 verify([source]); |
| 9456 } | 9542 } |
| 9543 |
| 9544 void test_isValidMixin_valid_withSuperMixins() { |
| 9545 resetWithOptions(new AnalysisOptionsImpl()..enableSuperMixins = true); |
| 9546 Source source = addSource(''' |
| 9547 class A {} |
| 9548 class C = Object with A;'''); |
| 9549 LibraryElement library = resolve2(source); |
| 9550 expect(library, isNotNull); |
| 9551 CompilationUnitElement unit = library.definingCompilationUnit; |
| 9552 expect(unit, isNotNull); |
| 9553 ClassElement a = unit.getType('A'); |
| 9554 expect(a.isValidMixin, isTrue); |
| 9555 assertNoErrors(source); |
| 9556 verify([source]); |
| 9557 } |
| 9457 | 9558 |
| 9458 void test_labels_switch() { | 9559 void test_labels_switch() { |
| 9459 Source source = addSource(r''' | 9560 Source source = addSource(r''' |
| 9460 void doSwitch(int target) { | 9561 void doSwitch(int target) { |
| 9461 switch (target) { | 9562 switch (target) { |
| 9462 l0: case 0: | 9563 l0: case 0: |
| 9463 continue l1; | 9564 continue l1; |
| 9464 l1: case 1: | 9565 l1: case 1: |
| 9465 continue l0; | 9566 continue l0; |
| 9466 default: | 9567 default: |
| (...skipping 7461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16928 | 17029 |
| 16929 void _resolveTestUnit(String code) { | 17030 void _resolveTestUnit(String code) { |
| 16930 testCode = code; | 17031 testCode = code; |
| 16931 testSource = addSource(testCode); | 17032 testSource = addSource(testCode); |
| 16932 LibraryElement library = resolve2(testSource); | 17033 LibraryElement library = resolve2(testSource); |
| 16933 assertNoErrors(testSource); | 17034 assertNoErrors(testSource); |
| 16934 verify([testSource]); | 17035 verify([testSource]); |
| 16935 testUnit = resolveCompilationUnit(testSource, library); | 17036 testUnit = resolveCompilationUnit(testSource, library); |
| 16936 } | 17037 } |
| 16937 } | 17038 } |
| OLD | NEW |