| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // @dart=2.9 |
| |
| class A {} |
| class B extends A {} |
| class C extends B {} |
| |
| class GenericClass<T> {} |
| |
| extension GenericExtension<T> on GenericClass<T> { |
| T get property => null; |
| |
| T method(T t) => null; |
| |
| S genericMethod1<S>(S s) => null; |
| } |
| |
| main() { |
| A aVariable; |
| C cVariable; |
| |
| GenericClass<A> aClass; |
| GenericClass<B> bClass; |
| GenericClass<C> cClass; |
| |
| cVariable = GenericExtension(aClass).property; |
| cVariable = GenericExtension<A>(aClass).property; |
| cVariable = GenericExtension<B>(aClass).property; |
| cVariable = GenericExtension<C>(aClass).property; |
| |
| cVariable = GenericExtension(bClass).property; |
| cVariable = GenericExtension<A>(bClass).property; |
| cVariable = GenericExtension<B>(bClass).property; |
| cVariable = GenericExtension<C>(bClass).property; |
| |
| aVariable = GenericExtension(cClass).property; |
| aVariable = GenericExtension<A>(cClass).property; |
| aVariable = GenericExtension<B>(cClass).property; |
| aVariable = GenericExtension<C>(cClass).property; |
| |
| cVariable = GenericExtension(aClass).method(aVariable); |
| cVariable = GenericExtension<A>(aClass).method(aVariable); |
| cVariable = GenericExtension<B>(aClass).method(aVariable); |
| cVariable = GenericExtension<C>(aClass).method(aVariable); |
| |
| cVariable = GenericExtension(bClass).method(aVariable); |
| cVariable = GenericExtension<A>(bClass).method(aVariable); |
| cVariable = GenericExtension<B>(bClass).method(aVariable); |
| cVariable = GenericExtension<C>(bClass).method(aVariable); |
| |
| aVariable = GenericExtension(cClass).method(aVariable); |
| aVariable = GenericExtension<A>(cClass).method(aVariable); |
| aVariable = GenericExtension<B>(cClass).method(aVariable); |
| aVariable = GenericExtension<C>(cClass).method(aVariable); |
| |
| cVariable = GenericExtension(aClass).genericMethod1(aVariable); |
| cVariable = GenericExtension(aClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension(aClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension(aClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<A>(aClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<A>(aClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<A>(aClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<A>(aClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<B>(aClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<B>(aClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<B>(aClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<B>(aClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<C>(aClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<C>(aClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<C>(aClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<C>(aClass).genericMethod1<C>(aVariable); |
| |
| cVariable = GenericExtension(bClass).genericMethod1(aVariable); |
| cVariable = GenericExtension(bClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension(bClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension(bClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<A>(bClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<A>(bClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<A>(bClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<A>(bClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<B>(bClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<B>(bClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<B>(bClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<B>(bClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<C>(bClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<C>(bClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<C>(bClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<C>(bClass).genericMethod1<C>(aVariable); |
| |
| cVariable = GenericExtension(cClass).genericMethod1(aVariable); |
| cVariable = GenericExtension(cClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension(cClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension(cClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<A>(cClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<A>(cClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<A>(cClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<A>(cClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<B>(cClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<B>(cClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<B>(cClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<B>(cClass).genericMethod1<C>(aVariable); |
| cVariable = GenericExtension<C>(cClass).genericMethod1(aVariable); |
| cVariable = GenericExtension<C>(cClass).genericMethod1<A>(aVariable); |
| cVariable = GenericExtension<C>(cClass).genericMethod1<B>(aVariable); |
| cVariable = GenericExtension<C>(cClass).genericMethod1<C>(aVariable); |
| } |