library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/macro_class.dart:8:1: Error: This requires the experimental 'macros' language feature to be enabled.
// Try passing the '--enable-experiment=macros' command line option.
// macro class Class1 {}
// ^^^^^
//
// pkg/front_end/testcases/general/macro_class.dart:9:10: Error: This requires the experimental 'macros' language feature to be enabled.
// Try passing the '--enable-experiment=macros' command line option.
// abstract macro class Class2 {}
//          ^^^^^
//
// pkg/front_end/testcases/general/macro_class.dart:10:7: Error: This requires the experimental 'macros' language feature to be enabled.
// Try passing the '--enable-experiment=macros' command line option.
// macro class Class3 = Super with Mixin;
//       ^^^^^
//
// pkg/front_end/testcases/general/macro_class.dart:11:16: Error: This requires the experimental 'macros' language feature to be enabled.
// Try passing the '--enable-experiment=macros' command line option.
// abstract macro class Class4 = Super with Mixin;
//                ^^^^^
//
import self as self;
import "dart:core" as core;

class Super extends core::Object {
  synthetic constructor •() → self::Super
    : super core::Object::•()
    ;
}
abstract class Mixin extends core::Object /*isMixinDeclaration*/  {
}
class Class1 extends core::Object {
  synthetic constructor •() → self::Class1
    : super core::Object::•()
    ;
}
abstract class Class2 extends core::Object {
  synthetic constructor •() → self::Class2
    : super core::Object::•()
    ;
}
class Class3 = self::Super with self::Mixin {
  synthetic constructor •() → self::Class3
    : super self::Super::•()
    ;
}
abstract class Class4 = self::Super with self::Mixin {
  synthetic constructor •() → self::Class4
    : super self::Super::•()
    ;
}
static method main() → dynamic {}
