blob: 781440eaf8cc7ad216e2d412ce18a2d393309a91 [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's a compile-time error if a class or enum declaration D from
/// library L has S from library K as a declared mixin, unless:
/// - S is a mixin or mixin class declaration (necessarily from a post-feature
/// library), or
/// - S is a non-mixin class declaration which has Object as superclass and
/// declares no generative constructor, and either
/// - K is a pre-feature library, or
/// - K is a platform library and L is a pre-feature library.
///
/// @description Check that it is a compile-time error if a class declaration
/// mixes in class not declared as `mixin`. Test the case when mixed in classes
/// defined in the same library
/// @author sgrekhov22@gmail.com
class Class {}
base class BaseClass {}
interface class InterfaceClass {}
final class FinalClass {}
abstract class AbstractClass {}
sealed class SealedClass {}
abstract base class AbstractBaseClass {}
abstract interface class AbstractInterfaceClass {}
abstract final class AbstractFinalClass {}
typedef TypedefClass = Class;
typedef TypedefBaseClass = BaseClass;
typedef TypedefInterfaceClass = InterfaceClass;
typedef TypedefFinalClass = FinalClass;
typedef TypedefSealedClass = SealedClass;
typedef TypedefAbstractClass = AbstractClass;
typedef TypedefAbstractBaseClass = AbstractBaseClass;
typedef TypedefAbstractInterfaceClass = AbstractInterfaceClass;
typedef TypedefAbstractFinalClass = AbstractFinalClass;
class C1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class C9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
base class BC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
interface class IC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
final class FC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
sealed class SC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract class AC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract base class ABC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract interface class AIC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC1 with Class {
// ^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC2 with BaseClass {
// ^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC3 with InterfaceClass {
// ^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC4 with FinalClass {
// ^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC5 with SealedClass {
// ^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC6 with AbstractClass {
// ^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC7 with AbstractBaseClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC8 with AbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
abstract final class AFC9 with AbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC1 with TypedefClass {
// ^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC2 with TypedefBaseClass {
// ^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC3 with TypedefInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC4 with TypedefFinalClass {
// ^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC5 with TypedefSealedClass {
// ^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC6 with TypedefAbstractClass {
// ^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC7 with TypedefAbstractBaseClass {
// ^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC8 with TypedefAbstractInterfaceClass {
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
class TC9 with TypedefAbstractFinalClass {
// ^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
}
main() {
print(C1);
print(C2);
print(C3);
print(C4);
print(C5);
print(C6);
print(C7);
print(C8);
print(C9);
print(BC1);
print(BC2);
print(BC3);
print(BC4);
print(BC5);
print(BC6);
print(BC7);
print(BC8);
print(BC9);
print(IC1);
print(IC2);
print(IC3);
print(IC4);
print(IC5);
print(IC6);
print(IC7);
print(IC8);
print(IC9);
print(FC1);
print(FC2);
print(FC3);
print(FC4);
print(FC5);
print(FC6);
print(FC7);
print(FC8);
print(FC9);
print(SC1);
print(SC2);
print(SC3);
print(SC4);
print(SC5);
print(SC6);
print(SC7);
print(SC8);
print(SC9);
print(AC1);
print(AC2);
print(AC3);
print(AC4);
print(AC5);
print(AC6);
print(AC7);
print(AC8);
print(AC9);
print(ABC1);
print(ABC2);
print(ABC3);
print(ABC4);
print(ABC5);
print(ABC6);
print(ABC7);
print(ABC8);
print(ABC9);
print(AIC1);
print(AIC2);
print(AIC3);
print(AIC4);
print(AIC5);
print(AIC6);
print(AIC7);
print(AIC8);
print(AIC9);
print(AFC1);
print(AFC2);
print(AFC3);
print(AFC4);
print(AFC5);
print(AFC6);
print(AFC7);
print(AFC8);
print(AFC9);
print(TC1);
print(TC2);
print(TC3);
print(TC4);
print(TC5);
print(TC6);
print(TC7);
print(TC8);
print(TC9);
}