diff --git a/pkg/_fe_analyzer_shared/test/macros/api/api_test_data.dart b/pkg/_fe_analyzer_shared/test/macros/api/api_test_data.dart
index 82c2e5f..b0fca36 100644
--- a/pkg/_fe_analyzer_shared/test/macros/api/api_test_data.dart
+++ b/pkg/_fe_analyzer_shared/test/macros/api/api_test_data.dart
@@ -12,6 +12,14 @@
 @ClassMacro()
 abstract class Class2 {}
 
+@ClassMacro()
+class Class3 extends Class2 {}
+
+mixin Mixin {}
+
+@ClassMacro()
+class Class4 extends Class1 with Mixin {}
+
 @FunctionMacro()
 void topLevelFunction1(Class1 a, {Class1? b, required Class2? c}) {}
 
diff --git a/pkg/_fe_analyzer_shared/test/macros/api/api_test_expectations.dart b/pkg/_fe_analyzer_shared/test/macros/api/api_test_expectations.dart
index b43d1e6..388a6cc 100644
--- a/pkg/_fe_analyzer_shared/test/macros/api/api_test_expectations.dart
+++ b/pkg/_fe_analyzer_shared/test/macros/api/api_test_expectations.dart
@@ -5,8 +5,10 @@
 import 'package:_fe_analyzer_shared/src/macros/api.dart';
 
 const Map<String, ClassData> expectedClassData = {
-  'Class1': ClassData(),
-  'Class2': ClassData(isAbstract: true),
+  'Class1': ClassData(superclassOf: 'Object'),
+  'Class2': ClassData(isAbstract: true, superclassOf: 'Object'),
+  'Class3': ClassData(superclassOf: 'Class2', superSuperclassOf: 'Object'),
+  'Class4': ClassData(superclassOf: 'Class1', superSuperclassOf: 'Object'),
 };
 
 const Map<String, FunctionData> expectedFunctionData = {
@@ -61,12 +63,25 @@
   checkTypeAnnotation(expected.type, declaration.type, '$context.type');
 }
 
-void checkClassDeclaration(ClassDeclaration declaration) {
+Future<void> checkClassDeclaration(ClassDeclaration declaration,
+    {ClassIntrospector? classIntrospector}) async {
   String name = declaration.identifier.name;
   ClassData? expected = expectedClassData[name];
   if (expected != null) {
     expect(expected.isAbstract, declaration.isAbstract, '$name.isAbstract');
     expect(expected.isExternal, declaration.isExternal, '$name.isExternal');
+    if (classIntrospector != null) {
+      ClassDeclaration? superclassOf =
+          await classIntrospector.superclassOf(declaration);
+      expect(expected.superclassOf, superclassOf?.identifier.name,
+          '$name.superclassOf');
+      if (superclassOf != null) {
+        ClassDeclaration? superSuperclassOf =
+            await classIntrospector.superclassOf(superclassOf);
+        expect(expected.superSuperclassOf, superSuperclassOf?.identifier.name,
+            '$name.superSuperclassOf');
+      }
+    }
     // TODO(johnniwinther): Test more properties when there are supported.
   } else {
     throw 'Unexpected class declaration "${name}"';
@@ -109,8 +124,14 @@
 class ClassData {
   final bool isAbstract;
   final bool isExternal;
+  final String superclassOf;
+  final String? superSuperclassOf;
 
-  const ClassData({this.isAbstract: false, this.isExternal: false});
+  const ClassData(
+      {this.isAbstract: false,
+      this.isExternal: false,
+      required this.superclassOf,
+      this.superSuperclassOf});
 }
 
 class FunctionData {
diff --git a/pkg/_fe_analyzer_shared/test/macros/api/api_test_macro.dart b/pkg/_fe_analyzer_shared/test/macros/api/api_test_macro.dart
index 2110615..de593f8 100644
--- a/pkg/_fe_analyzer_shared/test/macros/api/api_test_macro.dart
+++ b/pkg/_fe_analyzer_shared/test/macros/api/api_test_macro.dart
@@ -13,18 +13,18 @@
   const ClassMacro();
 
   FutureOr<void> buildTypesForClass(
-      ClassDeclaration clazz, TypeBuilder builder) {
-    checkClassDeclaration(clazz);
+      ClassDeclaration clazz, TypeBuilder builder) async {
+    await checkClassDeclaration(clazz);
   }
 
   FutureOr<void> buildDeclarationsForClass(
-      ClassDeclaration clazz, ClassMemberDeclarationBuilder builder) {
-    checkClassDeclaration(clazz);
+      ClassDeclaration clazz, ClassMemberDeclarationBuilder builder) async {
+    await checkClassDeclaration(clazz, classIntrospector: builder);
   }
 
   FutureOr<void> buildDefinitionForClass(
-      ClassDeclaration clazz, ClassDefinitionBuilder builder) {
-    checkClassDeclaration(clazz);
+      ClassDeclaration clazz, ClassDefinitionBuilder builder) async {
+    await checkClassDeclaration(clazz, classIntrospector: builder);
   }
 }
 
diff --git a/tools/VERSION b/tools/VERSION
index 7ade7c2..ffed01d 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 146
+PRERELEASE 147
 PRERELEASE_PATCH 0
\ No newline at end of file
