diff --git a/pkg/vm/testcases/transformations/mixin_deduplication/generic_recursive_bounds.dart b/pkg/vm/testcases/transformations/mixin_deduplication/generic_recursive_bounds.dart new file mode 100644 index 00000000000..c2bcc402a10 --- /dev/null +++ b/pkg/vm/testcases/transformations/mixin_deduplication/generic_recursive_bounds.dart @@ -0,0 +1,17 @@ +// Copyright (c) 2024, 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. + +class B1 {} + +mixin M1 {} + +class SC1> extends B1 with M1 {} + +class SC2> extends B1 with M1 {} + +class SC3> extends B1 with M1 {} + +class SC4?> extends B1 with M1 {} + +main() {} diff --git a/pkg/vm/testcases/transformations/mixin_deduplication/generic_recursive_bounds.dart.expect b/pkg/vm/testcases/transformations/mixin_deduplication/generic_recursive_bounds.dart.expect new file mode 100644 index 00000000000..6379f82f058 --- /dev/null +++ b/pkg/vm/testcases/transformations/mixin_deduplication/generic_recursive_bounds.dart.expect @@ -0,0 +1,47 @@ +library #lib; +import self as self; +import "dart:core" as core; + +class B1 extends core::Object { + synthetic constructor •() → self::B1 + : super core::Object::•() + ; +} +abstract class M1 extends core::Object /*isMixinDeclaration*/ { +} +abstract class _SC1&B1&M1 = core::List> extends self::B1 implements self::M1 /*isAnonymousMixin,isEliminatedMixin*/ { + synthetic constructor •() → self::_SC1&B1&M1 + : super self::B1::•() + ; +} +class SC1 = core::List> extends self::_SC1&B1&M1 { + synthetic constructor •() → self::SC1 + : super self::_SC1&B1&M1::•() + ; +} +class SC2 = core::List> extends self::_SC1&B1&M1 { + synthetic constructor •() → self::SC2 + : super self::_SC1&B1&M1::•() + ; +} +abstract class _SC3&B1&M1 = core::List> extends self::B1 implements self::M1 /*isAnonymousMixin,isEliminatedMixin*/ { + synthetic constructor •() → self::_SC3&B1&M1 + : super self::B1::•() + ; +} +class SC3 = core::List> extends self::_SC3&B1&M1 { + synthetic constructor •() → self::SC3 + : super self::_SC3&B1&M1::•() + ; +} +abstract class _SC4&B1&M1? = core::List?> extends self::B1 implements self::M1 /*isAnonymousMixin,isEliminatedMixin*/ { + synthetic constructor •() → self::_SC4&B1&M1 + : super self::B1::•() + ; +} +class SC4? = core::List?> extends self::_SC4&B1&M1 { + synthetic constructor •() → self::SC4 + : super self::_SC4&B1&M1::•() + ; +} +static method main() → dynamic {}