[cfe] Add inheritance tests for reported problems Change-Id: I2dfc46f718e7609f3626040eb3542b5441574975 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/135907 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
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 0000000..17c9609 --- /dev/null +++ b/pkg/_fe_analyzer_shared/test/inheritance/data/issue40541.dart
@@ -0,0 +1,29 @@ +/*library: nnbd=true*/ +/*class: A:A<T>,Object*/ +class A<T> { + /*member: A.test:void Function()!*/ + void test() { + print(T); + } +} + +/*class: B:A<Object?>,B,Object*/ +/*member: B.test:void Function()!*/ +class B extends A<Object?> {} + +/*class: C:A<dynamic>,C,Object*/ +/*member: C.test:void Function()!*/ +class C extends A<dynamic> {} + +/*class: D1:A<Object?>,B,C,D1,Object*/ +/*member: D1.test:void Function()!*/ +class D1 extends B implements C {} + +/*class: D2:A<Object?>,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 0000000..2164604 --- /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>() => X; + +/*class: C:A<FutureOr<int?>!>,C,Object*/ +class C extends A<FutureOr<int?>> { + /*member: C.getType:Type* Function()**/ +} + +/*class: D:A<FutureOr<int!>!>,D,Object*/ +class D extends A<FutureOr<int>> { + /*member: D.getType:Type* Function()**/ +} + +/*class: E:A<FutureOr<int?>?>,B,C,E,Object*/ +class E extends B implements C { + /*member: E.getType:Type* Function()**/ +} + +main() { + print(typeOf<FutureOr<int?>>() == E().getType()); + print(typeOf<FutureOr<int>>() == 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 0000000..787499e --- /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<T*>,Object*/ +class A<T> { + /*member: A.getType:Type* Function()**/ + Type getType() => T; +} + +/*class: B:A<FutureOr<int*>*>,B,Object*/ +class B extends A<FutureOr<int>> { + /*member: B.getType:Type* Function()**/ +}