blob: 3459734d7531bb7c29db38d40c5680d6a8af32f0 [file] [log] [blame]
class I<T> {}
class J<T> extends I<T> {}
class A<T> extends J<T> {}
extension<T> on I<T> {
num get member {}
}
extension<T> on A<T> {
void member(T t) {}
}
exhaustiveInferred(A<num> a) => switch (a) {
A<int>(:var member) => 0,
A<num>(:var member) => 1,
};
exhaustiveTyped(A<num> a) => switch (a) {
A<int>(:void Function(int) member) => 0,
A<num>(:void Function(num) member) => 1,
};
unreachable(A<num> a) => switch (a) {
A<num>(:var member) => 1,
A<int>(:var member) => 0,
};
nonExhaustiveRestricted(A<num> a) => switch (a) {
A<num>(:void Function(num) member) => 1,
A<int>(:var member) => 0,
};
intersection(o) {}
num exhaustiveMixed(I<num> i) => switch (i) {
I<num>(:int member) => member,
J<num>(:double member) => member,
};