| Index: pkg/analyzer/test/generated/resolver_test.dart
|
| diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
|
| index 4054c212a442b6ad9dc20deb55538eb6aa77a13f..8e0de0a85880abaefd7cadf709aa483645fceb43 100644
|
| --- a/pkg/analyzer/test/generated/resolver_test.dart
|
| +++ b/pkg/analyzer/test/generated/resolver_test.dart
|
| @@ -20,6 +20,7 @@ import 'package:analyzer/src/generated/element.dart';
|
| import 'package:analyzer/src/generated/resolver.dart';
|
| import 'package:analyzer/src/generated/engine.dart';
|
| import 'package:analyzer/src/generated/utilities_dart.dart';
|
| +import 'package:analyzer/src/generated/utilities_collection.dart';
|
| import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
|
| import 'package:analyzer/src/generated/sdk_io.dart' show DirectoryBasedDartSdk;
|
| import 'package:unittest/unittest.dart' as _ut;
|
| @@ -2077,6 +2078,17 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_importDeferredLibraryWithLoadFunction() {
|
| + addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f() {}"]));
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "library root;",
|
| + "import 'lib1.dart' deferred as lib1;",
|
| + "main() { lib1.f(); }"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_importDuplicatedLibraryName() {
|
| Source source = addSource(EngineTestCase.createSource([
|
| "library test;",
|
| @@ -2219,6 +2231,57 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_inconsistentMethodInheritance_overrideTrumpsInherits_getter() {
|
| + // 16134
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class B<S> {",
|
| + " S get g => null;",
|
| + "}",
|
| + "abstract class I<U> {",
|
| + " U get g => null;",
|
| + "}",
|
| + "class C extends B<double> implements I<int> {",
|
| + " num get g => null;",
|
| + "}"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_inconsistentMethodInheritance_overrideTrumpsInherits_method() {
|
| + // 16134
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class B<S> {",
|
| + " m(S s) => null;",
|
| + "}",
|
| + "abstract class I<U> {",
|
| + " m(U u) => null;",
|
| + "}",
|
| + "class C extends B<double> implements I<int> {",
|
| + " m(num n) => null;",
|
| + "}"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_inconsistentMethodInheritance_overrideTrumpsInherits_setter() {
|
| + // 16134
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class B<S> {",
|
| + " set t(S s) {}",
|
| + "}",
|
| + "abstract class I<U> {",
|
| + " set t(U u) {}",
|
| + "}",
|
| + "class C extends B<double> implements I<int> {",
|
| + " set t(num n) {}",
|
| + "}"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_inconsistentMethodInheritance_simple() {
|
| Source source = addSource(EngineTestCase.createSource([
|
| "abstract class A {",
|
| @@ -3024,6 +3087,46 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
|
| + // 15979
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class M {}",
|
| + "abstract class A {}",
|
| + "abstract class I {",
|
| + " m();",
|
| + "}",
|
| + "abstract class B = A with M implements I;"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() {
|
| + // 15979
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class M {",
|
| + " m();",
|
| + "}",
|
| + "abstract class A {}",
|
| + "abstract class B = A with M;"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
|
| + // 15979
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class M {}",
|
| + "abstract class A {",
|
| + " m();",
|
| + "}",
|
| + "abstract class B = A with M;"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_nonAbstractClassInheritsAbstractMemberOne_mixin_getter() {
|
| // 17034
|
| Source source = addSource(EngineTestCase.createSource([
|
| @@ -3881,6 +3984,21 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_sharedDeferredPrefix() {
|
| + addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f1() {}"]));
|
| + addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "f2() {}"]));
|
| + addNamedSource("/lib3.dart", EngineTestCase.createSource(["library lib3;", "f3() {}"]));
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "library root;",
|
| + "import 'lib1.dart' deferred as lib1;",
|
| + "import 'lib2.dart' as lib;",
|
| + "import 'lib3.dart' as lib;",
|
| + "main() { lib1.f1(); lib.f2(); lib.f3(); }"]));
|
| + resolve(source);
|
| + assertNoErrors(source);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_staticAccessToInstanceMember_annotation() {
|
| Source source = addSource(EngineTestCase.createSource([
|
| "class A {",
|
| @@ -5008,6 +5126,10 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_typeParameter);
|
| });
|
| + _ut.test('test_importDeferredLibraryWithLoadFunction', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_importDeferredLibraryWithLoadFunction);
|
| + });
|
| _ut.test('test_importDuplicatedLibraryName', () {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_importDuplicatedLibraryName);
|
| @@ -5048,6 +5170,18 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_inconsistentMethodInheritance_methods_typeParameters1);
|
| });
|
| + _ut.test('test_inconsistentMethodInheritance_overrideTrumpsInherits_getter', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_inconsistentMethodInheritance_overrideTrumpsInherits_getter);
|
| + });
|
| + _ut.test('test_inconsistentMethodInheritance_overrideTrumpsInherits_method', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_inconsistentMethodInheritance_overrideTrumpsInherits_method);
|
| + });
|
| + _ut.test('test_inconsistentMethodInheritance_overrideTrumpsInherits_setter', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_inconsistentMethodInheritance_overrideTrumpsInherits_setter);
|
| + });
|
| _ut.test('test_inconsistentMethodInheritance_simple', () {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_inconsistentMethodInheritance_simple);
|
| @@ -5344,6 +5478,18 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_abstractsDontOverrideConcretes_setter);
|
| });
|
| + _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface);
|
| + });
|
| + _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin);
|
| + });
|
| + _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass);
|
| + });
|
| _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_mixin_getter', () {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_mixin_getter);
|
| @@ -5624,6 +5770,10 @@ class NonErrorResolverTest extends ResolverTestCase {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_reversedTypeArguments);
|
| });
|
| + _ut.test('test_sharedDeferredPrefix', () {
|
| + final __test = new NonErrorResolverTest();
|
| + runJUnitTest(__test, __test.test_sharedDeferredPrefix);
|
| + });
|
| _ut.test('test_staticAccessToInstanceMember_annotation', () {
|
| final __test = new NonErrorResolverTest();
|
| runJUnitTest(__test, __test.test_staticAccessToInstanceMember_annotation);
|
| @@ -7774,55 +7924,6 @@ class HintCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| - void fail_overriddingPrivateMember_getter() {
|
| - Source source = addSource(EngineTestCase.createSource([
|
| - "import 'lib1.dart';",
|
| - "class B extends A {",
|
| - " get _g => 0;",
|
| - "}"]));
|
| - Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " get _g => 0;", "}"]));
|
| - resolve(source);
|
| - assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]);
|
| - verify([source, source2]);
|
| - }
|
| -
|
| - void fail_overriddingPrivateMember_method() {
|
| - Source source = addSource(EngineTestCase.createSource([
|
| - "import 'lib1.dart';",
|
| - "class B extends A {",
|
| - " _m(int x) => 0;",
|
| - "}"]));
|
| - Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " _m(int x) => 0;", "}"]));
|
| - resolve(source);
|
| - assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]);
|
| - verify([source, source2]);
|
| - }
|
| -
|
| - void fail_overriddingPrivateMember_method2() {
|
| - Source source = addSource(EngineTestCase.createSource([
|
| - "import 'lib1.dart';",
|
| - "class B extends A {}",
|
| - "class C extends B {",
|
| - " _m(int x) => 0;",
|
| - "}"]));
|
| - Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " _m(int x) => 0;", "}"]));
|
| - resolve(source);
|
| - assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]);
|
| - verify([source, source2]);
|
| - }
|
| -
|
| - void fail_overriddingPrivateMember_setter() {
|
| - Source source = addSource(EngineTestCase.createSource([
|
| - "import 'lib1.dart';",
|
| - "class B extends A {",
|
| - " set _s(int x) {}",
|
| - "}"]));
|
| - Source source2 = addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class A {", " set _s(int x) {}", "}"]));
|
| - resolve(source);
|
| - assertErrors(source, [HintCode.OVERRIDDING_PRIVATE_MEMBER]);
|
| - verify([source, source2]);
|
| - }
|
| -
|
| void fail_overrideEqualsButNotHashCode() {
|
| Source source = addSource(EngineTestCase.createSource(["class A {", " bool operator ==(x) {}", "}"]));
|
| resolve(source);
|
| @@ -8346,6 +8447,75 @@ class HintCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_invalidAssignment_instanceVariable() {
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class A {",
|
| + " int x;",
|
| + "}",
|
| + "f(var y) {",
|
| + " A a;",
|
| + " if(y is String) {",
|
| + " a.x = y;",
|
| + " }",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_invalidAssignment_localVariable() {
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "f(var y) {",
|
| + " if(y is String) {",
|
| + " int x = y;",
|
| + " }",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_invalidAssignment_message() {
|
| + // The implementation of HintCode.INVALID_ASSIGNMENT assumes that
|
| + // StaticTypeWarningCode.INVALID_ASSIGNMENT has the same message.
|
| + JUnitTestCase.assertEquals(HintCode.INVALID_ASSIGNMENT.message, StaticTypeWarningCode.INVALID_ASSIGNMENT.message);
|
| + }
|
| +
|
| + void test_invalidAssignment_staticVariable() {
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class A {",
|
| + " static int x;",
|
| + "}",
|
| + "f(var y) {",
|
| + " if(y is String) {",
|
| + " A.x = y;",
|
| + " }",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_invalidAssignment_variableDeclaration() {
|
| + // 17971
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class Point {",
|
| + " final num x, y;",
|
| + " Point(this.x, this.y);",
|
| + " Point operator +(Point other) {",
|
| + " return new Point(x+other.x, y+other.y);",
|
| + " }",
|
| + "}",
|
| + "main() {",
|
| + " var p1 = new Point(0, 0);",
|
| + " var p2 = new Point(10, 10);",
|
| + " int n = p1 + p2;",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [HintCode.INVALID_ASSIGNMENT]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_isDouble() {
|
| Source source = addSource(EngineTestCase.createSource(["var v = 1 is double;"]));
|
| resolve(source);
|
| @@ -8943,6 +9113,26 @@ class HintCodeTest extends ResolverTestCase {
|
| final __test = new HintCodeTest();
|
| runJUnitTest(__test, __test.test_duplicateImport3);
|
| });
|
| + _ut.test('test_invalidAssignment_instanceVariable', () {
|
| + final __test = new HintCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidAssignment_instanceVariable);
|
| + });
|
| + _ut.test('test_invalidAssignment_localVariable', () {
|
| + final __test = new HintCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidAssignment_localVariable);
|
| + });
|
| + _ut.test('test_invalidAssignment_message', () {
|
| + final __test = new HintCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidAssignment_message);
|
| + });
|
| + _ut.test('test_invalidAssignment_staticVariable', () {
|
| + final __test = new HintCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidAssignment_staticVariable);
|
| + });
|
| + _ut.test('test_invalidAssignment_variableDeclaration', () {
|
| + final __test = new HintCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidAssignment_variableDeclaration);
|
| + });
|
| _ut.test('test_isDouble', () {
|
| final __test = new HintCodeTest();
|
| runJUnitTest(__test, __test.test_isDouble);
|
| @@ -9634,6 +9824,12 @@ class ResolverTestCase extends EngineTestCase {
|
| */
|
| CompilationUnit resolveCompilationUnit(Source source, LibraryElement library) => _analysisContext.resolveCompilationUnit(source, library);
|
|
|
| + @override
|
| + void tearDown() {
|
| + _analysisContext = null;
|
| + super.tearDown();
|
| + }
|
| +
|
| /**
|
| * Verify that all of the identifiers in the compilation units associated with the given sources
|
| * have been resolved.
|
| @@ -12341,6 +12537,17 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_importDeferredLibraryWithLoadFunction() {
|
| + addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "loadLibrary() {}", "f() {}"]));
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "library root;",
|
| + "import 'lib1.dart' deferred as lib1;",
|
| + "main() { lib1.f(); }"]));
|
| + resolve(source);
|
| + assertErrors(source, [CompileTimeErrorCode.IMPORT_DEFERRED_LIBRARY_WITH_LOAD_FUNCTION]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_importInternalLibrary() {
|
| Source source = addSource(EngineTestCase.createSource(["import 'dart:_interceptors';"]));
|
| resolve(source);
|
| @@ -13732,6 +13939,19 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_sharedDeferredPrefix() {
|
| + addNamedSource("/lib1.dart", EngineTestCase.createSource(["library lib1;", "f1() {}"]));
|
| + addNamedSource("/lib2.dart", EngineTestCase.createSource(["library lib2;", "f2() {}"]));
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "library root;",
|
| + "import 'lib1.dart' deferred as lib;",
|
| + "import 'lib2.dart' as lib;",
|
| + "main() { lib.f1(); lib.f2(); }"]));
|
| + resolve(source);
|
| + assertErrors(source, [CompileTimeErrorCode.SHARED_DEFERRED_PREFIX]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_superInInvalidContext_binaryExpression() {
|
| Source source = addSource(EngineTestCase.createSource(["var v = super + 0;"]));
|
| resolve(source);
|
| @@ -14792,6 +15012,10 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
|
| final __test = new CompileTimeErrorCodeTest();
|
| runJUnitTest(__test, __test.test_implicitThisReferenceInInitializer_superConstructorInvocation);
|
| });
|
| + _ut.test('test_importDeferredLibraryWithLoadFunction', () {
|
| + final __test = new CompileTimeErrorCodeTest();
|
| + runJUnitTest(__test, __test.test_importDeferredLibraryWithLoadFunction);
|
| + });
|
| _ut.test('test_importInternalLibrary', () {
|
| final __test = new CompileTimeErrorCodeTest();
|
| runJUnitTest(__test, __test.test_importInternalLibrary);
|
| @@ -15396,6 +15620,10 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
|
| final __test = new CompileTimeErrorCodeTest();
|
| runJUnitTest(__test, __test.test_returnInGenerativeConstructor_expressionFunctionBody);
|
| });
|
| + _ut.test('test_sharedDeferredPrefix', () {
|
| + final __test = new CompileTimeErrorCodeTest();
|
| + runJUnitTest(__test, __test.test_sharedDeferredPrefix);
|
| + });
|
| _ut.test('test_superInInvalidContext_binaryExpression', () {
|
| final __test = new CompileTimeErrorCodeTest();
|
| runJUnitTest(__test, __test.test_superInInvalidContext_binaryExpression);
|
| @@ -17098,6 +17326,58 @@ class PubSuggestionCodeTest extends ResolverTestCase {
|
| }
|
|
|
| class StaticWarningCodeTest extends ResolverTestCase {
|
| + void fail_invalidGetterOverrideReturnType_twoInterfaces_conflicting() {
|
| + // 17983
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class I<U> {",
|
| + " U get g => null;",
|
| + "}",
|
| + "abstract class J<V> {",
|
| + " V get g => null;",
|
| + "}",
|
| + "class B implements I<int>, J<String> {",
|
| + " double get g => null;",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.INVALID_GETTER_OVERRIDE_RETURN_TYPE]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void fail_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() {
|
| + // 17983
|
| + // language/override_inheritance_generic_test/08
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class I<U> {",
|
| + " m(U u) => null;",
|
| + "}",
|
| + "abstract class J<V> {",
|
| + " m(V v) => null;",
|
| + "}",
|
| + "class B implements I<int>, J<String> {",
|
| + " m(double d) {}",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void fail_invalidSetterOverrideNormalParamType_twoInterfaces_conflicting() {
|
| + // 17983
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class I<U> {",
|
| + " set s(U u) {}",
|
| + "}",
|
| + "abstract class J<V> {",
|
| + " set s(V v) {}",
|
| + "}",
|
| + "class B implements I<int>, J<String> {",
|
| + " set s(double d) {}",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
|
| + verify([source]);
|
| + }
|
| +
|
| void fail_undefinedGetter() {
|
| Source source = addSource(EngineTestCase.createSource([]));
|
| resolve(source);
|
| @@ -18286,7 +18566,7 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| - void test_invalidMethodOverrideNormalParamType() {
|
| + void test_invalidMethodOverrideNormalParamType_interface() {
|
| Source source = addSource(EngineTestCase.createSource([
|
| "class A {",
|
| " m(int a) {}",
|
| @@ -18299,6 +18579,35 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_invalidMethodOverrideNormalParamType_superclass() {
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class A {",
|
| + " m(int a) {}",
|
| + "}",
|
| + "class B extends A {",
|
| + " m(String a) {}",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_invalidMethodOverrideNormalParamType_superclass_interface() {
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class I<U> {",
|
| + " m(U u) => null;",
|
| + "}",
|
| + "abstract class J<V> {",
|
| + " m(V v) => null;",
|
| + "}",
|
| + "class B extends I<int> implements J<String> {",
|
| + " m(double d) {}",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.INVALID_METHOD_OVERRIDE_NORMAL_PARAM_TYPE]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_invalidMethodOverrideNormalParamType_twoInterfaces() {
|
| Source source = addSource(EngineTestCase.createSource([
|
| "abstract class I {",
|
| @@ -18562,6 +18871,23 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_invalidSetterOverrideNormalParamType_superclass_interface() {
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class I {",
|
| + " set setter14(int _) => null;",
|
| + "}",
|
| + "abstract class J {",
|
| + " set setter14(num _) => null;",
|
| + "}",
|
| + "abstract class A extends I implements J {}",
|
| + "class B extends A {",
|
| + " set setter14(String _) => null;",
|
| + "}"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.INVALID_SETTER_OVERRIDE_NORMAL_PARAM_TYPE]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_invalidSetterOverrideNormalParamType_twoInterfaces() {
|
| // test from language/override_inheritance_field_test_34.dart
|
| Source source = addSource(EngineTestCase.createSource([
|
| @@ -18815,6 +19141,46 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface() {
|
| + // 15979
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class M {}",
|
| + "abstract class A {}",
|
| + "abstract class I {",
|
| + " m();",
|
| + "}",
|
| + "class B = A with M implements I;"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin() {
|
| + // 15979
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "abstract class M {",
|
| + " m();",
|
| + "}",
|
| + "abstract class A {}",
|
| + "class B = A with M;"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
|
| + verify([source]);
|
| + }
|
| +
|
| + void test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass() {
|
| + // 15979
|
| + Source source = addSource(EngineTestCase.createSource([
|
| + "class M {}",
|
| + "abstract class A {",
|
| + " m();",
|
| + "}",
|
| + "class B = A with M;"]));
|
| + resolve(source);
|
| + assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
|
| + verify([source]);
|
| + }
|
| +
|
| void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
|
| // 15028
|
| Source source = addSource(EngineTestCase.createSource([
|
| @@ -19935,9 +20301,17 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| final __test = new StaticWarningCodeTest();
|
| runJUnitTest(__test, __test.test_invalidMethodOverrideNamedParamType);
|
| });
|
| - _ut.test('test_invalidMethodOverrideNormalParamType', () {
|
| + _ut.test('test_invalidMethodOverrideNormalParamType_interface', () {
|
| + final __test = new StaticWarningCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidMethodOverrideNormalParamType_interface);
|
| + });
|
| + _ut.test('test_invalidMethodOverrideNormalParamType_superclass', () {
|
| + final __test = new StaticWarningCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidMethodOverrideNormalParamType_superclass);
|
| + });
|
| + _ut.test('test_invalidMethodOverrideNormalParamType_superclass_interface', () {
|
| final __test = new StaticWarningCodeTest();
|
| - runJUnitTest(__test, __test.test_invalidMethodOverrideNormalParamType);
|
| + runJUnitTest(__test, __test.test_invalidMethodOverrideNormalParamType_superclass_interface);
|
| });
|
| _ut.test('test_invalidMethodOverrideNormalParamType_twoInterfaces', () {
|
| final __test = new StaticWarningCodeTest();
|
| @@ -20015,6 +20389,10 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| final __test = new StaticWarningCodeTest();
|
| runJUnitTest(__test, __test.test_invalidSetterOverrideNormalParamType);
|
| });
|
| + _ut.test('test_invalidSetterOverrideNormalParamType_superclass_interface', () {
|
| + final __test = new StaticWarningCodeTest();
|
| + runJUnitTest(__test, __test.test_invalidSetterOverrideNormalParamType_superclass_interface);
|
| + });
|
| _ut.test('test_invalidSetterOverrideNormalParamType_twoInterfaces', () {
|
| final __test = new StaticWarningCodeTest();
|
| runJUnitTest(__test, __test.test_invalidSetterOverrideNormalParamType_twoInterfaces);
|
| @@ -20099,6 +20477,18 @@ class StaticWarningCodeTest extends ResolverTestCase {
|
| final __test = new StaticWarningCodeTest();
|
| runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberFour);
|
| });
|
| + _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface', () {
|
| + final __test = new StaticWarningCodeTest();
|
| + runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_interface);
|
| + });
|
| + _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin', () {
|
| + final __test = new StaticWarningCodeTest();
|
| + runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_mixin);
|
| + });
|
| + _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass', () {
|
| + final __test = new StaticWarningCodeTest();
|
| + runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_classTypeAlias_superclass);
|
| + });
|
| _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation', () {
|
| final __test = new StaticWarningCodeTest();
|
| runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation);
|
| @@ -20414,6 +20804,8 @@ class AnalysisContextHelper {
|
| return source;
|
| }
|
|
|
| + CompilationUnitElement getDefiningUnitElement(Source source) => context.getCompilationUnitElement(source, source);
|
| +
|
| CompilationUnit resolveDefiningUnit(Source source) {
|
| LibraryElement libraryElement = context.computeLibraryElement(source);
|
| return context.resolveCompilationUnit(source, libraryElement);
|
| @@ -20775,6 +21167,7 @@ class TestTypeProvider implements TypeProvider {
|
| //
|
| // Force the referenced types to be cached.
|
| //
|
| + objectType;
|
| boolType;
|
| stringType;
|
| //
|
| @@ -22393,8 +22786,8 @@ class StaticTypeAnalyzerTest extends EngineTestCase {
|
| EngineTestCase.assertSizeOfMap(0, namedTypes);
|
| } else {
|
| EngineTestCase.assertSizeOfMap(expectedNamedTypes.length, namedTypes);
|
| - for (MapEntry<String, DartType> entry in getMapEntrySet(expectedNamedTypes)) {
|
| - JUnitTestCase.assertSame(entry.getValue(), namedTypes[entry.getKey()]);
|
| + for (MapIterator<String, DartType> iter = SingleMapIterator.forMap(expectedNamedTypes); iter.moveNext();) {
|
| + JUnitTestCase.assertSame(iter.value, namedTypes[iter.key]);
|
| }
|
| }
|
| JUnitTestCase.assertSame(expectedReturnType, functionType.returnType);
|
| @@ -23056,19 +23449,6 @@ class NonHintCodeTest extends ResolverTestCase {
|
| verify([source]);
|
| }
|
|
|
| - void test_overriddingPrivateMember_sameLibrary() {
|
| - Source source = addSource(EngineTestCase.createSource([
|
| - "class A {",
|
| - " _m(int x) => 0;",
|
| - "}",
|
| - "class B extends A {",
|
| - " _m(int x) => 0;",
|
| - "}"]));
|
| - resolve(source);
|
| - assertNoErrors(source);
|
| - verify([source]);
|
| - }
|
| -
|
| void test_overrideEqualsButNotHashCode() {
|
| Source source = addSource(EngineTestCase.createSource([
|
| "class A {",
|
| @@ -23596,10 +23976,6 @@ class NonHintCodeTest extends ResolverTestCase {
|
| final __test = new NonHintCodeTest();
|
| runJUnitTest(__test, __test.test_missingReturn_voidReturnType);
|
| });
|
| - _ut.test('test_overriddingPrivateMember_sameLibrary', () {
|
| - final __test = new NonHintCodeTest();
|
| - runJUnitTest(__test, __test.test_overriddingPrivateMember_sameLibrary);
|
| - });
|
| _ut.test('test_overrideEqualsButNotHashCode', () {
|
| final __test = new NonHintCodeTest();
|
| runJUnitTest(__test, __test.test_overrideEqualsButNotHashCode);
|
| @@ -25445,31 +25821,31 @@ class ScopeBuilderTest extends EngineTestCase {
|
| }
|
|
|
| main() {
|
| -// DeclarationMatcherTest.dartSuite();
|
| -// ElementResolverTest.dartSuite();
|
| -// IncrementalResolverTest.dartSuite();
|
| -// InheritanceManagerTest.dartSuite();
|
| -// LibraryElementBuilderTest.dartSuite();
|
| -// LibraryTest.dartSuite();
|
| -// StaticTypeAnalyzerTest.dartSuite();
|
| -// SubtypeManagerTest.dartSuite();
|
| -// TypeOverrideManagerTest.dartSuite();
|
| -// TypeProviderImplTest.dartSuite();
|
| -// TypeResolverVisitorTest.dartSuite();
|
| -// EnclosedScopeTest.dartSuite();
|
| -// LibraryImportScopeTest.dartSuite();
|
| -// LibraryScopeTest.dartSuite();
|
| -// ScopeBuilderTest.dartSuite();
|
| -// ScopeTest.dartSuite();
|
| -// CompileTimeErrorCodeTest.dartSuite();
|
| -// ErrorResolverTest.dartSuite();
|
| -// HintCodeTest.dartSuite();
|
| -// MemberMapTest.dartSuite();
|
| -// NonHintCodeTest.dartSuite();
|
| -// NonErrorResolverTest.dartSuite();
|
| -// SimpleResolverTest.dartSuite();
|
| -// StaticTypeWarningCodeTest.dartSuite();
|
| -// StaticWarningCodeTest.dartSuite();
|
| -// StrictModeTest.dartSuite();
|
| -// TypePropagationTest.dartSuite();
|
| + DeclarationMatcherTest.dartSuite();
|
| + ElementResolverTest.dartSuite();
|
| + IncrementalResolverTest.dartSuite();
|
| + InheritanceManagerTest.dartSuite();
|
| + LibraryElementBuilderTest.dartSuite();
|
| + LibraryTest.dartSuite();
|
| + StaticTypeAnalyzerTest.dartSuite();
|
| + SubtypeManagerTest.dartSuite();
|
| + TypeOverrideManagerTest.dartSuite();
|
| + TypeProviderImplTest.dartSuite();
|
| + TypeResolverVisitorTest.dartSuite();
|
| + EnclosedScopeTest.dartSuite();
|
| + LibraryImportScopeTest.dartSuite();
|
| + LibraryScopeTest.dartSuite();
|
| + ScopeBuilderTest.dartSuite();
|
| + ScopeTest.dartSuite();
|
| + CompileTimeErrorCodeTest.dartSuite();
|
| + ErrorResolverTest.dartSuite();
|
| + HintCodeTest.dartSuite();
|
| + MemberMapTest.dartSuite();
|
| + NonHintCodeTest.dartSuite();
|
| + NonErrorResolverTest.dartSuite();
|
| + SimpleResolverTest.dartSuite();
|
| + StaticTypeWarningCodeTest.dartSuite();
|
| + StaticWarningCodeTest.dartSuite();
|
| + StrictModeTest.dartSuite();
|
| + TypePropagationTest.dartSuite();
|
| }
|
|
|