blob: 5d79fb549085d533676fe34003646fe002b3c065 [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 Base class can be constructed and extended but not implemented,
/// mixed in and is not exhaustive
///
/// @description Checks that it is a compile-time error if a `base class` is
/// implemented by `base/final/sealed` outside of the library where it is
/// defined (other cases tested in `basic_restrictions_A03_t*`)
/// @author sgrekhov22@gmail.com
import "class_modifiers_lib.dart";
base class BaseClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
final class FinalClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
sealed class SealedClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract base class AbstractBaseClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract final class AbstractFinalClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
base mixin class BaseMixinClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
abstract base mixin class AbstractBaseMixinClassImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
base mixin BaseMixinImplementsBaseClass implements BaseClass {}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
enum EnumImplementsBaseClass implements BaseClass {e1, e2}
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
main() {
print(BaseClassImplementsBaseClass);
print(FinalClassImplementsBaseClass);
print(SealedClassImplementsBaseClass);
print(AbstractBaseClassImplementsBaseClass);
print(AbstractFinalClassImplementsBaseClass);
print(BaseMixinClassImplementsBaseClass);
print(AbstractBaseMixinClassImplementsBaseClass);
print(BaseMixinImplementsBaseClass);
print(EnumImplementsBaseClass);
}