blob: 99fba04e57b00d44ac2ef53de3a57f0a1eef9f0f [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by b
// BSD-style license that can be found in the LICENSE file.
class A {}
class B extends A {}
extension type C(Object? o) {}
extension type D(Object o) implements Object {}
extension type D2(Object o) {}
extension type E(B it) implements A {}
extension type F(B it) implements E, B {}
extension type G<T>(T o) {}
extension type G2<T extends Object>(T o) implements Object {}
test<T1, T2 extends A, T3 extends Object>(
Object o,
A a,
B b,
C c,
D d,
D2 d2,
E e,
F f,
G<T1> g1,
G<T2> g2,
G2<T3> g3) {
o = o; // Ok
o = a; // Ok
o = b; // Ok
o = c; // Error
o = d; // Ok
o = d2; // Error
o = e; // Ok
o = f; // Ok
o = g1; // Error
o = g2; // Error
o = g3; // Ok
a = o; // Error
a = a; // Ok
a = b; // Ok
a = c; // Error
a = d; // Error
a = e; // Ok
a = f; // Ok
a = g1; // Error
a = g2; // Error
b = o; // Error
b = a; // Error
b = b; // Ok
b = c; // Error
b = d; // Error
b = e; // Error
b = f; // Ok
b = g1; // Error
b = g2; // Error
c = o; // Error
c = a; // Error
c = b; // Error
c = c; // Ok
c = d; // Error
c = e; // Error
c = f; // Error
c = g1; // Error
c = g2; // Error
d = o; // Error
d = a; // Error
d = b; // Error
d = c; // Error
d = d; // Ok
d = e; // Error
d = f; // Error
d = g1; // Error
d = g2; // Error
e = o; // Error
e = a; // Error
e = b; // Error
e = c; // Error
e = d; // Error
e = e; // Ok
e = f; // Ok
e = g1; // Error
e = g2; // Error
f = o; // Error
f = a; // Error
f = b; // Error
f = c; // Error
f = d; // Error
f = e; // Error
f = f; // Ok
f = g1; // Error
f = g2; // Error
g1 = o; // Error
g1 = a; // Error
g1 = b; // Error
g1 = c; // Error
g1 = d; // Error
g1 = e; // Error
g1 = f; // Error
g1 = g1; // Ok
g1 = g2; // Error
g2 = o; // Error
g2 = a; // Error
g2 = b; // Error
g2 = c; // Error
g2 = d; // Error
g2 = e; // Error
g2 = f; // Error
g2 = g1; // Error
g2 = g2; // Ok
}