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
    ;
}
abstract class Mixin extends core::Object /*isMixinDeclaration*/  {
}
class Class1 extends core::Object {
  synthetic constructor •() → self::Class1
    ;
}
abstract class Class2 extends core::Object {
  synthetic constructor •() → self::Class2
    ;
}
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
  ;
