// Copyright (c) 2022, 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.

/*library: 
Definition Order:
 A:SupertypesMacro.new()
 B:SupertypesMacro.new()
 M:SupertypesMacro.new()
 C:SupertypesMacro.new()
Definitions:
import 'dart:core' as prefix0;

augment class A {
augment prefix0.String getSuperClass() {
    return "null";
  }
}
augment class B {
augment prefix0.String getSuperClass() {
    return "A";
  }
}
augment class M {
augment prefix0.String getSuperClass() {
    return "null";
  }
}
augment class C {
augment prefix0.String getSuperClass() {
    return "A";
  }
}*/

import 'package:macro/macro.dart';

/*class: A:
definitions:
augment class A {
augment String getSuperClass() {
    return "null";
  }
}*/
@SupertypesMacro()
class A {
  external String getSuperClass();
}

/*class: B:
definitions:
augment class B {
augment String getSuperClass() {
    return "A";
  }
}*/
@SupertypesMacro()
class B extends A {
  external String getSuperClass();
}

/*class: M:
definitions:
augment class M {
augment String getSuperClass() {
    return "null";
  }
}*/
@SupertypesMacro()
mixin M {
  external String getSuperClass();
}

/*class: C:
definitions:
augment class C {
augment String getSuperClass() {
    return "A";
  }
}*/
@SupertypesMacro()
class C extends A with M {
  external String getSuperClass();
}
