| abstract class FooBase<Tf> { |
| int get x; |
| factory FooBase(int x) = Foo<Tf>; |
| } |
| |
| abstract class Foo<T> implements FooBase { |
| factory Foo(int x) = Bar<String,T>; |
| } |
| |
| class Bar<Sb,Tb> implements Foo<Tb> { |
| int x; |
| Bar(this.x) { |
| print('Bar<$Sb,$Tb>'); |
| } |
| } |
| |
| class Builder<X> { |
| method() { |
| return new FooBase<X>(4); |
| } |
| } |
| |
| class SimpleCase<A,B> { |
| factory SimpleCase() = SimpleCaseImpl<A,B>; |
| } |
| |
| class SimpleCaseImpl<Ai,Bi> implements SimpleCase<Ai,Bi> { |
| factory SimpleCaseImpl() = SimpleCaseImpl2<Ai,Bi>; |
| } |
| |
| class SimpleCaseImpl2<Ai2,Bi2> implements SimpleCaseImpl<Ai2,Bi2> { |
| } |
| |
| class Base<M> { |
| |
| } |
| class Mixin<M> { |
| |
| } |
| |
| class Mix<M> = Base<M> with Mixin<M>; |
| |
| main() { |
| print(new FooBase<double>(4).x); |
| new SimpleCase<int,double>(); |
| new Mix<double>(); |
| } |