diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40541.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40541.dart new file mode 100644 index 00000000000..17c96093c83 --- /dev/null +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40541.dart @@ -0,0 +1,29 @@ +/*library: nnbd=true*/ +/*class: A:A,Object*/ +class A { + /*member: A.test:void Function()!*/ + void test() { + print(T); + } +} + +/*class: B:A,B,Object*/ +/*member: B.test:void Function()!*/ +class B extends A {} + +/*class: C:A,C,Object*/ +/*member: C.test:void Function()!*/ +class C extends A {} + +/*class: D1:A,B,C,D1,Object*/ +/*member: D1.test:void Function()!*/ +class D1 extends B implements C {} + +/*class: D2:A,B,C,D2,Object*/ +/*member: D2.test:void Function()!*/ +class D2 extends C implements B {} + +void main() { + D1().test(); + D2().test(); +} diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart new file mode 100644 index 00000000000..2164604ab05 --- /dev/null +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/main.dart @@ -0,0 +1,25 @@ +/*library: nnbd=true*/ +import "opt_out.dart"; +import "dart:async"; + +Type typeOf() => X; + +/*class: C:A!>,C,Object*/ +class C extends A> { + /*member: C.getType:Type* Function()**/ +} + +/*class: D:A!>,D,Object*/ +class D extends A> { + /*member: D.getType:Type* Function()**/ +} + +/*class: E:A?>,B,C,E,Object*/ +class E extends B implements C { + /*member: E.getType:Type* Function()**/ +} + +main() { + print(typeOf>() == E().getType()); + print(typeOf>() == E().getType()); +} diff --git a/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart new file mode 100644 index 00000000000..787499ebfda --- /dev/null +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40553/opt_out.dart @@ -0,0 +1,15 @@ +// @dart=2.6 + +/*library: nnbd=false*/ +import "dart:async"; + +/*class: A:A,Object*/ +class A { + /*member: A.getType:Type* Function()**/ + Type getType() => T; +} + +/*class: B:A*>,B,Object*/ +class B extends A> { + /*member: B.getType:Type* Function()**/ +}