blob: 23bf4b99158832aea5c5a703832be5e7361a0ffa [file] [log] [blame]
// Copyright (c) 2023, 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.
// Verifies that VM doesn't time out on loading of highly recursive types.
// Regression test for https://github.com/dart-lang/sdk/issues/51960.
class A<
A1 extends A<A1, B1, C1, D1>,
B1 extends B<A1, B1, C1, D1>,
C1 extends C<A1, B1, C1, D1>,
D1 extends D<A1, B1, C1, D1>
> {}
class B<
A1 extends A<A1, B1, C1, D1>,
B1 extends B<A1, B1, C1, D1>,
C1 extends C<A1, B1, C1, D1>,
D1 extends D<A1, B1, C1, D1>
> {}
class C<
A1 extends A<A1, B1, C1, D1>,
B1 extends B<A1, B1, C1, D1>,
C1 extends C<A1, B1, C1, D1>,
D1 extends D<A1, B1, C1, D1>
> {}
class D<
A1 extends A<A1, B1, C1, D1>,
B1 extends B<A1, B1, C1, D1>,
C1 extends C<A1, B1, C1, D1>,
D1 extends D<A1, B1, C1, D1>
> {}
/* -= Mixins =- */
mixin MixinA<
A1 extends MixinA<A1, B1, C1, D1>,
B1 extends MixinB<A1, B1, C1, D1>,
C1 extends MixinC<A1, B1, C1, D1>,
D1 extends MixinD<A1, B1, C1, D1>
>
on
A<
MixinA<A1, B1, C1, D1>,
MixinB<A1, B1, C1, D1>,
MixinC<A1, B1, C1, D1>,
MixinD<A1, B1, C1, D1>
> {}
mixin MixinB<
A1 extends MixinA<A1, B1, C1, D1>,
B1 extends MixinB<A1, B1, C1, D1>,
C1 extends MixinC<A1, B1, C1, D1>,
D1 extends MixinD<A1, B1, C1, D1>
>
on
B<
MixinA<A1, B1, C1, D1>,
MixinB<A1, B1, C1, D1>,
MixinC<A1, B1, C1, D1>,
MixinD<A1, B1, C1, D1>
> {}
mixin MixinC<
A1 extends MixinA<A1, B1, C1, D1>,
B1 extends MixinB<A1, B1, C1, D1>,
C1 extends MixinC<A1, B1, C1, D1>,
D1 extends MixinD<A1, B1, C1, D1>
>
on
C<
MixinA<A1, B1, C1, D1>,
MixinB<A1, B1, C1, D1>,
MixinC<A1, B1, C1, D1>,
MixinD<A1, B1, C1, D1>
> {}
mixin MixinD<
A1 extends MixinA<A1, B1, C1, D1>,
B1 extends MixinB<A1, B1, C1, D1>,
C1 extends MixinC<A1, B1, C1, D1>,
D1 extends MixinD<A1, B1, C1, D1>
>
on
D<
MixinA<A1, B1, C1, D1>,
MixinB<A1, B1, C1, D1>,
MixinC<A1, B1, C1, D1>,
MixinD<A1, B1, C1, D1>
> {}
void main() {}