blob: 9fa2cf74acc8cdd12152fdd9e2d6fe53b15d2ec3 [file] [log] [blame]
// Copyright (c) 2011, 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
/// @assertion An interface has a set of direct superinterfaces.
/// An interface J is a superinterface of an interface I iff either J is a
/// direct superinterface of I or J is a superinterface of a direct
/// superinterface of I.
/// @description Checks that an interface can declare generic and non-generic
/// direct superinterfaces or not declare any.
/// @author vasya
abstract class J {}
abstract class I implements J {}
abstract class J1 {}
abstract class J2 implements J1 {}
abstract class J3 implements J2 {}
abstract class I1 implements J1, J2, J3 {}
abstract class I2 implements J3, J2, J1 {}
abstract class K<S> {}
abstract class L<S> implements K<S> {}
abstract class A<S, T> {}
abstract class B<S, T> implements A<T, S> {}
abstract class C<Q, R, S> implements A<Q, S> {}
abstract class D<Q> implements A<int, Q>, J, I {}
main() {
I i = null;
I1 i1 = null;
I2 i2 = null;
B<String, int> b = null;
C<List, String, num> c = null;
D<String> d = null;
}