| Index: pkg/analyzer/test/src/dart/element/element_test.dart
|
| diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
|
| index 5c691e32c5e920c722fad008f15a6ce339eabdf9..52f73f619da8e95b064d12346eea115b63fdb840 100644
|
| --- a/pkg/analyzer/test/src/dart/element/element_test.dart
|
| +++ b/pkg/analyzer/test/src/dart/element/element_test.dart
|
| @@ -40,6 +40,7 @@ main() {
|
| defineReflectiveTests(ElementImplTest);
|
| defineReflectiveTests(LibraryElementImplTest);
|
| defineReflectiveTests(MethodElementImplTest);
|
| + defineReflectiveTests(MethodMemberTest);
|
| defineReflectiveTests(MultiplyDefinedElementImplTest);
|
| defineReflectiveTests(ParameterElementImplTest);
|
| defineReflectiveTests(PropertyAccessorElementImplTest);
|
| @@ -4014,6 +4015,49 @@ abstract class A {
|
| }
|
|
|
| @reflectiveTest
|
| +class MethodMemberTest extends EngineTestCase {
|
| + /**
|
| + * The type provider used to access the types.
|
| + */
|
| + TestTypeProvider _typeProvider;
|
| +
|
| + @override
|
| + void setUp() {
|
| + super.setUp();
|
| + _typeProvider = new TestTypeProvider();
|
| + }
|
| +
|
| + void test_getReifiedType_substituteFor() {
|
| + AnalysisOptionsImpl options = new AnalysisOptionsImpl();
|
| + options.analyzeFunctionBodies = false;
|
| + AnalysisContextHelper contextHelper = new AnalysisContextHelper(options);
|
| + AnalysisContext context = contextHelper.context;
|
| + Source source = contextHelper.addSource(
|
| + "/test.dart",
|
| + r'''
|
| +class A<T> {
|
| + T f(T x) => x;
|
| +}
|
| +class B<S> extends A<S> {
|
| + S f(S x) => x;
|
| +}
|
| +''');
|
| + // prepare CompilationUnitElement
|
| + LibraryElement libraryElement = context.computeLibraryElement(source);
|
| + CompilationUnitElement unitElement = libraryElement.definingCompilationUnit;
|
| + DartType objectType = _typeProvider.objectType;
|
| + // B.f
|
| + ClassElement elementB = unitElement.getType("B");
|
| + MethodElement BfElement = elementB.type
|
| + .lookUpInheritedMethod("f", library: libraryElement, thisType: true);
|
| + MethodElement AfElement = elementB.type
|
| + .lookUpInheritedMethod("f", library: libraryElement, thisType: false);
|
| + expect(BfElement.getReifiedType(objectType),
|
| + equals(AfElement.getReifiedType(objectType)));
|
| + }
|
| +}
|
| +
|
| +@reflectiveTest
|
| class MultiplyDefinedElementImplTest extends EngineTestCase {
|
| void test_fromElements_conflicting() {
|
| TopLevelVariableElement firstElement =
|
|
|