diff --git a/tests/language/operator/number_operator_typing_test.dart b/tests/language/operator/number_operator_typing_test.dart
index dcbacf3..a6fcd7d 100644
--- a/tests/language/operator/number_operator_typing_test.dart
+++ b/tests/language/operator/number_operator_typing_test.dart
@@ -1002,50 +1002,6 @@
   }
 }
 
-/// Creative combinations of types.
-void testComplex<I extends int, D extends double, N extends num,
-    O extends Object, NN extends N>(I i, D d, N n, O o, NN nn) {
-  O p = 1 as O;
-  if (p is! N) throw "promote to O&N";
-  if (p is! NN) throw "promote to O&N&NN";
-
-  checkIntersectionType<O, N>(p, p, p);
-  checkIntersectionType<N, NN>(p, p, p);
-
-  var result01 = p + p;
-  result01.expectStaticType<Exactly<num>>();
-
-  var clamp01 = p.clamp(p, p);
-  clamp01.expectStaticType<Exactly<num>>();
-
-  // Having different unrelated subtypes of int.
-  // Return the first operand's type.
-  N ni = n;
-  if (ni is! int) throw "promote ni to N&int";
-  (i + ni).expectStaticType<Exactly<int>>();
-  (i - ni).expectStaticType<Exactly<int>>();
-  (i * ni).expectStaticType<Exactly<int>>();
-  (i % ni).expectStaticType<Exactly<int>>();
-  i.remainder(ni).expectStaticType<Exactly<int>>();
-
-  // Use LUB for clamp.
-  i.clamp(ni, ni).expectStaticType<Exactly<int>>();
-  i.clamp(ni, i).expectStaticType<Exactly<int>>();
-
-  // Having different unrelated subtypes of double.
-  N nd = 1.0 as N;
-  if (nd is! double) throw "promote nd to N&double";
-  (d + nd).expectStaticType<Exactly<double>>();
-  (d - nd).expectStaticType<Exactly<double>>();
-  (d * nd).expectStaticType<Exactly<double>>();
-  (d % nd).expectStaticType<Exactly<double>>();
-  d.remainder(nd).expectStaticType<Exactly<double>>();
-
-  (d.clamp(nd, nd)).expectStaticType<Exactly<double>>();
-  (d.clamp(nd, d)).expectStaticType<Exactly<double>>();
-  (nd.clamp(d, d)).expectStaticType<Exactly<double>>();
-}
-
 /// Perform constant operations and check that they are still valid.
 class TestConst<I extends int, D extends double, N extends num> {
   static const dynamic dyn = 1;
