| Index: pkg/analyzer_experimental/test/generated/element_test.dart
|
| ===================================================================
|
| --- pkg/analyzer_experimental/test/generated/element_test.dart (revision 23549)
|
| +++ pkg/analyzer_experimental/test/generated/element_test.dart (working copy)
|
| @@ -173,6 +173,7 @@
|
| }
|
| }
|
| class InterfaceTypeImplTest extends EngineTestCase {
|
| +
|
| /**
|
| * The type provider used to access the types.
|
| */
|
| @@ -208,6 +209,12 @@
|
| InterfaceType object = classA.supertype;
|
| JUnitTestCase.assertEquals(0, InterfaceTypeImpl.computeLongestInheritancePathToObject(object));
|
| }
|
| + void test_computeLongestInheritancePathToObject_recursion() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + JUnitTestCase.assertEquals(2, InterfaceTypeImpl.computeLongestInheritancePathToObject(classA.type));
|
| + }
|
| void test_computeLongestInheritancePathToObject_singleInterfacePath() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| ClassElementImpl classB = ElementFactory.classElement2("B", []);
|
| @@ -237,19 +244,17 @@
|
| classD.interfaces = <InterfaceType> [classC.type];
|
| classE.interfaces = <InterfaceType> [classB.type, classD.type];
|
| Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterfaceSet(classD.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfD);
|
| + EngineTestCase.assertSize3(3, superinterfacesOfD);
|
| JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type));
|
| - JUnitTestCase.assertEquals(3, superinterfacesOfD.length);
|
| Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterfaceSet(classE.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfE);
|
| + EngineTestCase.assertSize3(5, superinterfacesOfE);
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type));
|
| - JUnitTestCase.assertEquals(5, superinterfacesOfE.length);
|
| }
|
| void test_computeSuperinterfaceSet_multipleSuperclassPaths() {
|
| ClassElement classA = ElementFactory.classElement2("A", []);
|
| @@ -259,20 +264,25 @@
|
| ClassElementImpl classE = ElementFactory.classElement("E", classB.type, []);
|
| classE.interfaces = <InterfaceType> [classD.type];
|
| Set<InterfaceType> superinterfacesOfD = InterfaceTypeImpl.computeSuperinterfaceSet(classD.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfD);
|
| + EngineTestCase.assertSize3(3, superinterfacesOfD);
|
| JUnitTestCase.assertTrue(superinterfacesOfD.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfD.contains(classA.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfD.contains(classC.type));
|
| - JUnitTestCase.assertEquals(3, superinterfacesOfD.length);
|
| Set<InterfaceType> superinterfacesOfE = InterfaceTypeImpl.computeSuperinterfaceSet(classE.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfE);
|
| + EngineTestCase.assertSize3(5, superinterfacesOfE);
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classA.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classB.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classC.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfE.contains(classD.type));
|
| - JUnitTestCase.assertEquals(5, superinterfacesOfE.length);
|
| }
|
| + void test_computeSuperinterfaceSet_recursion() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(classB.type);
|
| + EngineTestCase.assertSize3(2, superinterfacesOfB);
|
| + }
|
| void test_computeSuperinterfaceSet_singleInterfacePath() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| ClassElementImpl classB = ElementFactory.classElement2("B", []);
|
| @@ -280,40 +290,34 @@
|
| classB.interfaces = <InterfaceType> [classA.type];
|
| classC.interfaces = <InterfaceType> [classB.type];
|
| Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(classA.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfA);
|
| + EngineTestCase.assertSize3(1, superinterfacesOfA);
|
| JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.type));
|
| - JUnitTestCase.assertEquals(1, superinterfacesOfA.length);
|
| Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(classB.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfB);
|
| + EngineTestCase.assertSize3(2, superinterfacesOfB);
|
| JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type));
|
| - JUnitTestCase.assertEquals(2, superinterfacesOfB.length);
|
| Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterfaceSet(classC.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfC);
|
| + EngineTestCase.assertSize3(3, superinterfacesOfC);
|
| JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type));
|
| - JUnitTestCase.assertEquals(3, superinterfacesOfC.length);
|
| }
|
| void test_computeSuperinterfaceSet_singleSuperclassPath() {
|
| ClassElement classA = ElementFactory.classElement2("A", []);
|
| ClassElement classB = ElementFactory.classElement("B", classA.type, []);
|
| ClassElement classC = ElementFactory.classElement("C", classB.type, []);
|
| Set<InterfaceType> superinterfacesOfA = InterfaceTypeImpl.computeSuperinterfaceSet(classA.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfA);
|
| + EngineTestCase.assertSize3(1, superinterfacesOfA);
|
| JUnitTestCase.assertTrue(superinterfacesOfA.contains(ElementFactory.object.type));
|
| - JUnitTestCase.assertEquals(1, superinterfacesOfA.length);
|
| Set<InterfaceType> superinterfacesOfB = InterfaceTypeImpl.computeSuperinterfaceSet(classB.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfB);
|
| + EngineTestCase.assertSize3(2, superinterfacesOfB);
|
| JUnitTestCase.assertTrue(superinterfacesOfB.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfB.contains(classA.type));
|
| - JUnitTestCase.assertEquals(2, superinterfacesOfB.length);
|
| Set<InterfaceType> superinterfacesOfC = InterfaceTypeImpl.computeSuperinterfaceSet(classC.type);
|
| - JUnitTestCase.assertNotNull(superinterfacesOfC);
|
| + EngineTestCase.assertSize3(3, superinterfacesOfC);
|
| JUnitTestCase.assertTrue(superinterfacesOfC.contains(ElementFactory.object.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfC.contains(classA.type));
|
| JUnitTestCase.assertTrue(superinterfacesOfC.contains(classB.type));
|
| - JUnitTestCase.assertEquals(3, superinterfacesOfC.length);
|
| }
|
| void test_creation() {
|
| JUnitTestCase.assertNotNull(new InterfaceTypeImpl.con1(ElementFactory.classElement2("A", [])));
|
| @@ -545,13 +549,18 @@
|
| JUnitTestCase.assertEquals(typeA, typeB.getLeastUpperBound(typeC));
|
| JUnitTestCase.assertEquals(typeA, typeC.getLeastUpperBound(typeB));
|
| }
|
| + void test_getLeastUpperBound_twoComparables() {
|
| + InterfaceType string = _typeProvider.stringType;
|
| + InterfaceType num = _typeProvider.numType;
|
| + JUnitTestCase.assertEquals(_typeProvider.objectType, string.getLeastUpperBound(num));
|
| + }
|
| void test_getLeastUpperBound_typeParameters_different() {
|
| InterfaceType listType2 = _typeProvider.listType;
|
| InterfaceType intType2 = _typeProvider.intType;
|
| InterfaceType doubleType2 = _typeProvider.doubleType;
|
| InterfaceType listOfIntType = listType2.substitute5(<Type2> [intType2]);
|
| InterfaceType listOfDoubleType = listType2.substitute5(<Type2> [doubleType2]);
|
| - JUnitTestCase.assertEquals(listType2.substitute5(<Type2> [_typeProvider.numType]), listOfIntType.getLeastUpperBound(listOfDoubleType));
|
| + JUnitTestCase.assertEquals(listType2.substitute5(<Type2> [_typeProvider.dynamicType]), listOfIntType.getLeastUpperBound(listOfDoubleType));
|
| }
|
| void test_getLeastUpperBound_typeParameters_same() {
|
| InterfaceType listType2 = _typeProvider.listType;
|
| @@ -733,7 +742,38 @@
|
| InterfaceType type2 = ElementFactory.classElement2("A", []).type;
|
| JUnitTestCase.assertTrue(type2.isMoreSpecificThan(DynamicTypeImpl.instance));
|
| }
|
| - void test_isMoreSpecificThan_indirectSupertype() {
|
| + void test_isMoreSpecificThan_self() {
|
| + InterfaceType type2 = ElementFactory.classElement2("A", []).type;
|
| + JUnitTestCase.assertTrue(type2.isMoreSpecificThan(type2));
|
| + }
|
| + void test_isMoreSpecificThan_transitive_interface() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + ClassElementImpl classC = ElementFactory.classElement2("C", []);
|
| + classC.interfaces = <InterfaceType> [classB.type];
|
| + InterfaceType typeA = classA.type;
|
| + InterfaceType typeC = classC.type;
|
| + JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
|
| + }
|
| + void test_isMoreSpecificThan_transitive_mixin() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + ClassElementImpl classC = ElementFactory.classElement2("C", []);
|
| + classC.mixins = <InterfaceType> [classB.type];
|
| + InterfaceType typeA = classA.type;
|
| + InterfaceType typeC = classC.type;
|
| + JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
|
| + }
|
| + void test_isMoreSpecificThan_transitive_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + ClassElementImpl classC = ElementFactory.classElement2("C", []);
|
| + InterfaceType typeA = classA.type;
|
| + InterfaceType typeC = classC.type;
|
| + classA.supertype = classB.type;
|
| + JUnitTestCase.assertFalse(typeA.isMoreSpecificThan(typeC));
|
| + }
|
| + void test_isMoreSpecificThan_transitive_superclass() {
|
| ClassElement classA = ElementFactory.classElement2("A", []);
|
| ClassElement classB = ElementFactory.classElement("B", classA.type, []);
|
| ClassElement classC = ElementFactory.classElement("C", classB.type, []);
|
| @@ -741,10 +781,6 @@
|
| InterfaceType typeC = classC.type;
|
| JUnitTestCase.assertTrue(typeC.isMoreSpecificThan(typeA));
|
| }
|
| - void test_isMoreSpecificThan_self() {
|
| - InterfaceType type2 = ElementFactory.classElement2("A", []).type;
|
| - JUnitTestCase.assertTrue(type2.isMoreSpecificThan(type2));
|
| - }
|
| void test_isSubtypeOf_directSubtype() {
|
| ClassElement classA = ElementFactory.classElement2("A", []);
|
| ClassElement classB = ElementFactory.classElement("B", classA.type, []);
|
| @@ -760,15 +796,6 @@
|
| JUnitTestCase.assertFalse(dynamicType.isSubtypeOf(typeA));
|
| JUnitTestCase.assertTrue(typeA.isSubtypeOf(dynamicType));
|
| }
|
| - void test_isSubtypeOf_indirectSubtype() {
|
| - ClassElement classA = ElementFactory.classElement2("A", []);
|
| - ClassElement classB = ElementFactory.classElement("B", classA.type, []);
|
| - ClassElement classC = ElementFactory.classElement("C", classB.type, []);
|
| - InterfaceType typeA = classA.type;
|
| - InterfaceType typeC = classC.type;
|
| - JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
|
| - JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
|
| - }
|
| void test_isSubtypeOf_interface() {
|
| ClassElement classA = ElementFactory.classElement2("A", []);
|
| ClassElement classB = ElementFactory.classElement("B", classA.type, []);
|
| @@ -794,7 +821,7 @@
|
| classC.mixins = <InterfaceType> [typeB];
|
| JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeB));
|
| JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeObject));
|
| - JUnitTestCase.assertFalse(typeC.isSubtypeOf(typeA));
|
| + JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
|
| JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
|
| }
|
| void test_isSubtypeOf_object() {
|
| @@ -809,6 +836,24 @@
|
| InterfaceType typeA = classA.type;
|
| JUnitTestCase.assertTrue(typeA.isSubtypeOf(typeA));
|
| }
|
| + void test_isSubtypeOf_transitive_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + ClassElementImpl classC = ElementFactory.classElement2("C", []);
|
| + InterfaceType typeA = classA.type;
|
| + InterfaceType typeC = classC.type;
|
| + classA.supertype = classB.type;
|
| + JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
|
| + }
|
| + void test_isSubtypeOf_transitive_superclass() {
|
| + ClassElement classA = ElementFactory.classElement2("A", []);
|
| + ClassElement classB = ElementFactory.classElement("B", classA.type, []);
|
| + ClassElement classC = ElementFactory.classElement("C", classB.type, []);
|
| + InterfaceType typeA = classA.type;
|
| + InterfaceType typeC = classC.type;
|
| + JUnitTestCase.assertTrue(typeC.isSubtypeOf(typeA));
|
| + JUnitTestCase.assertFalse(typeA.isSubtypeOf(typeC));
|
| + }
|
| void test_isSubtypeOf_typeArguments() {
|
| ClassElement classA = ElementFactory.classElement2("A", ["E"]);
|
| ClassElement classI = ElementFactory.classElement2("I", []);
|
| @@ -880,7 +925,7 @@
|
| classC.mixins = <InterfaceType> [typeB];
|
| JUnitTestCase.assertTrue(typeB.isSupertypeOf(typeC));
|
| JUnitTestCase.assertTrue(typeObject.isSupertypeOf(typeC));
|
| - JUnitTestCase.assertFalse(typeA.isSupertypeOf(typeC));
|
| + JUnitTestCase.assertTrue(typeA.isSupertypeOf(typeC));
|
| JUnitTestCase.assertFalse(typeC.isSupertypeOf(typeA));
|
| }
|
| void test_isSupertypeOf_object() {
|
| @@ -918,6 +963,16 @@
|
| ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| JUnitTestCase.assertSame(getterG, typeB.lookUpGetter(getterName, library2));
|
| }
|
| + void test_lookUpGetter_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + InterfaceType typeA = classA.type;
|
| + ClassElementImpl classB = ElementFactory.classElement("B", typeA, []);
|
| + classA.supertype = classB.type;
|
| + LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| + CompilationUnitElement unit = library2.definingCompilationUnit;
|
| + ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| + JUnitTestCase.assertNull(typeA.lookUpGetter("g", library2));
|
| + }
|
| void test_lookUpGetter_unimplemented() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| InterfaceType typeA = classA.type;
|
| @@ -974,6 +1029,16 @@
|
| EngineTestCase.assertLength(1, parameterTypes);
|
| JUnitTestCase.assertSame(typeI, parameterTypes[0]);
|
| }
|
| + void test_lookUpMethod_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + InterfaceType typeA = classA.type;
|
| + ClassElementImpl classB = ElementFactory.classElement("B", typeA, []);
|
| + classA.supertype = classB.type;
|
| + LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| + CompilationUnitElement unit = library2.definingCompilationUnit;
|
| + ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| + JUnitTestCase.assertNull(typeA.lookUpMethod("m", library2));
|
| + }
|
| void test_lookUpMethod_unimplemented() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| InterfaceType typeA = classA.type;
|
| @@ -1005,6 +1070,16 @@
|
| ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| JUnitTestCase.assertSame(setterS, typeB.lookUpSetter(setterName, library2));
|
| }
|
| + void test_lookUpSetter_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + InterfaceType typeA = classA.type;
|
| + ClassElementImpl classB = ElementFactory.classElement("B", typeA, []);
|
| + classA.supertype = classB.type;
|
| + LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| + CompilationUnitElement unit = library2.definingCompilationUnit;
|
| + ((unit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| + JUnitTestCase.assertNull(typeA.lookUpSetter("s", library2));
|
| + }
|
| void test_lookUpSetter_unimplemented() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| InterfaceType typeA = classA.type;
|
| @@ -1060,6 +1135,10 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_object);
|
| });
|
| + _ut.test('test_computeLongestInheritancePathToObject_recursion', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_recursion);
|
| + });
|
| _ut.test('test_computeLongestInheritancePathToObject_singleInterfacePath', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_computeLongestInheritancePathToObject_singleInterfacePath);
|
| @@ -1076,6 +1155,10 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_computeSuperinterfaceSet_multipleSuperclassPaths);
|
| });
|
| + _ut.test('test_computeSuperinterfaceSet_recursion', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_computeSuperinterfaceSet_recursion);
|
| + });
|
| _ut.test('test_computeSuperinterfaceSet_singleInterfacePath', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_computeSuperinterfaceSet_singleInterfacePath);
|
| @@ -1172,6 +1255,10 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_getLeastUpperBound_sharedSuperinterface4);
|
| });
|
| + _ut.test('test_getLeastUpperBound_twoComparables', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_getLeastUpperBound_twoComparables);
|
| + });
|
| _ut.test('test_getLeastUpperBound_typeParameters_different', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_getLeastUpperBound_typeParameters_different);
|
| @@ -1256,14 +1343,26 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isMoreSpecificThan_dynamic);
|
| });
|
| - _ut.test('test_isMoreSpecificThan_indirectSupertype', () {
|
| - final __test = new InterfaceTypeImplTest();
|
| - runJUnitTest(__test, __test.test_isMoreSpecificThan_indirectSupertype);
|
| - });
|
| _ut.test('test_isMoreSpecificThan_self', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isMoreSpecificThan_self);
|
| });
|
| + _ut.test('test_isMoreSpecificThan_transitive_interface', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_interface);
|
| + });
|
| + _ut.test('test_isMoreSpecificThan_transitive_mixin', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_mixin);
|
| + });
|
| + _ut.test('test_isMoreSpecificThan_transitive_recursive', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_recursive);
|
| + });
|
| + _ut.test('test_isMoreSpecificThan_transitive_superclass', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isMoreSpecificThan_transitive_superclass);
|
| + });
|
| _ut.test('test_isSubtypeOf_directSubtype', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isSubtypeOf_directSubtype);
|
| @@ -1272,10 +1371,6 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isSubtypeOf_dynamic);
|
| });
|
| - _ut.test('test_isSubtypeOf_indirectSubtype', () {
|
| - final __test = new InterfaceTypeImplTest();
|
| - runJUnitTest(__test, __test.test_isSubtypeOf_indirectSubtype);
|
| - });
|
| _ut.test('test_isSubtypeOf_interface', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isSubtypeOf_interface);
|
| @@ -1292,6 +1387,14 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isSubtypeOf_self);
|
| });
|
| + _ut.test('test_isSubtypeOf_transitive_recursive', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isSubtypeOf_transitive_recursive);
|
| + });
|
| + _ut.test('test_isSubtypeOf_transitive_superclass', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isSubtypeOf_transitive_superclass);
|
| + });
|
| _ut.test('test_isSubtypeOf_typeArguments', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_isSubtypeOf_typeArguments);
|
| @@ -1332,6 +1435,10 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_lookUpGetter_inherited);
|
| });
|
| + _ut.test('test_lookUpGetter_recursive', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_lookUpGetter_recursive);
|
| + });
|
| _ut.test('test_lookUpGetter_unimplemented', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_lookUpGetter_unimplemented);
|
| @@ -1348,6 +1455,10 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_lookUpMethod_parameterized);
|
| });
|
| + _ut.test('test_lookUpMethod_recursive', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_lookUpMethod_recursive);
|
| + });
|
| _ut.test('test_lookUpMethod_unimplemented', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_lookUpMethod_unimplemented);
|
| @@ -1360,6 +1471,10 @@
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_lookUpSetter_inherited);
|
| });
|
| + _ut.test('test_lookUpSetter_recursive', () {
|
| + final __test = new InterfaceTypeImplTest();
|
| + runJUnitTest(__test, __test.test_lookUpSetter_recursive);
|
| + });
|
| _ut.test('test_lookUpSetter_unimplemented', () {
|
| final __test = new InterfaceTypeImplTest();
|
| runJUnitTest(__test, __test.test_lookUpSetter_unimplemented);
|
| @@ -1422,12 +1537,14 @@
|
| });
|
| }
|
| }
|
| +
|
| /**
|
| * The class {@code ElementFactory} defines utility methods used to create elements for testing
|
| * purposes. The elements that are created are complete in the sense that as much of the element
|
| * model as can be created, given the provided information, has been created.
|
| */
|
| class ElementFactory {
|
| +
|
| /**
|
| * The element representing the class 'Object'.
|
| */
|
| @@ -1453,7 +1570,15 @@
|
| return element;
|
| }
|
| static ClassElementImpl classElement2(String typeName, List<String> parameterNames) => classElement(typeName, object.type, parameterNames);
|
| - static ConstructorElementImpl constructorElement(String name) => new ConstructorElementImpl(name == null ? null : ASTFactory.identifier3(name));
|
| + static ConstructorElementImpl constructorElement(ClassElement clazz, String name) {
|
| + Type2 type2 = clazz.type;
|
| + ConstructorElementImpl constructor = new ConstructorElementImpl(name == null ? null : ASTFactory.identifier3(name));
|
| + FunctionTypeImpl constructorType = new FunctionTypeImpl.con1(constructor);
|
| + constructorType.normalParameterTypes = <Type2> [type2];
|
| + constructorType.returnType = type2;
|
| + constructor.type = constructorType;
|
| + return constructor;
|
| + }
|
| static ExportElementImpl exportFor(LibraryElement exportedLibrary2, List<NamespaceCombinator> combinators2) {
|
| ExportElementImpl spec = new ExportElementImpl();
|
| spec.exportedLibrary = exportedLibrary2;
|
| @@ -1468,7 +1593,9 @@
|
| field.type = type2;
|
| PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(field);
|
| getter.getter = true;
|
| + getter.static = isStatic;
|
| getter.synthetic = true;
|
| + getter.variable = field;
|
| field.getter = getter;
|
| FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
|
| getterType.returnType = type2;
|
| @@ -1476,7 +1603,9 @@
|
| if (!isConst && !isFinal) {
|
| PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(field);
|
| setter.setter = true;
|
| + setter.static = isStatic;
|
| setter.synthetic = true;
|
| + setter.variable = field;
|
| field.setter = setter;
|
| FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter);
|
| setterType.normalParameterTypes = <Type2> [type2];
|
| @@ -1495,22 +1624,36 @@
|
| if (returnElement != null) {
|
| functionType.returnType = returnElement.type;
|
| }
|
| - int count = normalParameters == null ? 0 : normalParameters.length;
|
| - if (count > 0) {
|
| - List<InterfaceType> normalParameterTypes = new List<InterfaceType>(count);
|
| - for (int i = 0; i < count; i++) {
|
| + int normalCount = normalParameters == null ? 0 : normalParameters.length;
|
| + if (normalCount > 0) {
|
| + List<InterfaceType> normalParameterTypes = new List<InterfaceType>(normalCount);
|
| + for (int i = 0; i < normalCount; i++) {
|
| normalParameterTypes[i] = normalParameters[i].type;
|
| }
|
| functionType.normalParameterTypes = normalParameterTypes;
|
| }
|
| - count = optionalParameters == null ? 0 : optionalParameters.length;
|
| - if (count > 0) {
|
| - List<InterfaceType> optionalParameterTypes = new List<InterfaceType>(count);
|
| - for (int i = 0; i < count; i++) {
|
| + int optionalCount = optionalParameters == null ? 0 : optionalParameters.length;
|
| + if (optionalCount > 0) {
|
| + List<InterfaceType> optionalParameterTypes = new List<InterfaceType>(optionalCount);
|
| + for (int i = 0; i < optionalCount; i++) {
|
| optionalParameterTypes[i] = optionalParameters[i].type;
|
| }
|
| functionType.optionalParameterTypes = optionalParameterTypes;
|
| }
|
| + int totalCount = normalCount + optionalCount;
|
| + List<ParameterElement> parameters = new List<ParameterElement>(totalCount);
|
| + for (int i = 0; i < totalCount; i++) {
|
| + ParameterElementImpl parameter = new ParameterElementImpl(ASTFactory.identifier3("a${i}"));
|
| + if (i < normalCount) {
|
| + parameter.type = normalParameters[i].type;
|
| + parameter.parameterKind = ParameterKind.REQUIRED;
|
| + } else {
|
| + parameter.type = optionalParameters[i - normalCount].type;
|
| + parameter.parameterKind = ParameterKind.POSITIONAL;
|
| + }
|
| + parameters[i] = parameter;
|
| + }
|
| + functionElement.parameters = parameters;
|
| return functionElement;
|
| }
|
| static FunctionElementImpl functionElement4(String functionName, ClassElement returnElement, List<ClassElement> normalParameters, List<String> names, List<ClassElement> namedParameters) {
|
| @@ -1555,6 +1698,8 @@
|
| field.type = type2;
|
| PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(field);
|
| getter.getter = true;
|
| + getter.static = isStatic;
|
| + getter.variable = field;
|
| field.getter = getter;
|
| FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
|
| getterType.returnType = type2;
|
| @@ -1619,13 +1764,17 @@
|
| field.type = type2;
|
| PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(field);
|
| getter.getter = true;
|
| + getter.static = isStatic;
|
| + getter.variable = field;
|
| field.getter = getter;
|
| FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
|
| getterType.returnType = type2;
|
| getter.type = getterType;
|
| PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(field);
|
| setter.setter = true;
|
| + setter.static = isStatic;
|
| setter.synthetic = true;
|
| + setter.variable = field;
|
| field.setter = setter;
|
| FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter);
|
| setterType.normalParameterTypes = <Type2> [type2];
|
| @@ -1635,10 +1784,31 @@
|
| }
|
| static TopLevelVariableElementImpl topLevelVariableElement(Identifier name) => new TopLevelVariableElementImpl.con1(name);
|
| static TopLevelVariableElementImpl topLevelVariableElement2(String name) => new TopLevelVariableElementImpl.con2(name);
|
| - /**
|
| - * Prevent the creation of instances of this class.
|
| - */
|
| - ElementFactory() {
|
| + static TopLevelVariableElementImpl topLevelVariableElement3(String name, bool isFinal, Type2 type2) {
|
| + TopLevelVariableElementImpl variable = new TopLevelVariableElementImpl.con2(name);
|
| + variable.final2 = isFinal;
|
| + PropertyAccessorElementImpl getter = new PropertyAccessorElementImpl.con2(variable);
|
| + getter.getter = true;
|
| + getter.static = true;
|
| + getter.synthetic = true;
|
| + getter.variable = variable;
|
| + variable.getter = getter;
|
| + FunctionTypeImpl getterType = new FunctionTypeImpl.con1(getter);
|
| + getterType.returnType = type2;
|
| + getter.type = getterType;
|
| + if (!isFinal) {
|
| + PropertyAccessorElementImpl setter = new PropertyAccessorElementImpl.con2(variable);
|
| + setter.setter = true;
|
| + setter.static = true;
|
| + setter.synthetic = true;
|
| + setter.variable = variable;
|
| + variable.setter = setter;
|
| + FunctionTypeImpl setterType = new FunctionTypeImpl.con1(getter);
|
| + setterType.normalParameterTypes = <Type2> [type2];
|
| + setterType.returnType = VoidTypeImpl.instance;
|
| + setter.type = setterType;
|
| + }
|
| + return variable;
|
| }
|
| }
|
| class ElementKindTest extends EngineTestCase {
|
| @@ -1696,13 +1866,19 @@
|
| JUnitTestCase.assertTrue(types.contains(typeObject));
|
| JUnitTestCase.assertFalse(types.contains(typeC));
|
| }
|
| + void test_getAllSupertypes_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + List<InterfaceType> supers = classB.allSupertypes;
|
| + EngineTestCase.assertLength(1, supers);
|
| + }
|
| void test_getMethod_declared() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| String methodName = "m";
|
| MethodElement method = ElementFactory.methodElement(methodName, null, []);
|
| classA.methods = <MethodElement> [method];
|
| JUnitTestCase.assertSame(method, classA.getMethod(methodName));
|
| - JUnitTestCase.assertSame(method, classA.getExecutable(methodName));
|
| }
|
| void test_getMethod_undeclared() {
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| @@ -1710,8 +1886,34 @@
|
| MethodElement method = ElementFactory.methodElement(methodName, null, []);
|
| classA.methods = <MethodElement> [method];
|
| JUnitTestCase.assertNull(classA.getMethod("${methodName}x"));
|
| - JUnitTestCase.assertNull(classA.getExecutable("${methodName}x"));
|
| }
|
| + void test_hasNonFinalField_false_const() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, false, true, classA.type)];
|
| + JUnitTestCase.assertFalse(classA.hasNonFinalField());
|
| + }
|
| + void test_hasNonFinalField_false_final() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, true, false, classA.type)];
|
| + JUnitTestCase.assertFalse(classA.hasNonFinalField());
|
| + }
|
| + void test_hasNonFinalField_false_recursive() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + JUnitTestCase.assertFalse(classA.hasNonFinalField());
|
| + }
|
| + void test_hasNonFinalField_true_immediate() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, false, false, classA.type)];
|
| + JUnitTestCase.assertTrue(classA.hasNonFinalField());
|
| + }
|
| + void test_hasNonFinalField_true_inherited() {
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.fields = <FieldElement> [ElementFactory.fieldElement("f", false, false, false, classA.type)];
|
| + JUnitTestCase.assertTrue(classB.hasNonFinalField());
|
| + }
|
| void test_lookUpGetter_declared() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| @@ -1720,7 +1922,6 @@
|
| classA.accessors = <PropertyAccessorElement> [getter];
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
|
| JUnitTestCase.assertSame(getter, classA.lookUpGetter(getterName, library2));
|
| - JUnitTestCase.assertSame(getter, classA.lookUpExecutable(getterName, library2));
|
| }
|
| void test_lookUpGetter_inherited() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| @@ -1731,15 +1932,21 @@
|
| ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| JUnitTestCase.assertSame(getter, classB.lookUpGetter(getterName, library2));
|
| - JUnitTestCase.assertSame(getter, classB.lookUpExecutable(getterName, library2));
|
| }
|
| void test_lookUpGetter_undeclared() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
|
| JUnitTestCase.assertNull(classA.lookUpGetter("g", library2));
|
| - JUnitTestCase.assertNull(classA.lookUpExecutable("g", library2));
|
| }
|
| + void test_lookUpGetter_undeclared_recursive() {
|
| + LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| + JUnitTestCase.assertNull(classA.lookUpGetter("g", library2));
|
| + }
|
| void test_lookUpMethod_declared() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| @@ -1748,7 +1955,6 @@
|
| classA.methods = <MethodElement> [method];
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
|
| JUnitTestCase.assertSame(method, classA.lookUpMethod(methodName, library2));
|
| - JUnitTestCase.assertSame(method, classA.lookUpExecutable(methodName, library2));
|
| }
|
| void test_lookUpMethod_inherited() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| @@ -1759,15 +1965,21 @@
|
| ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| JUnitTestCase.assertSame(method, classB.lookUpMethod(methodName, library2));
|
| - JUnitTestCase.assertSame(method, classB.lookUpExecutable(methodName, library2));
|
| }
|
| void test_lookUpMethod_undeclared() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
|
| JUnitTestCase.assertNull(classA.lookUpMethod("m", library2));
|
| - JUnitTestCase.assertNull(classA.lookUpExecutable("m", library2));
|
| }
|
| + void test_lookUpMethod_undeclared_recursive() {
|
| + LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| + JUnitTestCase.assertNull(classA.lookUpMethod("m", library2));
|
| + }
|
| void test_lookUpSetter_declared() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| @@ -1776,7 +1988,6 @@
|
| classA.accessors = <PropertyAccessorElement> [setter];
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
|
| JUnitTestCase.assertSame(setter, classA.lookUpSetter(setterName, library2));
|
| - JUnitTestCase.assertSame(setter, classA.lookUpExecutable(setterName, library2));
|
| }
|
| void test_lookUpSetter_inherited() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| @@ -1787,15 +1998,21 @@
|
| ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| JUnitTestCase.assertSame(setter, classB.lookUpSetter(setterName, library2));
|
| - JUnitTestCase.assertSame(setter, classB.lookUpExecutable(setterName, library2));
|
| }
|
| void test_lookUpSetter_undeclared() {
|
| LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA];
|
| JUnitTestCase.assertNull(classA.lookUpSetter("s", library2));
|
| - JUnitTestCase.assertNull(classA.lookUpExecutable("s", library2));
|
| }
|
| + void test_lookUpSetter_undeclared_recursive() {
|
| + LibraryElementImpl library2 = ElementFactory.library(createAnalysisContext(), "lib");
|
| + ClassElementImpl classA = ElementFactory.classElement2("A", []);
|
| + ClassElementImpl classB = ElementFactory.classElement("B", classA.type, []);
|
| + classA.supertype = classB.type;
|
| + ((library2.definingCompilationUnit as CompilationUnitElementImpl)).types = <ClassElement> [classA, classB];
|
| + JUnitTestCase.assertNull(classA.lookUpSetter("s", library2));
|
| + }
|
| static dartSuite() {
|
| _ut.group('ClassElementImplTest', () {
|
| _ut.test('test_getAllSupertypes_interface', () {
|
| @@ -1806,6 +2023,10 @@
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_getAllSupertypes_mixins);
|
| });
|
| + _ut.test('test_getAllSupertypes_recursive', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_getAllSupertypes_recursive);
|
| + });
|
| _ut.test('test_getMethod_declared', () {
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_getMethod_declared);
|
| @@ -1814,6 +2035,26 @@
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_getMethod_undeclared);
|
| });
|
| + _ut.test('test_hasNonFinalField_false_const', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_hasNonFinalField_false_const);
|
| + });
|
| + _ut.test('test_hasNonFinalField_false_final', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_hasNonFinalField_false_final);
|
| + });
|
| + _ut.test('test_hasNonFinalField_false_recursive', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_hasNonFinalField_false_recursive);
|
| + });
|
| + _ut.test('test_hasNonFinalField_true_immediate', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_hasNonFinalField_true_immediate);
|
| + });
|
| + _ut.test('test_hasNonFinalField_true_inherited', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_hasNonFinalField_true_inherited);
|
| + });
|
| _ut.test('test_lookUpGetter_declared', () {
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_lookUpGetter_declared);
|
| @@ -1826,6 +2067,10 @@
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_lookUpGetter_undeclared);
|
| });
|
| + _ut.test('test_lookUpGetter_undeclared_recursive', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_lookUpGetter_undeclared_recursive);
|
| + });
|
| _ut.test('test_lookUpMethod_declared', () {
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_lookUpMethod_declared);
|
| @@ -1838,6 +2083,10 @@
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_lookUpMethod_undeclared);
|
| });
|
| + _ut.test('test_lookUpMethod_undeclared_recursive', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_lookUpMethod_undeclared_recursive);
|
| + });
|
| _ut.test('test_lookUpSetter_declared', () {
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_lookUpSetter_declared);
|
| @@ -1850,6 +2099,10 @@
|
| final __test = new ClassElementImplTest();
|
| runJUnitTest(__test, __test.test_lookUpSetter_undeclared);
|
| });
|
| + _ut.test('test_lookUpSetter_undeclared_recursive', () {
|
| + final __test = new ClassElementImplTest();
|
| + runJUnitTest(__test, __test.test_lookUpSetter_undeclared_recursive);
|
| + });
|
| });
|
| }
|
| }
|
| @@ -1957,7 +2210,7 @@
|
| }
|
| void test_isSubtypeOf_baseCase_classFunction() {
|
| ClassElementImpl functionElement = ElementFactory.classElement2("Function", []);
|
| - InterfaceTypeImpl functionType = new InterfaceTypeImpl_18(functionElement);
|
| + InterfaceTypeImpl functionType = new InterfaceTypeImpl_19(functionElement);
|
| FunctionType f = ElementFactory.functionElement("f").type;
|
| JUnitTestCase.assertTrue(f.isSubtypeOf(functionType));
|
| }
|
| @@ -2057,6 +2310,11 @@
|
| FunctionType s = ElementFactory.functionElement5("s", <ClassElement> [b]).type;
|
| JUnitTestCase.assertFalse(t.isSubtypeOf(s));
|
| }
|
| + void test_isSubtypeOf_Object() {
|
| + FunctionType f = ElementFactory.functionElement("f").type;
|
| + InterfaceType t = ElementFactory.object.type;
|
| + JUnitTestCase.assertTrue(f.isSubtypeOf(t));
|
| + }
|
| void test_isSubtypeOf_optionalParameters_isAssignable() {
|
| ClassElement a = ElementFactory.classElement2("A", []);
|
| ClassElement b = ElementFactory.classElement("B", a.type, []);
|
| @@ -2238,6 +2496,10 @@
|
| final __test = new FunctionTypeImplTest();
|
| runJUnitTest(__test, __test.test_hashCode_noElement);
|
| });
|
| + _ut.test('test_isSubtypeOf_Object', () {
|
| + final __test = new FunctionTypeImplTest();
|
| + runJUnitTest(__test, __test.test_isSubtypeOf_Object);
|
| + });
|
| _ut.test('test_isSubtypeOf_baseCase_classFunction', () {
|
| final __test = new FunctionTypeImplTest();
|
| runJUnitTest(__test, __test.test_isSubtypeOf_baseCase_classFunction);
|
| @@ -2369,8 +2631,8 @@
|
| });
|
| }
|
| }
|
| -class InterfaceTypeImpl_18 extends InterfaceTypeImpl {
|
| - InterfaceTypeImpl_18(ClassElement arg0) : super.con1(arg0);
|
| +class InterfaceTypeImpl_19 extends InterfaceTypeImpl {
|
| + InterfaceTypeImpl_19(ClassElement arg0) : super.con1(arg0);
|
| bool isDartCoreFunction() => true;
|
| }
|
| main() {
|
|
|