[dart2js] Split up RTI subtype tests.
Change-Id: Id0bc61d295edfc25709aa4ff1bf9fa3c9bde5691
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107221
Reviewed-by: Stephen Adams <sra@google.com>
diff --git a/tests/compiler/dart2js_extra/rti/subtype_test.dart b/tests/compiler/dart2js_extra/rti/subtype_test.dart
index ab6f2cf..c90f0f7 100644
--- a/tests/compiler/dart2js_extra/rti/subtype_test.dart
+++ b/tests/compiler/dart2js_extra/rti/subtype_test.dart
@@ -31,27 +31,27 @@
}
void runTests() {
+ testInterfaces();
+ testTopTypes();
+ testNull();
+ testFutureOr();
+}
+
+void testInterfaces() {
strictSubtype('List<CodeUnits>', 'Iterable<List<int>>');
strictSubtype('CodeUnits', 'Iterable<num>');
strictSubtype('Iterable<int>', 'Iterable<num>');
- strictSubtype('List<int>', objectName);
- strictSubtype('$futureName<int>', '$futureName<num>');
- strictSubtype('int', 'int/');
- strictSubtype('$futureName<int>', 'int/');
- strictSubtype('int/', 'num/');
- strictSubtype('int', 'num/');
- strictSubtype('$futureName<int>', 'num/');
- strictSubtype(nullName, 'int');
- strictSubtype(nullName, 'Iterable<CodeUnits>');
- strictSubtype(nullName, objectName);
unrelated('int', 'CodeUnits');
- equivalent(nullName, nullName);
equivalent('double', 'double');
+ equivalent('List<int>', 'List<int>');
+}
+
+void testTopTypes() {
+ strictSubtype('List<int>', objectName);
equivalent(objectName, objectName);
equivalent('@', '@');
equivalent('~', '~');
equivalent('1&', '1&');
- equivalent('List<int>', 'List<int>');
equivalent(objectName, '@');
equivalent(objectName, '~');
equivalent(objectName, '1&');
@@ -64,6 +64,22 @@
equivalent('List<@>', 'List<~>');
equivalent('List<@>', 'List<1&>');
equivalent('List<~>', 'List<1&>');
+}
+
+void testNull() {
+ strictSubtype(nullName, 'int');
+ strictSubtype(nullName, 'Iterable<CodeUnits>');
+ strictSubtype(nullName, objectName);
+ equivalent(nullName, nullName);
+}
+
+void testFutureOr() {
+ strictSubtype('$futureName<int>', '$futureName<num>');
+ strictSubtype('int', 'int/');
+ strictSubtype('$futureName<int>', 'int/');
+ strictSubtype('int/', 'num/');
+ strictSubtype('int', 'num/');
+ strictSubtype('$futureName<int>', 'num/');
equivalent('@/', '~/');
}