[cfe] Use signature type for super access in inference

This uses the `Procedure.signatureType` for checking super access
instead of the types derived from `Procedure.function`. This fixes
the checking of super access in face semi-stubs where the parameter
types have a more restrictive but covariant type.

Change-Id: I8b21238687bcec8e5e42a999c5a94d0e65cac28c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255660
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart
index 05b7503..1ee8d77 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart
@@ -572,6 +572,7 @@
           }
           break;
         case ObjectAccessTargetKind.nullableInstanceMember:
+        case ObjectAccessTargetKind.superMember:
         case ObjectAccessTargetKind.objectMember:
         case ObjectAccessTargetKind.nullableCallFunction:
         case ObjectAccessTargetKind.nullableExtensionMember:
@@ -3602,9 +3603,10 @@
 
   ExpressionInferenceResult visitSuperIndexSet(
       SuperIndexSet node, DartType typeContext) {
-    ObjectAccessTarget indexSetTarget = new ObjectAccessTarget.interfaceMember(
-        thisType!, node.setter,
-        isPotentiallyNullable: false);
+    ObjectAccessTarget indexSetTarget = thisType!.classNode.isMixinDeclaration
+        ? new ObjectAccessTarget.interfaceMember(thisType!, node.setter,
+            isPotentiallyNullable: false)
+        : new ObjectAccessTarget.superMember(thisType!, node.setter);
 
     DartType indexType = indexSetTarget.getIndexKeyType(this);
     DartType valueType = indexSetTarget.getIndexSetValueType(this);
@@ -3640,7 +3642,7 @@
     // the type of the value parameter.
     DartType inferredType = valueResult.inferredType;
 
-    assert(indexSetTarget.isInstanceMember || indexSetTarget.isObjectMember,
+    assert(indexSetTarget.isInstanceMember || indexSetTarget.isSuperMember,
         'Unexpected index set target $indexSetTarget.');
     instrumentation?.record(uriForInstrumentation, node.fileOffset, 'target',
         new InstrumentationValueForMember(node.setter));
@@ -3925,8 +3927,10 @@
   ExpressionInferenceResult visitIfNullSuperIndexSet(
       IfNullSuperIndexSet node, DartType typeContext) {
     ObjectAccessTarget readTarget = node.getter != null
-        ? new ObjectAccessTarget.interfaceMember(thisType!, node.getter!,
-            isPotentiallyNullable: false)
+        ? (thisType!.classNode.isMixinDeclaration
+            ? new ObjectAccessTarget.interfaceMember(thisType!, node.getter!,
+                isPotentiallyNullable: false)
+            : new ObjectAccessTarget.superMember(thisType!, node.getter!))
         : const ObjectAccessTarget.missing();
 
     DartType readType = readTarget.getReturnType(this);
@@ -3935,8 +3939,10 @@
     DartType readIndexType = readTarget.getIndexKeyType(this);
 
     ObjectAccessTarget writeTarget = node.setter != null
-        ? new ObjectAccessTarget.interfaceMember(thisType!, node.setter!,
-            isPotentiallyNullable: false)
+        ? (thisType!.classNode.isMixinDeclaration
+            ? new ObjectAccessTarget.interfaceMember(thisType!, node.setter!,
+                isPotentiallyNullable: false)
+            : new ObjectAccessTarget.superMember(thisType!, node.setter!))
         : const ObjectAccessTarget.missing();
 
     DartType writeIndexType = writeTarget.getIndexKeyType(this);
@@ -3962,7 +3968,7 @@
     writeIndex =
         ensureAssignable(writeIndexType, indexResult.inferredType, writeIndex);
 
-    assert(readTarget.isInstanceMember || readTarget.isObjectMember);
+    assert(readTarget.isInstanceMember || readTarget.isSuperMember);
     instrumentation?.record(uriForInstrumentation, node.readOffset, 'target',
         new InstrumentationValueForMember(node.getter!));
     Expression read = new SuperMethodInvocation(
@@ -3997,7 +4003,7 @@
       returnedValue = createVariableGet(valueVariable);
     }
 
-    assert(writeTarget.isInstanceMember || writeTarget.isObjectMember);
+    assert(writeTarget.isInstanceMember || writeTarget.isSuperMember);
     instrumentation?.record(uriForInstrumentation, node.writeOffset, 'target',
         new InstrumentationValueForMember(node.setter!));
     Expression write = new SuperMethodInvocation(
@@ -4455,6 +4461,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         if ((binaryTarget.isInstanceMember || binaryTarget.isObjectMember) &&
             instrumentation != null &&
             leftType == const DynamicType()) {
@@ -4572,6 +4579,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         if ((unaryTarget.isInstanceMember || unaryTarget.isObjectMember) &&
             instrumentation != null &&
             expressionType == const DynamicType()) {
@@ -4697,6 +4705,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         InstanceAccessKind kind;
         switch (readTarget.kind) {
           case ObjectAccessTargetKind.instanceMember:
@@ -4820,6 +4829,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         InstanceAccessKind kind;
         switch (writeTarget.kind) {
           case ObjectAccessTargetKind.instanceMember:
@@ -4937,6 +4947,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         Member member = readTarget.member!;
         if ((readTarget.isInstanceMember || readTarget.isObjectMember) &&
             instrumentation != null &&
@@ -5111,6 +5122,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         InstanceAccessKind kind;
         switch (writeTarget.kind) {
           case ObjectAccessTargetKind.instanceMember:
@@ -5464,9 +5476,10 @@
 
   ExpressionInferenceResult visitCompoundSuperIndexSet(
       CompoundSuperIndexSet node, DartType typeContext) {
-    ObjectAccessTarget readTarget = new ObjectAccessTarget.interfaceMember(
-        thisType!, node.getter,
-        isPotentiallyNullable: false);
+    ObjectAccessTarget readTarget = thisType!.classNode.isMixinDeclaration
+        ? new ObjectAccessTarget.interfaceMember(thisType!, node.getter,
+            isPotentiallyNullable: false)
+        : new ObjectAccessTarget.superMember(thisType!, node.getter);
 
     DartType readType = readTarget.getReturnType(this);
     DartType readIndexType = readTarget.getIndexKeyType(this);
@@ -5488,7 +5501,7 @@
     readIndex =
         ensureAssignable(readIndexType, indexResult.inferredType, readIndex);
 
-    assert(readTarget.isInstanceMember || readTarget.isObjectMember);
+    assert(readTarget.isInstanceMember || readTarget.isSuperMember);
     instrumentation?.record(uriForInstrumentation, node.readOffset, 'target',
         new InstrumentationValueForMember(node.getter));
     Expression read = new SuperMethodInvocation(
@@ -5510,9 +5523,10 @@
     } else {
       left = read;
     }
-    ObjectAccessTarget writeTarget = new ObjectAccessTarget.interfaceMember(
-        thisType!, node.setter,
-        isPotentiallyNullable: false);
+    ObjectAccessTarget writeTarget = thisType!.classNode.isMixinDeclaration
+        ? new ObjectAccessTarget.interfaceMember(thisType!, node.setter,
+            isPotentiallyNullable: false)
+        : new ObjectAccessTarget.superMember(thisType!, node.setter);
 
     DartType writeIndexType = writeTarget.getIndexKeyType(this);
 
@@ -5544,7 +5558,7 @@
       valueExpression = createVariableGet(valueVariable);
     }
 
-    assert(writeTarget.isInstanceMember || writeTarget.isObjectMember);
+    assert(writeTarget.isInstanceMember || writeTarget.isSuperMember);
     instrumentation?.record(uriForInstrumentation, node.writeOffset, 'target',
         new InstrumentationValueForMember(node.setter));
     Expression write = new SuperMethodInvocation(
@@ -6353,9 +6367,11 @@
   @override
   ExpressionInferenceResult visitSuperPropertySet(
       SuperPropertySet node, DartType typeContext) {
-    ObjectAccessTarget writeTarget = new ObjectAccessTarget.interfaceMember(
-        thisType!, node.interfaceTarget,
-        isPotentiallyNullable: false);
+    ObjectAccessTarget writeTarget = thisType!.classNode.isMixinDeclaration
+        ? new ObjectAccessTarget.interfaceMember(
+            thisType!, node.interfaceTarget,
+            isPotentiallyNullable: false)
+        : new ObjectAccessTarget.superMember(thisType!, node.interfaceTarget);
     DartType writeContext = writeTarget.getSetterType(this);
     writeContext = computeTypeFromSuperClass(
         node.interfaceTarget.enclosingClass!, writeContext);
diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart
index d9de536..0295930a 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor_base.dart
@@ -696,7 +696,7 @@
           ..fileOffset = fileOffset;
 
     DartType tearoffType =
-        getGetterTypeForMemberTarget(callMember, expressionType)
+        getGetterTypeForMemberTarget(callMember, expressionType, isSuper: false)
             .withDeclaredNullability(expressionType.nullability);
     Expression tearOff = new InstanceTearOff(
         InstanceAccessKind.Instance, new VariableGet(t), callName,
@@ -740,9 +740,10 @@
                 AssignabilityKind.unassignableCantTearoff,
                 needsTearOff: false);
           }
-          expressionType =
-              getGetterTypeForMemberTarget(callMember, expressionType)
-                  .withDeclaredNullability(expressionType.nullability);
+          expressionType = getGetterTypeForMemberTarget(
+                  callMember, expressionType,
+                  isSuper: false)
+              .withDeclaredNullability(expressionType.nullability);
         }
       }
     }
@@ -1315,11 +1316,13 @@
   ///    c.getter; // The getter type is `int`.
   ///
   DartType getGetterTypeForMemberTarget(
-      Member interfaceMember, DartType receiverType) {
+      Member interfaceMember, DartType receiverType,
+      {required bool isSuper}) {
     Class memberClass = interfaceMember.enclosingClass!;
     assert(interfaceMember is Field || interfaceMember is Procedure,
         "Unexpected interface member $interfaceMember.");
-    DartType calleeType = interfaceMember.getterType;
+    DartType calleeType =
+        isSuper ? interfaceMember.superGetterType : interfaceMember.getterType;
     if (memberClass.typeParameters.isNotEmpty) {
       receiverType = resolveTypeParameter(receiverType);
       if (receiverType is InterfaceType) {
@@ -1360,7 +1363,8 @@
       Member? member =
           _getInterfaceMember(calleeType.classNode, callName, false, -1);
       if (member != null) {
-        DartType callType = getGetterTypeForMemberTarget(member, calleeType);
+        DartType callType =
+            getGetterTypeForMemberTarget(member, calleeType, isSuper: false);
         if (callType is FunctionType) {
           if (!isNonNullableByDefault) {
             callType = legacyErasure(callType);
@@ -3194,6 +3198,7 @@
       case ObjectAccessTargetKind.instanceMember:
       case ObjectAccessTargetKind.objectMember:
       case ObjectAccessTargetKind.nullableInstanceMember:
+      case ObjectAccessTargetKind.superMember:
         Member member = target.member!;
         if (member is Procedure) {
           if (member.kind == ProcedureKind.Getter) {
@@ -3382,24 +3387,20 @@
       Name methodName,
       ArgumentsImpl arguments,
       DartType typeContext,
-      Procedure? procedure) {
+      Procedure procedure) {
     int fileOffset = expression.fileOffset;
-    ObjectAccessTarget target = procedure != null
+    ObjectAccessTarget target = thisType!.classNode.isMixinDeclaration
         ? new ObjectAccessTarget.interfaceMember(thisType!, procedure,
             isPotentiallyNullable: false)
-        : const ObjectAccessTarget.missing();
+        : new ObjectAccessTarget.superMember(thisType!, procedure);
     DartType receiverType = thisType!;
     bool isSpecialCasedBinaryOperator =
         target.isSpecialCasedBinaryOperator(this);
-    DartType calleeType = target.getGetterType(this);
-    FunctionType functionType = target.getFunctionType(this);
-    if (procedure != null) {
-      calleeType =
-          computeTypeFromSuperClass(procedure.enclosingClass!, calleeType);
-      functionType =
-          computeTypeFromSuperClass(procedure.enclosingClass!, functionType)
-              as FunctionType;
-    }
+    DartType calleeType = computeTypeFromSuperClass(
+        procedure.enclosingClass!, target.getGetterType(this));
+    FunctionType functionType = computeTypeFromSuperClass(
+            procedure.enclosingClass!, target.getFunctionType(this))
+        as FunctionType;
     if (isNonNullableByDefault &&
         methodName == equalsName &&
         functionType.positionalParameters.length == 1) {
@@ -3427,16 +3428,13 @@
 
   /// Performs the core type inference algorithm for super property get.
   ExpressionInferenceResult inferSuperPropertyGet(
-      Expression expression, Name name, DartType typeContext, Member? member) {
-    ObjectAccessTarget readTarget = member != null
+      Expression expression, Name name, DartType typeContext, Member member) {
+    ObjectAccessTarget readTarget = thisType!.classNode.isMixinDeclaration
         ? new ObjectAccessTarget.interfaceMember(thisType!, member,
             isPotentiallyNullable: false)
-        : const ObjectAccessTarget.missing();
-    DartType inferredType = readTarget.getGetterType(this);
-    if (member != null) {
-      inferredType =
-          computeTypeFromSuperClass(member.enclosingClass!, inferredType);
-    }
+        : new ObjectAccessTarget.superMember(thisType!, member);
+    DartType inferredType = computeTypeFromSuperClass(
+        member.enclosingClass!, readTarget.getGetterType(this));
     if (member is Procedure && member.kind == ProcedureKind.Method) {
       return instantiateTearOff(inferredType, typeContext, expression);
     }
diff --git a/pkg/front_end/lib/src/fasta/type_inference/object_access_target.dart b/pkg/front_end/lib/src/fasta/type_inference/object_access_target.dart
index bc48f05..2d921c8 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/object_access_target.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/object_access_target.dart
@@ -25,6 +25,9 @@
   /// potentially nullable receiver.
   objectMember,
 
+  /// A valid access to a statically known super member.
+  superMember,
+
   /// A (non-nullable) access to the `.call` method of a function. This is used
   /// for access on `Function` and on function types.
   callFunction,
@@ -80,6 +83,10 @@
         : new InstanceAccessTarget.nonNullable(receiverType, member);
   }
 
+  /// Creates an access to the super [member].
+  factory ObjectAccessTarget.superMember(DartType receiverType, Member member) =
+      InstanceAccessTarget.superMember;
+
   /// Creates an access to the Object [member].
   factory ObjectAccessTarget.objectMember(
       DartType receiverType, Member member) = InstanceAccessTarget.object;
@@ -126,6 +133,9 @@
   /// Returns `true` if this is an access to an instance member.
   bool get isInstanceMember => kind == ObjectAccessTargetKind.instanceMember;
 
+  /// Returns `true` if this is an access to a super member.
+  bool get isSuperMember => kind == ObjectAccessTargetKind.superMember;
+
   /// Returns `true` if this is an access to an Object member.
   bool get isObjectMember => kind == ObjectAccessTargetKind.objectMember;
 
@@ -371,6 +381,10 @@
   InstanceAccessTarget.nullable(this.receiverType, this.member)
       : super.internal(ObjectAccessTargetKind.nullableInstanceMember);
 
+  /// Creates an access to the super [member].
+  InstanceAccessTarget.superMember(this.receiverType, this.member)
+      : super.internal(ObjectAccessTargetKind.superMember);
+
   /// Creates an access to the Object [member].
   InstanceAccessTarget.object(this.receiverType, this.member)
       : super.internal(ObjectAccessTargetKind.objectMember);
@@ -378,32 +392,28 @@
   @override
   FunctionType getFunctionType(InferenceVisitorBase base) {
     return _getFunctionType(
-        base, base.getGetterTypeForMemberTarget(member, receiverType));
+        base,
+        base.getGetterTypeForMemberTarget(member, receiverType,
+            isSuper: isSuperMember));
   }
 
   @override
   DartType getGetterType(InferenceVisitorBase base) {
-    return base.getGetterTypeForMemberTarget(member, receiverType);
+    return base.getGetterTypeForMemberTarget(member, receiverType,
+        isSuper: isSuperMember);
   }
 
   @override
   DartType getSetterType(InferenceVisitorBase base) {
     Member interfaceMember = member;
     Class memberClass = interfaceMember.enclosingClass!;
-    DartType setterType;
-    if (interfaceMember is Procedure) {
-      assert(interfaceMember.kind == ProcedureKind.Setter);
-      List<VariableDeclaration> setterParameters =
-          interfaceMember.function.positionalParameters;
-      setterType = setterParameters.length > 0
-          ? setterParameters[0].type
-          : const DynamicType();
-    } else if (interfaceMember is Field) {
-      setterType = interfaceMember.type;
-    } else {
-      throw unexpected(
-          interfaceMember.runtimeType.toString(), 'getSetterType', -1, null);
-    }
+    assert(
+        interfaceMember is Field && interfaceMember.hasSetter ||
+            interfaceMember is Procedure && interfaceMember.isSetter,
+        "Unexpected setter target $interfaceMember");
+    DartType setterType = isSuperMember
+        ? interfaceMember.superSetterType
+        : interfaceMember.setterType;
     if (memberClass.typeParameters.isNotEmpty) {
       DartType resolvedReceiverType = base.resolveTypeParameter(receiverType);
       if (resolvedReceiverType is InterfaceType) {
@@ -439,7 +449,9 @@
   @override
   DartType getIndexKeyType(InferenceVisitorBase base) {
     FunctionType functionType = _getFunctionType(
-        base, base.getGetterTypeForMemberTarget(member, receiverType));
+        base,
+        base.getGetterTypeForMemberTarget(member, receiverType,
+            isSuper: isSuperMember));
     if (functionType.positionalParameters.length >= 1) {
       return functionType.positionalParameters[0];
     }
@@ -449,7 +461,9 @@
   @override
   DartType getIndexSetValueType(InferenceVisitorBase base) {
     FunctionType functionType = _getFunctionType(
-        base, base.getGetterTypeForMemberTarget(member, receiverType));
+        base,
+        base.getGetterTypeForMemberTarget(member, receiverType,
+            isSuper: isSuperMember));
     if (functionType.positionalParameters.length >= 2) {
       return functionType.positionalParameters[1];
     }
@@ -459,14 +473,18 @@
   @override
   DartType getReturnType(InferenceVisitorBase base) {
     FunctionType functionType = _getFunctionType(
-        base, base.getGetterTypeForMemberTarget(member, receiverType));
+        base,
+        base.getGetterTypeForMemberTarget(member, receiverType,
+            isSuper: isSuperMember));
     return functionType.returnType;
   }
 
   @override
   DartType getBinaryOperandType(InferenceVisitorBase base) {
     FunctionType functionType = _getFunctionType(
-        base, base.getGetterTypeForMemberTarget(member, receiverType));
+        base,
+        base.getGetterTypeForMemberTarget(member, receiverType,
+            isSuper: isSuperMember));
     if (functionType.positionalParameters.isNotEmpty) {
       return functionType.positionalParameters.first;
     }
diff --git a/pkg/front_end/testcases/general/super_semi_stub.dart.weak.expect b/pkg/front_end/testcases/general/super_semi_stub.dart.weak.expect
index 31c108e..dc1a538 100644
--- a/pkg/front_end/testcases/general/super_semi_stub.dart.weak.expect
+++ b/pkg/front_end/testcases/general/super_semi_stub.dart.weak.expect
@@ -2,14 +2,14 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/super_semi_stub.dart:17:37: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
-//     void Function(num) sup1 = super.method; // ok
-//                                     ^
-//
 // pkg/front_end/testcases/general/super_semi_stub.dart:19:39: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
 //     void Function(num) cls1 = Class().method; // error
 //                                       ^
 //
+// pkg/front_end/testcases/general/super_semi_stub.dart:28:22: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+//     Class().setter = 0.5; // error
+//                      ^
+//
 // pkg/front_end/testcases/general/super_semi_stub.dart:34:14: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
 //   sub.method(0.5); // error
 //              ^
@@ -42,10 +42,8 @@
     : super self::Class::•()
     ;
   method method(covariant-by-declaration core::int a) → void {
-    (core::num) → void sup1 = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:17:37: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
-    void Function(num) sup1 = super.method; // ok
-                                    ^" in super.{self::Class::method} as{TypeError,ForNonNullableByDefault} (core::num) → void;
-    (core::int) → void sup2 = super.{self::Class::method};
+    (core::num) → void sup1 = super.{self::Class::method};
+    (core::num) → void sup2 = super.{self::Class::method};
     (core::num) → void cls1 = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:19:39: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
     void Function(num) cls1 = Class().method; // error
                                       ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
@@ -56,7 +54,9 @@
     super.{self::Class::setter} = 0;
     super.{self::Class::setter} = 0.5;
     new self::Class::•().{self::Class::setter} = 0;
-    new self::Class::•().{self::Class::setter} = 0.5;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:28:22: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    Class().setter = 0.5; // error
+                     ^" in 0.5 as{TypeError,ForNonNullableByDefault} core::int;
   }
 }
 static method test(self::Subclass sub) → dynamic {
diff --git a/pkg/front_end/testcases/general/super_semi_stub.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_semi_stub.dart.weak.modular.expect
index 31c108e..dc1a538 100644
--- a/pkg/front_end/testcases/general/super_semi_stub.dart.weak.modular.expect
+++ b/pkg/front_end/testcases/general/super_semi_stub.dart.weak.modular.expect
@@ -2,14 +2,14 @@
 //
 // Problems in library:
 //
-// pkg/front_end/testcases/general/super_semi_stub.dart:17:37: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
-//     void Function(num) sup1 = super.method; // ok
-//                                     ^
-//
 // pkg/front_end/testcases/general/super_semi_stub.dart:19:39: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
 //     void Function(num) cls1 = Class().method; // error
 //                                       ^
 //
+// pkg/front_end/testcases/general/super_semi_stub.dart:28:22: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+//     Class().setter = 0.5; // error
+//                      ^
+//
 // pkg/front_end/testcases/general/super_semi_stub.dart:34:14: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
 //   sub.method(0.5); // error
 //              ^
@@ -42,10 +42,8 @@
     : super self::Class::•()
     ;
   method method(covariant-by-declaration core::int a) → void {
-    (core::num) → void sup1 = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:17:37: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
-    void Function(num) sup1 = super.method; // ok
-                                    ^" in super.{self::Class::method} as{TypeError,ForNonNullableByDefault} (core::num) → void;
-    (core::int) → void sup2 = super.{self::Class::method};
+    (core::num) → void sup1 = super.{self::Class::method};
+    (core::num) → void sup2 = super.{self::Class::method};
     (core::num) → void cls1 = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:19:39: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
     void Function(num) cls1 = Class().method; // error
                                       ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
@@ -56,7 +54,9 @@
     super.{self::Class::setter} = 0;
     super.{self::Class::setter} = 0.5;
     new self::Class::•().{self::Class::setter} = 0;
-    new self::Class::•().{self::Class::setter} = 0.5;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:28:22: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    Class().setter = 0.5; // error
+                     ^" in 0.5 as{TypeError,ForNonNullableByDefault} core::int;
   }
 }
 static method test(self::Subclass sub) → dynamic {
diff --git a/pkg/front_end/testcases/general/super_semi_stub.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_semi_stub.dart.weak.transformed.expect
new file mode 100644
index 0000000..dc1a538
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_semi_stub.dart.weak.transformed.expect
@@ -0,0 +1,76 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/super_semi_stub.dart:19:39: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) cls1 = Class().method; // error
+//                                       ^
+//
+// pkg/front_end/testcases/general/super_semi_stub.dart:28:22: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+//     Class().setter = 0.5; // error
+//                      ^
+//
+// pkg/front_end/testcases/general/super_semi_stub.dart:34:14: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
+//   sub.method(0.5); // error
+//              ^
+//
+// pkg/front_end/testcases/general/super_semi_stub.dart:38:14: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
+//   cls.method(0.5); // error
+//              ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  synthetic constructor •() → self::Super
+    : super core::Object::•()
+    ;
+  method method(core::num a) → void {}
+  set setter(core::num a) → void {}
+}
+class Class extends self::Super {
+  synthetic constructor •() → self::Class
+    : super self::Super::•()
+    ;
+  forwarding-stub forwarding-semi-stub method /* signature-type: (core::int) → void */ method(covariant-by-declaration core::num a) → void
+    return super.{self::Super::method}(a);
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::num a) → void
+    return super.{self::Super::setter} = a;
+}
+class Subclass extends self::Class {
+  synthetic constructor •() → self::Subclass
+    : super self::Class::•()
+    ;
+  method method(covariant-by-declaration core::int a) → void {
+    (core::num) → void sup1 = super.{self::Class::method};
+    (core::num) → void sup2 = super.{self::Class::method};
+    (core::num) → void cls1 = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:19:39: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) cls1 = Class().method; // error
+                                      ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    (core::int) → void cls2 = new self::Class::•().{self::Class::method}{(core::int) → void};
+    (core::int) → void cls3 = new self::Class::•().{self::Class::method}{(core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    super.{self::Class::setter} = 0;
+    super.{self::Class::setter} = 0.5;
+    new self::Class::•().{self::Class::setter} = 0;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:28:22: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
+    Class().setter = 0.5; // error
+                     ^" in 0.5 as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+static method test(self::Subclass sub) → dynamic {
+  sub.{self::Subclass::method}(0){(core::int) → void};
+  sub.{self::Subclass::method}(invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:34:14: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
+  sub.method(0.5); // error
+             ^" in 0.5 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  self::Class cls = sub;
+  cls.{self::Class::method}(0){(core::int) → void};
+  cls.{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_semi_stub.dart:38:14: Error: The argument type 'double' can't be assigned to the parameter type 'int'.
+  cls.method(0.5); // error
+             ^" in 0.5 as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  self::Super sup = sub;
+  sup.{self::Super::method}(0){(core::num) → void};
+  sup.{self::Super::method}(0.5){(core::num) → void};
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart b/pkg/front_end/testcases/general/super_signature_access.dart
new file mode 100644
index 0000000..237739a
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart
@@ -0,0 +1,114 @@
+// 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.
+
+class Super {
+  void method(num a) {}
+  num operator [](num a) => 0;
+  void operator []=(num a, num b) {}
+  void set setter(num a) {}
+}
+
+class Super1 {
+  num? operator [](num a) => null;
+  void operator []=(num a, num b) {}
+}
+
+class Class extends Super {
+  void method(covariant int a);
+  num operator [](covariant int a);
+  void operator []=(covariant int a, covariant int b);
+  void set setter(covariant int a);
+}
+
+class Class1 extends Super1 {
+  num? operator [](covariant int a);
+
+  void operator []=(covariant int a, covariant int b);
+}
+
+class Subclass extends Class {
+  void method(int a) {
+    num b = a;
+    void Function(num) f = super.method; // Ok: type `void Function(num)`.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+    super.method(b); // Ok.
+    Class().method(b); // Error.
+  }
+
+  num operator [](covariant int a) {
+    num b = a;
+    super[b]; // Ok.
+    Class()[b]; // Error.
+    return 0;
+  }
+
+  void operator []=(covariant int a, covariant int b) {
+    num c = a;
+    super[a] = c; // Ok.
+    Class()[a] = c; // Error.
+    super[c] = b; // Ok.
+    Class()[c] = b; // Error.
+    super[a] += c; // Ok.
+    Class()[a] += c; // Error.
+  }
+
+  void set setter(int a) {
+    num b = a;
+    super.setter = b; // Ok.
+    Class().setter = b; // Error.
+  }
+}
+
+class Subclass1 extends Class1 {
+  num? operator [](covariant int a) {
+    return null;
+  }
+
+  void operator []=(covariant int a, covariant int b) {
+    num c = a;
+    super[a] ??= c; // Ok.
+    Class1()[b] ??= c; // Error.
+  }
+}
+
+mixin Mixin on Class {
+  void method(int a) {
+    num b = a;
+    void Function(num) f = super.method; // Error: type `void Function(int)`.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+    super.method(b); // Error.
+    Class().method(b); // Error.
+  }
+
+  num operator [](covariant int a) {
+    num b = a;
+    super[b]; // Error.
+    Class()[b]; // Error.
+    return 0;
+  }
+
+  void operator []=(covariant int a, covariant int b) {
+    num c = a;
+    super[a] = c; // Error.
+    Class()[a] = c; // Error.
+    super[c] = b; // Error.
+    Class()[c] = b; // Error.
+    super[a] += c; // Error.
+    Class()[a] += c; // Error.
+  }
+
+  void set setter(int a) {
+    num b = a;
+    super.setter = b; // Error.
+    Class().setter = b; // Error.
+  }
+}
+
+mixin Mixin1 on Class1 {
+  void operator []=(covariant int a, covariant int b) {
+    num c = a;
+    super[a] ??= c; // Error.
+    Class1()[b] ??= c; // Error.
+  }
+}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.textual_outline.expect b/pkg/front_end/testcases/general/super_signature_access.dart.textual_outline.expect
new file mode 100644
index 0000000..0516609
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart.textual_outline.expect
@@ -0,0 +1,45 @@
+class Super {
+  void method(num a) {}
+  num operator [](num a) => 0;
+  void operator []=(num a, num b) {}
+  void set setter(num a) {}
+}
+
+class Super1 {
+  num? operator [](num a) => null;
+  void operator []=(num a, num b) {}
+}
+
+class Class extends Super {
+  void method(covariant int a);
+  num operator [](covariant int a);
+  void operator []=(covariant int a, covariant int b);
+  void set setter(covariant int a);
+}
+
+class Class1 extends Super1 {
+  num? operator [](covariant int a);
+  void operator []=(covariant int a, covariant int b);
+}
+
+class Subclass extends Class {
+  void method(int a) {}
+  num operator [](covariant int a) {}
+  void operator []=(covariant int a, covariant int b) {}
+  void set setter(int a) {}
+}
+
+class Subclass1 extends Class1 {
+  num? operator [](covariant int a) {}
+  void operator []=(covariant int a, covariant int b) {}
+}
+
+mixin Mixin on Class {
+  void method(int a) {}
+  num operator [](covariant int a) {}
+  void operator []=(covariant int a, covariant int b) {}
+  void set setter(int a) {}
+}
+mixin Mixin1 on Class1 {
+  void operator []=(covariant int a, covariant int b) {}
+}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/super_signature_access.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..91408c8
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart.textual_outline_modelled.expect
@@ -0,0 +1,45 @@
+class Class extends Super {
+  num operator [](covariant int a);
+  void method(covariant int a);
+  void operator []=(covariant int a, covariant int b);
+  void set setter(covariant int a);
+}
+
+class Class1 extends Super1 {
+  num? operator [](covariant int a);
+  void operator []=(covariant int a, covariant int b);
+}
+
+class Subclass extends Class {
+  num operator [](covariant int a) {}
+  void method(int a) {}
+  void operator []=(covariant int a, covariant int b) {}
+  void set setter(int a) {}
+}
+
+class Subclass1 extends Class1 {
+  num? operator [](covariant int a) {}
+  void operator []=(covariant int a, covariant int b) {}
+}
+
+class Super {
+  num operator [](num a) => 0;
+  void method(num a) {}
+  void operator []=(num a, num b) {}
+  void set setter(num a) {}
+}
+
+class Super1 {
+  num? operator [](num a) => null;
+  void operator []=(num a, num b) {}
+}
+
+mixin Mixin on Class {
+  num operator [](covariant int a) {}
+  void method(int a) {}
+  void operator []=(covariant int a, covariant int b) {}
+  void set setter(int a) {}
+}
+mixin Mixin1 on Class1 {
+  void operator []=(covariant int a, covariant int b) {}
+}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect
new file mode 100644
index 0000000..5360628
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect
@@ -0,0 +1,272 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:34:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) g = Class().method; // Error: type `void Function(int)`.
+//                                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:36:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     Class().method(b); // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[b]; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:49:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] = c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:51:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[c] = b; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:53:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] += c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:59:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class().setter = b; // Error.
+//                      ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class1()[b] ??= c; // Error.
+//                     ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:78:34: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) f = super.method; // Error: type `void Function(int)`.
+//                                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:79:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) g = Class().method; // Error: type `void Function(int)`.
+//                                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:80:18: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super.method(b); // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:81:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     Class().method(b); // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:86:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[b]; // Error.
+//           ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[b]; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:93:16: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[a] = c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:94:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] = c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:95:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[c] = b; // Error.
+//           ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:96:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[c] = b; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:97:14: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super[a] += c; // Error.
+//              ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:98:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] += c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:103:20: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super.setter = b; // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:104:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class().setter = b; // Error.
+//                      ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super[a] ??= c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class1()[b] ??= c; // Error.
+//                     ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  synthetic constructor •() → self::Super
+    : super core::Object::•()
+    ;
+  method method(core::num a) → void {}
+  operator [](core::num a) → core::num
+    return 0;
+  operator []=(core::num a, core::num b) → void {}
+  set setter(core::num a) → void {}
+}
+class Super1 extends core::Object {
+  synthetic constructor •() → self::Super1
+    : super core::Object::•()
+    ;
+  operator [](core::num a) → core::num?
+    return null;
+  operator []=(core::num a, core::num b) → void {}
+}
+class Class extends self::Super {
+  synthetic constructor •() → self::Class
+    : super self::Super::•()
+    ;
+  forwarding-stub forwarding-semi-stub method /* signature-type: (core::int) → void */ method(covariant-by-declaration core::num a) → void
+    return super.{self::Super::method}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num */ [](covariant-by-declaration core::num a) → core::num
+    return super.{self::Super::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super::[]=}(a, b);
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::num a) → void
+    return super.{self::Super::setter} = a;
+}
+class Class1 extends self::Super1 {
+  synthetic constructor •() → self::Class1
+    : super self::Super1::•()
+    ;
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num? */ [](covariant-by-declaration core::num a) → core::num?
+    return super.{self::Super1::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super1::[]=}(a, b);
+}
+class Subclass extends self::Class {
+  synthetic constructor •() → self::Subclass
+    : super self::Class::•()
+    ;
+  method method(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    (core::num) → void f = super.{self::Class::method};
+    (core::num) → void g = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:34:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+                                   ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    super.{self::Class::method}(b);
+    new self::Class::•().{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:36:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    Class().method(b); // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  }
+  operator [](covariant-by-declaration core::int a) → core::num {
+    core::num b = a;
+    super.{self::Class::[]}(b);
+    new self::Class::•().{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[b]; // Error.
+            ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::num};
+    return 0;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    super.{self::Class::[]=}(a, c);
+    new self::Class::•().{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:49:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] = c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+    super.{self::Class::[]=}(c, b);
+    new self::Class::•().{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:51:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[c] = b; // Error.
+            ^" in c as{TypeError,ForNonNullableByDefault} core::int, b){(core::int, core::int) → void};
+    let final core::int #t1 = a in super.{self::Class::[]=}(#t1, super.{self::Class::[]}(#t1).{core::num::+}(c){(core::num) → core::num});
+    let final self::Class #t2 = new self::Class::•() in let final core::int #t3 = a in #t2.{self::Class::[]=}(#t3, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:53:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] += c; // Error.
+               ^" in #t2.{self::Class::[]}(#t3){(core::int) → core::num}.{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    super.{self::Class::setter} = b;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:59:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class().setter = b; // Error.
+                     ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+class Subclass1 extends self::Class1 {
+  synthetic constructor •() → self::Subclass1
+    : super self::Class1::•()
+    ;
+  operator [](covariant-by-declaration core::int a) → core::num? {
+    return null;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null;
+    let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class1()[b] ??= c; // Error.
+                    ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void} : null;
+  }
+}
+abstract class Mixin extends self::Class /*isMixinDeclaration*/  {
+  method method(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    (core::num) → void f = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:78:34: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) f = super.method; // Error: type `void Function(int)`.
+                                 ^" in super.{self::Class::method} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    (core::num) → void g = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:79:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+                                   ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    super.{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:80:18: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super.method(b); // Error.
+                 ^" in b as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:81:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    Class().method(b); // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  }
+  operator [](covariant-by-declaration core::int a) → core::num {
+    core::num b = a;
+    super.{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:86:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[b]; // Error.
+          ^" in b as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[b]; // Error.
+            ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::num};
+    return 0;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    super.{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:93:16: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[a] = c; // Error.
+               ^" in c as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:94:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] = c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+    super.{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:95:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[c] = b; // Error.
+          ^" in c as{TypeError,ForNonNullableByDefault} core::int, b);
+    new self::Class::•().{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:96:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[c] = b; // Error.
+            ^" in c as{TypeError,ForNonNullableByDefault} core::int, b){(core::int, core::int) → void};
+    let final core::int #t7 = a in super.{self::Class::[]=}(#t7, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:97:14: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super[a] += c; // Error.
+             ^" in super.{self::Class::[]}(#t7).{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int);
+    let final self::Class #t8 = new self::Class::•() in let final core::int #t9 = a in #t8.{self::Class::[]=}(#t9, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:98:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] += c; // Error.
+               ^" in #t8.{self::Class::[]}(#t9){(core::int) → core::num}.{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    super.{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:103:20: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super.setter = b; // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:104:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class().setter = b; // Error.
+                     ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/  {
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super[a] ??= c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int) : null;
+    let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class1()[b] ??= c; // Error.
+                    ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void} : null;
+  }
+}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect
new file mode 100644
index 0000000..5360628
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect
@@ -0,0 +1,272 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:34:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) g = Class().method; // Error: type `void Function(int)`.
+//                                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:36:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     Class().method(b); // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[b]; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:49:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] = c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:51:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[c] = b; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:53:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] += c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:59:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class().setter = b; // Error.
+//                      ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class1()[b] ??= c; // Error.
+//                     ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:78:34: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) f = super.method; // Error: type `void Function(int)`.
+//                                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:79:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) g = Class().method; // Error: type `void Function(int)`.
+//                                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:80:18: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super.method(b); // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:81:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     Class().method(b); // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:86:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[b]; // Error.
+//           ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[b]; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:93:16: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[a] = c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:94:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] = c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:95:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[c] = b; // Error.
+//           ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:96:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[c] = b; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:97:14: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super[a] += c; // Error.
+//              ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:98:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] += c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:103:20: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super.setter = b; // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:104:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class().setter = b; // Error.
+//                      ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super[a] ??= c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class1()[b] ??= c; // Error.
+//                     ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  synthetic constructor •() → self::Super
+    : super core::Object::•()
+    ;
+  method method(core::num a) → void {}
+  operator [](core::num a) → core::num
+    return 0;
+  operator []=(core::num a, core::num b) → void {}
+  set setter(core::num a) → void {}
+}
+class Super1 extends core::Object {
+  synthetic constructor •() → self::Super1
+    : super core::Object::•()
+    ;
+  operator [](core::num a) → core::num?
+    return null;
+  operator []=(core::num a, core::num b) → void {}
+}
+class Class extends self::Super {
+  synthetic constructor •() → self::Class
+    : super self::Super::•()
+    ;
+  forwarding-stub forwarding-semi-stub method /* signature-type: (core::int) → void */ method(covariant-by-declaration core::num a) → void
+    return super.{self::Super::method}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num */ [](covariant-by-declaration core::num a) → core::num
+    return super.{self::Super::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super::[]=}(a, b);
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::num a) → void
+    return super.{self::Super::setter} = a;
+}
+class Class1 extends self::Super1 {
+  synthetic constructor •() → self::Class1
+    : super self::Super1::•()
+    ;
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num? */ [](covariant-by-declaration core::num a) → core::num?
+    return super.{self::Super1::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super1::[]=}(a, b);
+}
+class Subclass extends self::Class {
+  synthetic constructor •() → self::Subclass
+    : super self::Class::•()
+    ;
+  method method(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    (core::num) → void f = super.{self::Class::method};
+    (core::num) → void g = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:34:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+                                   ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    super.{self::Class::method}(b);
+    new self::Class::•().{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:36:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    Class().method(b); // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  }
+  operator [](covariant-by-declaration core::int a) → core::num {
+    core::num b = a;
+    super.{self::Class::[]}(b);
+    new self::Class::•().{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[b]; // Error.
+            ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::num};
+    return 0;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    super.{self::Class::[]=}(a, c);
+    new self::Class::•().{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:49:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] = c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+    super.{self::Class::[]=}(c, b);
+    new self::Class::•().{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:51:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[c] = b; // Error.
+            ^" in c as{TypeError,ForNonNullableByDefault} core::int, b){(core::int, core::int) → void};
+    let final core::int #t1 = a in super.{self::Class::[]=}(#t1, super.{self::Class::[]}(#t1).{core::num::+}(c){(core::num) → core::num});
+    let final self::Class #t2 = new self::Class::•() in let final core::int #t3 = a in #t2.{self::Class::[]=}(#t3, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:53:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] += c; // Error.
+               ^" in #t2.{self::Class::[]}(#t3){(core::int) → core::num}.{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    super.{self::Class::setter} = b;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:59:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class().setter = b; // Error.
+                     ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+class Subclass1 extends self::Class1 {
+  synthetic constructor •() → self::Subclass1
+    : super self::Class1::•()
+    ;
+  operator [](covariant-by-declaration core::int a) → core::num? {
+    return null;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null;
+    let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class1()[b] ??= c; // Error.
+                    ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void} : null;
+  }
+}
+abstract class Mixin extends self::Class /*isMixinDeclaration*/  {
+  method method(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    (core::num) → void f = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:78:34: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) f = super.method; // Error: type `void Function(int)`.
+                                 ^" in super.{self::Class::method} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    (core::num) → void g = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:79:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+                                   ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    super.{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:80:18: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super.method(b); // Error.
+                 ^" in b as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:81:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    Class().method(b); // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  }
+  operator [](covariant-by-declaration core::int a) → core::num {
+    core::num b = a;
+    super.{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:86:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[b]; // Error.
+          ^" in b as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[b]; // Error.
+            ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::num};
+    return 0;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    super.{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:93:16: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[a] = c; // Error.
+               ^" in c as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:94:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] = c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+    super.{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:95:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[c] = b; // Error.
+          ^" in c as{TypeError,ForNonNullableByDefault} core::int, b);
+    new self::Class::•().{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:96:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[c] = b; // Error.
+            ^" in c as{TypeError,ForNonNullableByDefault} core::int, b){(core::int, core::int) → void};
+    let final core::int #t7 = a in super.{self::Class::[]=}(#t7, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:97:14: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super[a] += c; // Error.
+             ^" in super.{self::Class::[]}(#t7).{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int);
+    let final self::Class #t8 = new self::Class::•() in let final core::int #t9 = a in #t8.{self::Class::[]=}(#t9, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:98:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] += c; // Error.
+               ^" in #t8.{self::Class::[]}(#t9){(core::int) → core::num}.{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    super.{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:103:20: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super.setter = b; // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:104:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class().setter = b; // Error.
+                     ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/  {
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super[a] ??= c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int) : null;
+    let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class1()[b] ??= c; // Error.
+                    ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void} : null;
+  }
+}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.outline.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.outline.expect
new file mode 100644
index 0000000..021eedc
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.outline.expect
@@ -0,0 +1,78 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  synthetic constructor •() → self::Super
+    ;
+  method method(core::num a) → void
+    ;
+  operator [](core::num a) → core::num
+    ;
+  operator []=(core::num a, core::num b) → void
+    ;
+  set setter(core::num a) → void
+    ;
+}
+class Super1 extends core::Object {
+  synthetic constructor •() → self::Super1
+    ;
+  operator [](core::num a) → core::num?
+    ;
+  operator []=(core::num a, core::num b) → void
+    ;
+}
+class Class extends self::Super {
+  synthetic constructor •() → self::Class
+    ;
+  forwarding-stub forwarding-semi-stub method /* signature-type: (core::int) → void */ method(covariant-by-declaration core::num a) → void
+    return super.{self::Super::method}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num */ [](covariant-by-declaration core::num a) → core::num
+    return super.{self::Super::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super::[]=}(a, b);
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::num a) → void
+    return super.{self::Super::setter} = a;
+}
+class Class1 extends self::Super1 {
+  synthetic constructor •() → self::Class1
+    ;
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num? */ [](covariant-by-declaration core::num a) → core::num?
+    return super.{self::Super1::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super1::[]=}(a, b);
+}
+class Subclass extends self::Class {
+  synthetic constructor •() → self::Subclass
+    ;
+  method method(covariant-by-declaration core::int a) → void
+    ;
+  operator [](covariant-by-declaration core::int a) → core::num
+    ;
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void
+    ;
+  set setter(covariant-by-declaration core::int a) → void
+    ;
+}
+class Subclass1 extends self::Class1 {
+  synthetic constructor •() → self::Subclass1
+    ;
+  operator [](covariant-by-declaration core::int a) → core::num?
+    ;
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void
+    ;
+}
+abstract class Mixin extends self::Class /*isMixinDeclaration*/  {
+  method method(covariant-by-declaration core::int a) → void
+    ;
+  operator [](covariant-by-declaration core::int a) → core::num
+    ;
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void
+    ;
+  set setter(covariant-by-declaration core::int a) → void
+    ;
+}
+abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/  {
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void
+    ;
+}
diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect
new file mode 100644
index 0000000..5360628
--- /dev/null
+++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect
@@ -0,0 +1,272 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:34:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) g = Class().method; // Error: type `void Function(int)`.
+//                                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:36:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     Class().method(b); // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[b]; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:49:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] = c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:51:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[c] = b; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:53:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] += c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:59:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class().setter = b; // Error.
+//                      ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class1()[b] ??= c; // Error.
+//                     ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:78:34: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) f = super.method; // Error: type `void Function(int)`.
+//                                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:79:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+//     void Function(num) g = Class().method; // Error: type `void Function(int)`.
+//                                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:80:18: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super.method(b); // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:81:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     Class().method(b); // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:86:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[b]; // Error.
+//           ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[b]; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:93:16: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[a] = c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:94:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] = c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:95:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+//     super[c] = b; // Error.
+//           ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:96:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[c] = b; // Error.
+//             ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:97:14: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super[a] += c; // Error.
+//              ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:98:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class()[a] += c; // Error.
+//                ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:103:20: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super.setter = b; // Error.
+//                    ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:104:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class().setter = b; // Error.
+//                      ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     super[a] ??= c; // Error.
+//                  ^
+//
+// pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+//     Class1()[b] ??= c; // Error.
+//                     ^
+//
+import self as self;
+import "dart:core" as core;
+
+class Super extends core::Object {
+  synthetic constructor •() → self::Super
+    : super core::Object::•()
+    ;
+  method method(core::num a) → void {}
+  operator [](core::num a) → core::num
+    return 0;
+  operator []=(core::num a, core::num b) → void {}
+  set setter(core::num a) → void {}
+}
+class Super1 extends core::Object {
+  synthetic constructor •() → self::Super1
+    : super core::Object::•()
+    ;
+  operator [](core::num a) → core::num?
+    return null;
+  operator []=(core::num a, core::num b) → void {}
+}
+class Class extends self::Super {
+  synthetic constructor •() → self::Class
+    : super self::Super::•()
+    ;
+  forwarding-stub forwarding-semi-stub method /* signature-type: (core::int) → void */ method(covariant-by-declaration core::num a) → void
+    return super.{self::Super::method}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num */ [](covariant-by-declaration core::num a) → core::num
+    return super.{self::Super::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super::[]=}(a, b);
+  forwarding-stub forwarding-semi-stub set /* signature-type: (core::int) → void */ setter(covariant-by-declaration core::num a) → void
+    return super.{self::Super::setter} = a;
+}
+class Class1 extends self::Super1 {
+  synthetic constructor •() → self::Class1
+    : super self::Super1::•()
+    ;
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int) → core::num? */ [](covariant-by-declaration core::num a) → core::num?
+    return super.{self::Super1::[]}(a);
+  forwarding-stub forwarding-semi-stub operator /* signature-type: (core::int, core::int) → void */ []=(covariant-by-declaration core::num a, covariant-by-declaration core::num b) → void
+    return super.{self::Super1::[]=}(a, b);
+}
+class Subclass extends self::Class {
+  synthetic constructor •() → self::Subclass
+    : super self::Class::•()
+    ;
+  method method(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    (core::num) → void f = super.{self::Class::method};
+    (core::num) → void g = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:34:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+                                   ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    super.{self::Class::method}(b);
+    new self::Class::•().{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:36:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    Class().method(b); // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  }
+  operator [](covariant-by-declaration core::int a) → core::num {
+    core::num b = a;
+    super.{self::Class::[]}(b);
+    new self::Class::•().{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:42:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[b]; // Error.
+            ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::num};
+    return 0;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    super.{self::Class::[]=}(a, c);
+    new self::Class::•().{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:49:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] = c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+    super.{self::Class::[]=}(c, b);
+    new self::Class::•().{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:51:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[c] = b; // Error.
+            ^" in c as{TypeError,ForNonNullableByDefault} core::int, b){(core::int, core::int) → void};
+    let final core::int #t1 = a in super.{self::Class::[]=}(#t1, super.{self::Class::[]}(#t1).{core::num::+}(c){(core::num) → core::num});
+    let final self::Class #t2 = new self::Class::•() in let final core::int #t3 = a in #t2.{self::Class::[]=}(#t3, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:53:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] += c; // Error.
+               ^" in #t2.{self::Class::[]}(#t3){(core::int) → core::num}.{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    super.{self::Class::setter} = b;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:59:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class().setter = b; // Error.
+                     ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+class Subclass1 extends self::Class1 {
+  synthetic constructor •() → self::Subclass1
+    : super self::Class1::•()
+    ;
+  operator [](covariant-by-declaration core::int a) → core::num? {
+    return null;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null;
+    let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class1()[b] ??= c; // Error.
+                    ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void} : null;
+  }
+}
+abstract class Mixin extends self::Class /*isMixinDeclaration*/  {
+  method method(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    (core::num) → void f = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:78:34: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) f = super.method; // Error: type `void Function(int)`.
+                                 ^" in super.{self::Class::method} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    (core::num) → void g = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:79:36: Error: A value of type 'void Function(int)' can't be assigned to a variable of type 'void Function(num)'.
+    void Function(num) g = Class().method; // Error: type `void Function(int)`.
+                                   ^" in new self::Class::•().{self::Class::method}{(core::int) → void} as{TypeError,ForNonNullableByDefault} (core::num) → void;
+    super.{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:80:18: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super.method(b); // Error.
+                 ^" in b as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::method}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:81:20: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    Class().method(b); // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
+  }
+  operator [](covariant-by-declaration core::int a) → core::num {
+    core::num b = a;
+    super.{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:86:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[b]; // Error.
+          ^" in b as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::[]}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:87:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[b]; // Error.
+            ^" in b as{TypeError,ForNonNullableByDefault} core::int){(core::int) → core::num};
+    return 0;
+  }
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    super.{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:93:16: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[a] = c; // Error.
+               ^" in c as{TypeError,ForNonNullableByDefault} core::int);
+    new self::Class::•().{self::Class::[]=}(a, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:94:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] = c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+    super.{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:95:11: Error: The argument type 'num' can't be assigned to the parameter type 'int'.
+    super[c] = b; // Error.
+          ^" in c as{TypeError,ForNonNullableByDefault} core::int, b);
+    new self::Class::•().{self::Class::[]=}(invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:96:13: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[c] = b; // Error.
+            ^" in c as{TypeError,ForNonNullableByDefault} core::int, b){(core::int, core::int) → void};
+    let final core::int #t7 = a in super.{self::Class::[]=}(#t7, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:97:14: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super[a] += c; // Error.
+             ^" in super.{self::Class::[]}(#t7).{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int);
+    let final self::Class #t8 = new self::Class::•() in let final core::int #t9 = a in #t8.{self::Class::[]=}(#t9, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:98:16: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class()[a] += c; // Error.
+               ^" in #t8.{self::Class::[]}(#t9){(core::int) → core::num}.{core::num::+}(c){(core::num) → core::num} as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+  }
+  set setter(covariant-by-declaration core::int a) → void {
+    core::num b = a;
+    super.{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:103:20: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super.setter = b; // Error.
+                   ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+    new self::Class::•().{self::Class::setter} = invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:104:22: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class().setter = b; // Error.
+                     ^" in b as{TypeError,ForNonNullableByDefault} core::int;
+  }
+}
+abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/  {
+  operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void {
+    core::num c = a;
+    let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    super[a] ??= c; // Error.
+                 ^" in c as{TypeError,ForNonNullableByDefault} core::int) : null;
+    let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'.
+    Class1()[b] ??= c; // Error.
+                    ^" in c as{TypeError,ForNonNullableByDefault} core::int){(core::int, core::int) → void} : null;
+  }
+}
diff --git a/pkg/front_end/testcases/modular.status b/pkg/front_end/testcases/modular.status
index a1b7a94..639c2dc 100644
--- a/pkg/front_end/testcases/modular.status
+++ b/pkg/front_end/testcases/modular.status
@@ -47,7 +47,6 @@
 general/override_check_basic: TypeCheckError # Issue #31620
 general/override_check_with_covariant_modifier: TypeCheckError # Issue #31620
 general/override_setter_with_field: TypeCheckError
-general/super_semi_stub: TypeCheckError
 general/unsound_promotion: TypeCheckError
 inference/constructors_infer_from_arguments_argument_not_assignable: TypeCheckError
 inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer: TypeCheckError
diff --git a/pkg/front_end/testcases/weak.status b/pkg/front_end/testcases/weak.status
index b71c27e..d2d575d 100644
--- a/pkg/front_end/testcases/weak.status
+++ b/pkg/front_end/testcases/weak.status
@@ -170,7 +170,6 @@
 general/override_setter_with_field: TypeCheckError
 general/redirecting_factory: RuntimeError
 general/spread_collection: RuntimeError
-general/super_semi_stub: TypeCheckError
 general/type_variable_as_super: RuntimeError
 general/unsound_promotion: TypeCheckError
 general/void_methods: RuntimeError