// 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.

/// @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;
}
