// Copyright (c) 2018, 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

/// @description Regression test for the Issue 33786 (Dartanalyzer does not
/// report error about illegal recursive type in class declaration).
///
/// Seems like this is a runtime issue (@bwilkerson added area-vm and removed
/// area-analyzer labels on Aug 29, 2018), so checks that
/// [class A<X extends A<X>> extends M<A<A<A<A<X>>>>>] can be declared in runtime
///
/// @Issue 33786
/// @author iarkh@unipro.ru

class M<X> {}
class A<X extends A<X>> extends M<A<A<A<A<X>>>>> {}

main() {}
