blob: 28171d19dece8e4c0f18964241438260e9c6c524 [file] [log] [blame] [edit]
// 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 An enum declaration still cannot be implemented, extended or
/// mixed in anywhere, independently of modifiers.
///
/// @description Check that it is a compile-time error if an enum declaration is
/// extended or used in mixin's `on` part
/// @author sgrekhov22@gmail.com
enum E {e1, e2}
class ExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
base class BaseExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
interface class InterfaceExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
final class FinalExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
sealed class SealedExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
abstract class AbstractExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
abstract base class AbstractBaseExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
abstract interface class AbstractInterfaceExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
abstract final class AbstractFinalExtendsEnum extends E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
mixin MixinOnEnum on E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
base mixin BaseMixinOnEnum on E {}
// ^
// [analyzer] unspecified
// [cfe] unspecified
typedef TypedefE = E;
class ExtendsTypedefEnum extends TypedefE {}
// ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
main() {
print(ExtendsEnum);
print(BaseExtendsEnum);
print(InterfaceExtendsEnum);
print(FinalExtendsEnum);
print(SealedExtendsEnum);
print(AbstractExtendsEnum);
print(AbstractBaseExtendsEnum);
print(AbstractInterfaceExtendsEnum);
print(AbstractFinalExtendsEnum);
print(MixinOnEnum);
print(BaseMixinOnEnum);
print(ExtendsTypedefEnum);
}