40 columns                              |
>>> Empty body.
mixin  M  {  }
<<<
mixin M {}
>>> Members.
### These are formatted the same as classes, so most of the member tests are
### covered there. This just ensures that the formatter handles all members in
### a mixin declaration.
mixin M {
  static  const int c = 1;
  static  final int f = 1;
  static  late final int l;
  static  var v;
  static  int get g => c;
  static  set g(int i) {}
  static  int m<X>(X x) => c;
  int  x;
  int  get pr => 0;
  set  pr(int x) {}
  int  me(int x) => x;
  int  operator+(int x) => x;
}
<<<
mixin M {
  static const int c = 1;
  static final int f = 1;
  static late final int l;
  static var v;
  static int get g => c;
  static set g(int i) {}
  static int m<X>(X x) => c;
  int x;
  int get pr => 0;
  set pr(int x) {}
  int me(int x) => x;
  int operator +(int x) => x;
}
>>> Modifiers.
mixin  class  M1  {  }
base  mixin  class  M2  {  }
abstract  mixin  class  M3  {  }
abstract  base  mixin  class  M4  {  }
base  mixin  M5  {  }
<<<
mixin class M1 {}

base mixin class M2 {}

abstract mixin class M3 {}

abstract base mixin class M4 {}

base mixin M5 {}