blob: f96b78d605aacc3a427a51bbe96a772546abbd72 [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.
/// @assertion Mixin can be implemented and mixed in but not constructed or
/// extended and is not exhaustive
///
/// @description Checks that it is a compile-time error to extend a `mixin`
/// outside of the library where it is defined
/// @author sgrekhov22@gmail.com
import "class_modifiers_lib.dart";
class ClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
base class BaseClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
interface class InterfaceClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
final class FinalClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
sealed class SealedClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract class AbstractClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract base class AbstractBaseClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract interface class AbstractInterfaceClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract final class AbstractFinalClassExtendsMixin extends Mixin {}
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
main() {
print(ClassExtendsMixin);
print(BaseClassExtendsMixin);
print(InterfaceClassExtendsMixin);
print(FinalClassExtendsMixin);
print(SealedClassExtendsMixin);
print(AbstractClassExtendsMixin);
print(AbstractBaseClassExtendsMixin);
print(AbstractInterfaceClassExtendsMixin);
print(AbstractFinalClassExtendsMixin);
}