[dart2js] Use NNBD subtyping in new RTI tests.

Change-Id: Iee39310fdd85da47bffb62faa7234b2bd6dee7ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/159182
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>
diff --git a/tests/dart2js/internal/rti/constant_type_test.dart b/tests/dart2js/internal/rti/constant_type_test.dart
index cd08db5..7e71eb7 100644
--- a/tests/dart2js/internal/rti/constant_type_test.dart
+++ b/tests/dart2js/internal/rti/constant_type_test.dart
@@ -26,9 +26,9 @@
   check<Generic<int>>(const Generic<int>());
 
   check<Generic<dynamic>>(const Generic<dynamic>());
-  check<Generic<Object>>(const Generic<Object>());
-  check<Generic<Object>>(const Generic<dynamic>());
-  check<Generic<dynamic>>(const Generic<Object>());
+  check<Generic<Object?>>(const Generic<Object?>());
+  check<Generic<Object?>>(const Generic<dynamic>());
+  check<Generic<dynamic>>(const Generic<Object?>());
 
   check<List<int>>(const [1]);
   check<List<String>>(const ['one']);
diff --git a/tests/dart2js/internal/rti/simple_is_test.dart b/tests/dart2js/internal/rti/simple_is_test.dart
index 6b79c94..fb82ac4 100644
--- a/tests/dart2js/internal/rti/simple_is_test.dart
+++ b/tests/dart2js/internal/rti/simple_is_test.dart
@@ -25,9 +25,9 @@
   check<Generic<int>>(Generic<int>());
 
   check<Generic<dynamic>>(Generic<dynamic>());
-  check<Generic<Object>>(Generic<Object>());
-  check<Generic<Object>>(Generic<dynamic>());
-  check<Generic<dynamic>>(Generic<Object>());
+  check<Generic<Object?>>(Generic<Object?>());
+  check<Generic<Object?>>(Generic<dynamic>());
+  check<Generic<dynamic>>(Generic<Object?>());
 
   Expect.isTrue(Generic<Thingy>().checkMethod(Thingy()));
   Expect.isTrue(Generic<Object>().checkMethod(Object()));
diff --git a/tests/dart2js/internal/rti/subtype_test.dart b/tests/dart2js/internal/rti/subtype_test.dart
index e4222c4..68f4de7 100644
--- a/tests/dart2js/internal/rti/subtype_test.dart
+++ b/tests/dart2js/internal/rti/subtype_test.dart
@@ -5,6 +5,7 @@
 import 'dart:_foreign_helper' show JS, JS_GET_NAME, TYPE_REF;
 import 'dart:_js_embedded_names' show JsGetName;
 import 'dart:_rti' as rti;
+import 'package:expect/expect.dart';
 
 import 'subtype_utils.dart';
 
@@ -12,6 +13,8 @@
 final String futureName = JS_GET_NAME(JsGetName.FUTURE_CLASS_TYPE_NAME);
 final String nullName = JS_GET_NAME(JsGetName.NULL_CLASS_TYPE_NAME);
 
+final String nullableObject = "$objectName?";
+
 const typeRulesJson = r'''
 {
   "int": {"num": []},
@@ -27,6 +30,8 @@
 
 main() {
   rti.testingAddRules(universe, typeRules);
+  rti.testingUniverseEvalOverride(
+      universe, nullableObject, TYPE_REF<Object?>());
   rti.testingUniverseEvalOverride(universe, objectName, TYPE_REF<Object>());
   rti.testingUniverseEvalOverride(universe, nullName, TYPE_REF<Null>());
   runTests();
@@ -53,35 +58,46 @@
 }
 
 void testTopTypes() {
-  strictSubtype('List<int>', objectName);
-  equivalent(objectName, objectName);
+  strictSubtype('List<int>', nullableObject);
+  equivalent(nullableObject, nullableObject);
   equivalent('@', '@');
   equivalent('~', '~');
   equivalent('1&', '1&');
-  equivalent(objectName, '@');
-  equivalent(objectName, '~');
-  equivalent(objectName, '1&');
+  equivalent(nullableObject, '@');
+  equivalent(nullableObject, '~');
+  equivalent(nullableObject, '1&');
   equivalent('@', '~');
   equivalent('@', '1&');
   equivalent('~', '1&');
-  equivalent('List<$objectName>', 'List<@>');
-  equivalent('List<$objectName>', 'List<~>');
-  equivalent('List<$objectName>', 'List<1&>');
+  equivalent('List<$nullableObject>', 'List<@>');
+  equivalent('List<$nullableObject>', 'List<~>');
+  equivalent('List<$nullableObject>', 'List<1&>');
   equivalent('List<@>', 'List<~>');
   equivalent('List<@>', 'List<1&>');
   equivalent('List<~>', 'List<1&>');
 }
 
 void testNull() {
-  strictSubtype(nullName, 'int');
-  strictSubtype(nullName, 'Iterable<CodeUnits>');
-  strictSubtype(nullName, objectName);
+  if (isStrongMode) {
+    unrelated(nullName, 'int');
+    unrelated(nullName, 'Iterable<CodeUnits>');
+    unrelated(nullName, objectName);
+  } else {
+    strictSubtype(nullName, 'int');
+    strictSubtype(nullName, 'Iterable<CodeUnits>');
+    strictSubtype(nullName, objectName);
+  }
+  strictSubtype(nullName, nullableObject);
   equivalent(nullName, nullName);
 }
 
 void testBottom() {
   String never = '0&';
-  equivalent(nullName, never); // This test is run with legacy subtyping
+  if (isStrongMode) {
+    strictSubtype(never, nullName);
+  } else {
+    equivalent(never, nullName);
+  }
 }
 
 void testFutureOr() {