blob: bdf307a780e8a7e6ce907eb517ece5d26fa93511 [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 It is a compile-time error if:
/// - A declaration depends directly on a sealed declaration from another
/// library.
///
/// @description Check that it is not an error if a declaration depends on
/// a `sealed` declaration from another library, but not directly. Test class
/// that implements a `sealed` class
/// @author sgrekhov22@gmail.com
import "class_modifiers_lib.dart";
class ExtendsSealed extends ImplementsSealedClass with MixinOnSealed {}
base class BaseExtendsSealed extends ImplementsSealedClass with MixinOnSealed {}
interface class InterfaceExtendsSealed extends ImplementsSealedClass
with MixinOnSealed {}
final class FinalExtendsSealed extends ImplementsSealedClass
with MixinOnSealed {}
sealed class SealedExtendsSealed extends ImplementsSealedClass
with MixinOnSealed {}
abstract class AbstractExtendsSealed extends ImplementsSealedClass
with MixinOnSealed {}
abstract base class AbstractBaseExtendsSealed extends ImplementsSealedClass
with MixinOnSealed {}
abstract interface class AbstractInterfaceExtendsSealed
extends ImplementsSealedClass with MixinOnSealed {}
abstract final class AbstractFinalExtendsSealed extends ImplementsSealedClass
with MixinOnSealed {}
class ImplementsSealed implements ImplementsSealedClass {}
base class BaseImplementsSealed implements ImplementsSealedClass {}
interface class InterfaceImplementsSealed implements ImplementsSealedClass {}
final class FinalImplementsSealed implements ImplementsSealedClass {}
sealed class SealedImplementsSealed implements ImplementsSealedClass {}
abstract class AbstractImplementsSealed implements ImplementsSealedClass {}
abstract base class AbstractBaseImplementsSealed
implements ImplementsSealedClass {}
abstract interface class AbstractInterfaceImplementsSealed
implements ImplementsSealedClass {}
abstract final class AbstractFinalImplementsSealed
implements ImplementsSealedClass {}
mixin class MixinClass implements ImplementsSealedClass {}
base mixin class BaseMixinClass implements ImplementsSealedClass {}
abstract mixin class AbstractMixinClass implements ImplementsSealedClass {}
abstract base mixin class AbstractBaseMixinClass
implements ImplementsSealedClass {}
mixin MixinImplementsImplementsSealedClass implements ImplementsSealedClass {}
base mixin BaseMixinImplementsImplementsSealedClass
implements ImplementsSealedClass {}
mixin MixinOnImplementsSealedClass on ImplementsSealedClass {}
base mixin BaseMixinOnImplementsSealedClass on ImplementsSealedClass {}
main() {
print(ExtendsSealed);
print(BaseExtendsSealed);
print(InterfaceExtendsSealed);
print(FinalExtendsSealed);
print(SealedExtendsSealed);
print(AbstractExtendsSealed);
print(AbstractBaseExtendsSealed);
print(AbstractInterfaceExtendsSealed);
print(AbstractFinalExtendsSealed);
print(ImplementsSealed);
print(BaseImplementsSealed);
print(InterfaceImplementsSealed);
print(FinalImplementsSealed);
print(SealedImplementsSealed);
print(AbstractImplementsSealed);
print(AbstractBaseImplementsSealed);
print(AbstractInterfaceImplementsSealed);
print(AbstractFinalImplementsSealed);
print(MixinClass);
print(BaseMixinClass);
print(AbstractMixinClass);
print(AbstractBaseMixinClass);
print(MixinImplementsImplementsSealedClass);
print(BaseMixinImplementsImplementsSealedClass);
print(MixinOnImplementsSealedClass);
print(BaseMixinOnImplementsSealedClass);
}