blob: 1ec17ba91a99b0b1a69059adb55002c67753885b [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 Interface class can be constructed and implemented but not
/// extended or mixed in and is not exhaustive
///
/// @description Checks that `interface class` can be constructed and
/// implemented outside of the library where it is defined
/// @author sgrekhov22@gmail.com
import "class_modifiers_lib.dart";
class ClassImplementsInterfaceClass implements InterfaceClass {}
base class BaseClassImplementsInterfaceClass implements InterfaceClass {}
interface class InterfaceClassImplementsInterfaceClass
implements InterfaceClass {}
final class FinalClassImplementsInterfaceClass implements InterfaceClass {}
sealed class SealedClassImplementsInterfaceClass implements InterfaceClass {}
abstract class AbstractClassImplementsInterfaceClass
implements InterfaceClass {}
abstract base class AbstractBaseClassImplementsInterfaceClass
implements InterfaceClass {}
abstract interface class AbstractInterfaceClassImplementsInterfaceClass
implements InterfaceClass {}
abstract final class AbstractFinalClassImplementsInterfaceClass
implements InterfaceClass {}
mixin class MixinClassImplementsInterfaceClass implements InterfaceClass {}
base mixin class BaseMixinClassImplementsInterfaceClass
implements InterfaceClass {}
abstract mixin class AbstractMixinClassImplementsInterfaceClass
implements InterfaceClass {}
abstract base mixin class AbstractBaseMixinClassImplementsInterfaceClass
implements InterfaceClass {}
mixin MixinImplementsInterfaceClass implements InterfaceClass {}
base mixin BaseMixinImplementsInterfaceClass implements InterfaceClass {}
enum EnumImplementsInterfaceClass implements InterfaceClass {e1, e2}
main() {
InterfaceClass();
print(ClassImplementsInterfaceClass);
print(BaseClassImplementsInterfaceClass);
print(InterfaceClassImplementsInterfaceClass);
print(FinalClassImplementsInterfaceClass);
print(SealedClassImplementsInterfaceClass);
print(AbstractClassImplementsInterfaceClass);
print(AbstractBaseClassImplementsInterfaceClass);
print(AbstractInterfaceClassImplementsInterfaceClass);
print(AbstractFinalClassImplementsInterfaceClass);
print(MixinClassImplementsInterfaceClass);
print(BaseMixinClassImplementsInterfaceClass);
print(AbstractMixinClassImplementsInterfaceClass);
print(AbstractBaseMixinClassImplementsInterfaceClass);
print(MixinImplementsInterfaceClass);
print(BaseMixinImplementsInterfaceClass);
print(EnumImplementsInterfaceClass);
}