blob: 20deced96d3ca5e997dbe550f6e4291d1529d938 [file] [log] [blame]
// Copyright (c) 2017, 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.6
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>();
}