blob: ab9f52254478e66fedddb3987792e884ad4112b5 [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 Abstract final class cannot be constructed, extended, implemented
/// or mixed in and is not exhaustive
///
/// @description Checks that it is a compile-time error to extend
/// `abstract final class` in the same library where it is defined by a class
/// without `base/final/sealed` modifier
/// @author sgrekhov22@gmail.com
abstract final class AbstractFinalClass {}
class ExtendsAbstractFinalClass extends AbstractFinalClass {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
interface class InterfaceExtendsAbstractFinalClass extends AbstractFinalClass {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract class AbstractExtendsAbstractFinalClass extends AbstractFinalClass {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract interface class AbstractInterfaceExtendsAbstractFinalClass extends AbstractFinalClass {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
mixin class MixinClassExtendsAbstractFinalClass extends AbstractFinalClass {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract mixin class AbstractMixinClassExtendsAbstractFinalClass extends AbstractFinalClass {}
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
main() {
print(ExtendsAbstractFinalClass);
print(InterfaceExtendsAbstractFinalClass);
print(AbstractExtendsAbstractFinalClass);
print(AbstractInterfaceExtendsAbstractFinalClass);
print(MixinClassExtendsAbstractFinalClass);
print(AbstractMixinClassExtendsAbstractFinalClass);
}