blob: 5b5b6bc5a684f8843069e444a73c624a010dfb4a [file] [log] [blame]
// Copyright (c) 2016, 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.md file.
library superclass_test;
import 'test_base.dart';
class X {}
class Y {}
class R<T> {}
class A<T> {
foo() => new R<T>();
}
class B<T> extends A<T> {}
class C<T> extends A<Y> {}
class D<T> extends B<R<T>> {}
main() {
expectTrue(new A<X>().foo() is R<X>);
expectTrue(new B<X>().foo() is R<X>);
expectTrue(new C<X>().foo() is R<Y>);
expectTrue(new D<X>().foo() is R<R<X>>);
expectTrue(new A<X>().foo() is! R<Y>);
expectTrue(new B<X>().foo() is! R<Y>);
expectTrue(new C<X>().foo() is! R<X>);
expectTrue(new D<X>().foo() is! R<R<Y>>);
}