[dart2js] Cleanup _RtiNode.testState.
Labeling nodes as direct / indirect seems to have been unstable and
unused, so this cl removes that logic. Also removed logic to process
_RtiNode._literalState which ssems to have been unused as well.
Change-Id: Ic463149ee353abcd55c22684f12ba11eb92cc91d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/235722
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Joshua Litt <joshualitt@google.com>
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
index 2606826..5bf8933 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
@@ -25,22 +25,11 @@
abstract class RtiNode {
Entity get entity;
Set<RtiNode> _dependencies;
- int _testState = 0;
- int _literalState = 0;
+ bool _hasTest = false;
Iterable<RtiNode> get dependencies => _dependencies ?? const [];
- bool get hasDirectTest => _testState & 1 != 0;
- bool get hasIndirectTest => _testState & 2 != 0;
-
- bool get hasTest => _testState != 0;
-
- bool get hasDirectLiteral => _literalState & 1 != 0;
- bool get hasIndirectLiteral => _literalState & 2 != 0;
-
- bool get hasLiteral => _literalState != 0;
-
- bool get hasUse => hasTest || hasLiteral;
+ bool get hasTest => _hasTest;
/// Register that if [entity] needs type arguments then so does `node.entity`.
bool addDependency(RtiNode node) {
@@ -53,52 +42,13 @@
return _dependencies.add(node);
}
- void markTest({bool direct}) {
- setTestState(direct ? 1 : 2);
- }
-
- void markDirectTest() {
- setTestState(1);
- }
-
- void markIndirectTest() {
- setTestState(2);
- }
-
- void setTestState(int value) {
- if (_testState != value) {
- if (_testState == 0) {
- _testState |= value;
- if (_dependencies != null) {
- for (RtiNode node in _dependencies) {
- node.markIndirectTest();
- }
+ void markTest() {
+ if (!hasTest) {
+ _hasTest = true;
+ if (_dependencies != null) {
+ for (RtiNode node in _dependencies) {
+ node.markTest();
}
- } else {
- _testState = value;
- }
- }
- }
-
- void markDirectLiteral() {
- setLiteralState(1);
- }
-
- void markIndirectLiteral() {
- setLiteralState(2);
- }
-
- void setLiteralState(int value) {
- if (_literalState != value) {
- if (_literalState == 0) {
- _literalState |= value;
- if (_dependencies != null) {
- for (RtiNode node in _dependencies) {
- node.markIndirectLiteral();
- }
- }
- } else {
- _literalState = value;
}
}
}
@@ -223,9 +173,6 @@
: explicitIsChecks = _world.isChecks.toSet() {
_setupDependencies();
_propagateTests();
- if (forRtiNeeds) {
- _propagateLiterals();
- }
_collectResults();
}
@@ -249,18 +196,6 @@
Iterable<ClassEntity> get classTestsForTesting =>
_classes.values.where((n) => n.hasTest).map((n) => n.cls).toSet();
- /// Classes that explicitly use their type variables in is-tests.
- ///
- /// For instance `A` in:
- ///
- /// class A<T> {
- /// m(o) => o is T;
- /// }
- /// main() => new A<int>().m(0);
- ///
- Iterable<ClassEntity> get directClassTestsForTesting =>
- _classes.values.where((n) => n.hasDirectTest).map((n) => n.cls).toSet();
-
/// Methods that explicitly or implicitly use their type variables in
/// is-tests.
///
@@ -273,18 +208,6 @@
Iterable<Entity> get methodTestsForTesting =>
_methods.values.where((n) => n.hasTest).map((n) => n.function).toSet();
- /// Methods that explicitly use their type variables in is-tests.
- ///
- /// For instance `m` in:
- ///
- /// m<T>(o) => o is T;
- /// main() => m<int>(0);
- ///
- Iterable<Entity> get directMethodTestsForTesting => _methods.values
- .where((n) => n.hasDirectTest)
- .map((n) => n.function)
- .toSet();
-
/// The entities that need type arguments at runtime if the 'key entity' needs
/// type arguments.
///
@@ -546,23 +469,23 @@
}
void _propagateTests() {
- void processTypeVariableType(TypeVariableType type, {bool direct = true}) {
+ void processTypeVariableType(TypeVariableType type) {
TypeVariableEntity variable = type.element;
if (variable.typeDeclaration is ClassEntity) {
- _getClassNode(variable.typeDeclaration).markTest(direct: direct);
+ _getClassNode(variable.typeDeclaration).markTest();
} else {
- _getMethodNode(variable.typeDeclaration).markTest(direct: direct);
+ _getMethodNode(variable.typeDeclaration).markTest();
}
}
- void processType(DartType type, {bool direct = true}) {
+ void processType(DartType type) {
var typeWithoutNullability = type.withoutNullability;
if (typeWithoutNullability is FutureOrType) {
- _getClassNode(_commonElements.futureClass).markIndirectTest();
- processType(typeWithoutNullability.typeArgument, direct: false);
+ _getClassNode(_commonElements.futureClass).markTest();
+ processType(typeWithoutNullability.typeArgument);
} else {
typeWithoutNullability.forEachTypeVariable((TypeVariableType type) {
- processTypeVariableType(type, direct: direct);
+ processTypeVariableType(type);
});
}
}
@@ -570,40 +493,14 @@
_world.isChecks.forEach(processType);
}
- void _propagateLiterals() {
- _world.typeVariableTypeLiterals
- .forEach((TypeVariableType typeVariableType) {
- TypeVariableEntity variable = typeVariableType.element;
- if (variable.typeDeclaration is ClassEntity) {
- _getClassNode(variable.typeDeclaration).markDirectLiteral();
- } else {
- _getMethodNode(variable.typeDeclaration).markDirectLiteral();
- }
- });
- }
-
String dump({bool verbose = false}) {
StringBuffer sb = StringBuffer();
void addNode(RtiNode node) {
- if (node.hasUse || node.dependencies.isNotEmpty || verbose) {
+ if (node.hasTest || node.dependencies.isNotEmpty || verbose) {
sb.write(' $node');
- String comma = '';
- if (node._testState & 1 != 0) {
- sb.write(' direct test');
- comma = ',';
- }
- if (node._testState & 2 != 0) {
- sb.write('$comma indirect test');
- comma = ',';
- }
- if (node._literalState & 1 != 0) {
- sb.write('$comma direct literal');
- comma = ',';
- }
- if (node._literalState & 2 != 0) {
- sb.write('$comma indirect literal');
- comma = ',';
+ if (node.hasTest) {
+ sb.write(' test');
}
if (node.dependencies.isNotEmpty || verbose) {
sb.writeln(':');
diff --git a/pkg/compiler/test/rti/data/async_foreach.dart b/pkg/compiler/test/rti/data/async_foreach.dart
index 1a14bd2..433b5a1 100644
--- a/pkg/compiler/test/rti/data/async_foreach.dart
+++ b/pkg/compiler/test/rti/data/async_foreach.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*spec.class: Class:direct,explicit=[Class.T*],implicit=[Class.T],needsArgs*/
+/*spec.class: Class:explicit=[Class.T*],implicit=[Class.T],needsArgs,test*/
/*prod.class: Class:needsArgs*/
class Class<T> {
method() {
diff --git a/pkg/compiler/test/rti/data/async_foreach_nonasync.dart b/pkg/compiler/test/rti/data/async_foreach_nonasync.dart
index 0cb5ac1..1e371c6 100644
--- a/pkg/compiler/test/rti/data/async_foreach_nonasync.dart
+++ b/pkg/compiler/test/rti/data/async_foreach_nonasync.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*spec.class: Class:direct,explicit=[Class.T*],implicit=[Class.T],needsArgs*/
+/*spec.class: Class:explicit=[Class.T*],implicit=[Class.T],needsArgs,test*/
class Class<T> {
method() {
var list = <T>[];
diff --git a/pkg/compiler/test/rti/data/call_typed_generic.dart b/pkg/compiler/test/rti/data/call_typed_generic.dart
index cc7b472..6900251 100644
--- a/pkg/compiler/test/rti/data/call_typed_generic.dart
+++ b/pkg/compiler/test/rti/data/call_typed_generic.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*spec.class: A:explicit=[A.T*],needsArgs,test*/
class A<T> {
call(T t) {}
}
diff --git a/pkg/compiler/test/rti/data/closure.dart b/pkg/compiler/test/rti/data/closure.dart
index 2e728d0..c4301ee 100644
--- a/pkg/compiler/test/rti/data/closure.dart
+++ b/pkg/compiler/test/rti/data/closure.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*spec.class: A:explicit=[A.T*],needsArgs,test*/
/*prod.class: A:needsArgs*/
class A<T> {
m() {
diff --git a/pkg/compiler/test/rti/data/closure_generic_unneeded.dart b/pkg/compiler/test/rti/data/closure_generic_unneeded.dart
index 6b0ad84..9f8c2d8 100644
--- a/pkg/compiler/test/rti/data/closure_generic_unneeded.dart
+++ b/pkg/compiler/test/rti/data/closure_generic_unneeded.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*spec.class: A:explicit=[A.T*],needsArgs,test*/
/*prod.class: A:needsArgs*/
class A<T> {
@pragma('dart2js:noInline')
diff --git a/pkg/compiler/test/rti/data/closure_unneeded.dart b/pkg/compiler/test/rti/data/closure_unneeded.dart
index 6b0ad84..9f8c2d8 100644
--- a/pkg/compiler/test/rti/data/closure_unneeded.dart
+++ b/pkg/compiler/test/rti/data/closure_unneeded.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*spec.class: A:explicit=[A.T*],needsArgs,test*/
/*prod.class: A:needsArgs*/
class A<T> {
@pragma('dart2js:noInline')
diff --git a/pkg/compiler/test/rti/data/dynamic_is.dart b/pkg/compiler/test/rti/data/dynamic_is.dart
index 6c4e5f6..279a58a 100644
--- a/pkg/compiler/test/rti/data/dynamic_is.dart
+++ b/pkg/compiler/test/rti/data/dynamic_is.dart
@@ -5,7 +5,7 @@
// @dart = 2.7
class A {
- /*member: A.instanceMethod:direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+ /*member: A.instanceMethod:explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)],test*/
instanceMethod<T>(t) => t is T;
}
diff --git a/pkg/compiler/test/rti/data/dynamic_is2.dart b/pkg/compiler/test/rti/data/dynamic_is2.dart
index 213c6bf..4da18d6 100644
--- a/pkg/compiler/test/rti/data/dynamic_is2.dart
+++ b/pkg/compiler/test/rti/data/dynamic_is2.dart
@@ -6,12 +6,12 @@
/*spec.class: A:explicit=[A*]*/
class A {
- /*member: A.instanceMethod:deps=[B.instanceMethod],direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+ /*member: A.instanceMethod:deps=[B.instanceMethod],explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)],test*/
instanceMethod<T>(t) => t is T;
}
class B {
- /*member: B.instanceMethod:implicit=[instanceMethod.T],indirect,needsArgs,selectors=[Selector(call, instanceMethod, arity=2, types=1)]*/
+ /*member: B.instanceMethod:implicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=2, types=1)],test*/
instanceMethod<T>(A a, t) => a.instanceMethod<T>(t);
}
diff --git a/pkg/compiler/test/rti/data/dynamic_is_closure.dart b/pkg/compiler/test/rti/data/dynamic_is_closure.dart
index d5e213c..3cee2f0 100644
--- a/pkg/compiler/test/rti/data/dynamic_is_closure.dart
+++ b/pkg/compiler/test/rti/data/dynamic_is_closure.dart
@@ -5,7 +5,7 @@
// @dart = 2.7
class A {
- /*member: A.instanceMethod:direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+ /*member: A.instanceMethod:explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)],test*/
instanceMethod<T>(t) => t is T;
}
diff --git a/pkg/compiler/test/rti/data/dynamic_is_closure2.dart b/pkg/compiler/test/rti/data/dynamic_is_closure2.dart
index 36482a6..dddff8c 100644
--- a/pkg/compiler/test/rti/data/dynamic_is_closure2.dart
+++ b/pkg/compiler/test/rti/data/dynamic_is_closure2.dart
@@ -5,12 +5,12 @@
// @dart = 2.7
class A {
- /*member: A.instanceMethod:deps=[local],direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+ /*member: A.instanceMethod:deps=[local],explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)],test*/
instanceMethod<T>(t) => t is T;
}
main() {
- /*implicit=[local.T],indirect,needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+ /*implicit=[local.T],needsArgs,selectors=[Selector(call, call, arity=1, types=1)],test*/
local<T>(t) {
var a = new A();
a.instanceMethod<T>(t);
diff --git a/pkg/compiler/test/rti/data/dynamic_tear_off.dart b/pkg/compiler/test/rti/data/dynamic_tear_off.dart
index baae3e9..2e21118 100644
--- a/pkg/compiler/test/rti/data/dynamic_tear_off.dart
+++ b/pkg/compiler/test/rti/data/dynamic_tear_off.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*member: staticMethod:direct,explicit=[staticMethod.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*member: staticMethod:explicit=[staticMethod.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)],test*/
staticMethod<T>(t) => t is T;
main() {
diff --git a/pkg/compiler/test/rti/data/dynamic_tear_off2.dart b/pkg/compiler/test/rti/data/dynamic_tear_off2.dart
index 1db565c..ddf36f7 100644
--- a/pkg/compiler/test/rti/data/dynamic_tear_off2.dart
+++ b/pkg/compiler/test/rti/data/dynamic_tear_off2.dart
@@ -4,11 +4,11 @@
// @dart = 2.7
-/*member: staticMethod:deps=[B.instanceMethod],direct,explicit=[staticMethod.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*member: staticMethod:deps=[B.instanceMethod],explicit=[staticMethod.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)],test*/
staticMethod<T>(t) => t is T;
class B {
- /*member: B.instanceMethod:implicit=[instanceMethod.T],indirect,needsArgs,selectors=[Selector(call, instanceMethod, arity=2, types=1)]*/
+ /*member: B.instanceMethod:implicit=[instanceMethod.T],needsArgs,selectors=[Selector(call, instanceMethod, arity=2, types=1)],test*/
instanceMethod<T>(a, t) => a<T>(t);
}
diff --git a/pkg/compiler/test/rti/data/dynamic_tear_off3.dart b/pkg/compiler/test/rti/data/dynamic_tear_off3.dart
index 8917791..51f06d1 100644
--- a/pkg/compiler/test/rti/data/dynamic_tear_off3.dart
+++ b/pkg/compiler/test/rti/data/dynamic_tear_off3.dart
@@ -6,11 +6,11 @@
/*spec.class: A:explicit=[A*]*/
class A {
- /*member: A.instanceMethod:deps=[staticMethod],direct,explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)]*/
+ /*member: A.instanceMethod:deps=[staticMethod],explicit=[instanceMethod.T*],needsArgs,selectors=[Selector(call, instanceMethod, arity=1, types=1)],test*/
instanceMethod<T>(t) => t is T;
}
-/*member: staticMethod:implicit=[staticMethod.T],indirect,needsArgs,selectors=[Selector(call, call, arity=2, types=1)]*/
+/*member: staticMethod:implicit=[staticMethod.T],needsArgs,selectors=[Selector(call, call, arity=2, types=1)],test*/
staticMethod<T>(A a, t) => a.instanceMethod<T>(t);
main() {
diff --git a/pkg/compiler/test/rti/data/dynamic_tear_off4.dart b/pkg/compiler/test/rti/data/dynamic_tear_off4.dart
index 462b94d..5ac2dd1 100644
--- a/pkg/compiler/test/rti/data/dynamic_tear_off4.dart
+++ b/pkg/compiler/test/rti/data/dynamic_tear_off4.dart
@@ -4,10 +4,10 @@
// @dart = 2.7
-/*member: staticMethod1:deps=[staticMethod2],direct,explicit=[staticMethod1.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)]*/
+/*member: staticMethod1:deps=[staticMethod2],explicit=[staticMethod1.T*],needsArgs,selectors=[Selector(call, call, arity=1, types=1)],test*/
staticMethod1<T>(t) => t is T;
-/*member: staticMethod2:implicit=[staticMethod2.T],indirect,needsArgs,selectors=[Selector(call, call, arity=2, types=1)]*/
+/*member: staticMethod2:implicit=[staticMethod2.T],needsArgs,selectors=[Selector(call, call, arity=2, types=1)],test*/
staticMethod2<T>(a, t) => a<T>(t);
main() {
diff --git a/pkg/compiler/test/rti/data/explicit_as.dart b/pkg/compiler/test/rti/data/explicit_as.dart
index cbfeda5..e90aad4 100644
--- a/pkg/compiler/test/rti/data/explicit_as.dart
+++ b/pkg/compiler/test/rti/data/explicit_as.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*spec.class: C:direct,explicit=[C.T*,C<String*>*],needsArgs*/
+/*spec.class: C:explicit=[C.T*,C<String*>*],needsArgs,test*/
class C<T> {
T field;
}
diff --git a/pkg/compiler/test/rti/data/function_subtype_local5.dart b/pkg/compiler/test/rti/data/function_subtype_local5.dart
index bf14939..dd30a14 100644
--- a/pkg/compiler/test/rti/data/function_subtype_local5.dart
+++ b/pkg/compiler/test/rti/data/function_subtype_local5.dart
@@ -17,7 +17,7 @@
typedef int Boz<T>(T a);
typedef int Biz<T>(T a, int b);
-/*class: C:direct,explicit=[int* Function(C.T*)*,int* Function(C.T*,[String*])*,int* Function(C.T*,int*)*,int* Function(C.T*,{,b:String*})*],needsArgs*/
+/*class: C:explicit=[int* Function(C.T*)*,int* Function(C.T*,[String*])*,int* Function(C.T*,int*)*,int* Function(C.T*,{,b:String*})*],needsArgs,test*/
class C<T> {
void test(String nameOfT, bool expectedResult) {
// TODO(johnniwinther): Optimize local function type signature need.
diff --git a/pkg/compiler/test/rti/data/future_or.dart b/pkg/compiler/test/rti/data/future_or.dart
index 40e625c..afdce83 100644
--- a/pkg/compiler/test/rti/data/future_or.dart
+++ b/pkg/compiler/test/rti/data/future_or.dart
@@ -6,7 +6,7 @@
import 'dart:async';
-/*spec.class: global#Future:implicit=[Future<A*>],indirect,needsArgs*/
+/*spec.class: global#Future:implicit=[Future<A*>],needsArgs,test*/
/*class: A:explicit=[FutureOr<A*>*],implicit=[A,Future<A*>]*/
class A {}
diff --git a/pkg/compiler/test/rti/data/future_or_future_or.dart b/pkg/compiler/test/rti/data/future_or_future_or.dart
index f2ff8ff..b7bc862 100644
--- a/pkg/compiler/test/rti/data/future_or_future_or.dart
+++ b/pkg/compiler/test/rti/data/future_or_future_or.dart
@@ -6,7 +6,7 @@
import 'dart:async';
-/*spec.class: global#Future:implicit=[Future<A*>,Future<FutureOr<A*>*>],indirect,needsArgs*/
+/*spec.class: global#Future:implicit=[Future<A*>,Future<FutureOr<A*>*>],needsArgs,test*/
/*class: A:explicit=[FutureOr<FutureOr<A*>*>*],implicit=[A,Future<A*>,Future<FutureOr<A*>*>,FutureOr<A*>]*/
class A {}
diff --git a/pkg/compiler/test/rti/data/future_or_future_or_generic.dart b/pkg/compiler/test/rti/data/future_or_future_or_generic.dart
index 85a79bb..846a4f7 100644
--- a/pkg/compiler/test/rti/data/future_or_future_or_generic.dart
+++ b/pkg/compiler/test/rti/data/future_or_future_or_generic.dart
@@ -6,9 +6,9 @@
import 'dart:async';
-/*spec.class: global#Future:deps=[A],implicit=[Future<B<A.T*>*>,Future<C*>],indirect,needsArgs*/
+/*spec.class: global#Future:deps=[A],implicit=[Future<B<A.T*>*>,Future<C*>],needsArgs,test*/
-/*class: A:explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],indirect,needsArgs*/
+/*class: A:explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],needsArgs,test*/
class A<T> {
m(o) => o is FutureOr<B<T>>;
}
diff --git a/pkg/compiler/test/rti/data/future_or_generic.dart b/pkg/compiler/test/rti/data/future_or_generic.dart
index 31edda3..b1376f4 100644
--- a/pkg/compiler/test/rti/data/future_or_generic.dart
+++ b/pkg/compiler/test/rti/data/future_or_generic.dart
@@ -6,9 +6,9 @@
import 'dart:async';
-/*spec.class: global#Future:deps=[A],implicit=[Future<A.T*>],indirect,needsArgs*/
+/*spec.class: global#Future:deps=[A],implicit=[Future<A.T*>],needsArgs,test*/
-/*class: A:explicit=[FutureOr<A.T*>*],implicit=[A.T,Future<A.T*>],indirect,needsArgs*/
+/*class: A:explicit=[FutureOr<A.T*>*],implicit=[A.T,Future<A.T*>],needsArgs,test*/
class A<T> {
m(o) => o is FutureOr<T>;
}
diff --git a/pkg/compiler/test/rti/data/future_or_generic2.dart b/pkg/compiler/test/rti/data/future_or_generic2.dart
index c4d594a..827b8ad 100644
--- a/pkg/compiler/test/rti/data/future_or_generic2.dart
+++ b/pkg/compiler/test/rti/data/future_or_generic2.dart
@@ -6,9 +6,9 @@
import 'dart:async';
-/*spec.class: global#Future:deps=[A],implicit=[Future<B<A.T*>*>],indirect,needsArgs*/
+/*spec.class: global#Future:deps=[A],implicit=[Future<B<A.T*>*>],needsArgs,test*/
-/*class: A:explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],indirect,needsArgs*/
+/*class: A:explicit=[FutureOr<B<A.T*>*>*],implicit=[B<A.T*>,Future<B<A.T*>*>],needsArgs,test*/
class A<T> {
m(o) => o is FutureOr<B<T>>;
}
diff --git a/pkg/compiler/test/rti/data/generic_class_is.dart b/pkg/compiler/test/rti/data/generic_class_is.dart
index 0268c28..a56334a 100644
--- a/pkg/compiler/test/rti/data/generic_class_is.dart
+++ b/pkg/compiler/test/rti/data/generic_class_is.dart
@@ -7,7 +7,7 @@
/*class: A:implicit=[A]*/
class A {}
-/*class: B:direct,explicit=[B.T*],needsArgs*/
+/*class: B:explicit=[B.T*],needsArgs,test*/
class B<T> {
@pragma('dart2js:noInline')
method(T t) => t is T;
diff --git a/pkg/compiler/test/rti/data/generic_class_is2.dart b/pkg/compiler/test/rti/data/generic_class_is2.dart
index 2703f47..20864b8 100644
--- a/pkg/compiler/test/rti/data/generic_class_is2.dart
+++ b/pkg/compiler/test/rti/data/generic_class_is2.dart
@@ -12,7 +12,7 @@
/*spec.class: A1:implicit=[A1]*/
class A1 implements A<C1> {}
-/*class: B:direct,explicit=[B.T*],needsArgs*/
+/*class: B:explicit=[B.T*],needsArgs,test*/
class B<T> {
@pragma('dart2js:noInline')
method(var t) => t is T;
diff --git a/pkg/compiler/test/rti/data/generic_instanceof4.dart b/pkg/compiler/test/rti/data/generic_instanceof4.dart
index bfa2a1f..0bcf276 100644
--- a/pkg/compiler/test/rti/data/generic_instanceof4.dart
+++ b/pkg/compiler/test/rti/data/generic_instanceof4.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*class: A:deps=[B],direct,explicit=[A.T*],needsArgs*/
+/*class: A:deps=[B],explicit=[A.T*],needsArgs,test*/
class A<T> {
@pragma('dart2js:noInline')
foo(x) {
@@ -15,7 +15,7 @@
/*class: BB:implicit=[BB]*/
class BB {}
-/*class: B:implicit=[B.T],indirect,needsArgs*/
+/*class: B:implicit=[B.T],needsArgs,test*/
class B<T> implements BB {
@pragma('dart2js:noInline')
foo() {
diff --git a/pkg/compiler/test/rti/data/generic_instanceof4_unused.dart b/pkg/compiler/test/rti/data/generic_instanceof4_unused.dart
index ee06e93..5b45da2 100644
--- a/pkg/compiler/test/rti/data/generic_instanceof4_unused.dart
+++ b/pkg/compiler/test/rti/data/generic_instanceof4_unused.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*class: A:deps=[B],direct,explicit=[A.T*],needsArgs*/
+/*class: A:deps=[B],explicit=[A.T*],needsArgs,test*/
class A<T> {
@pragma('dart2js:noInline')
foo(x) {
@@ -16,7 +16,7 @@
// computation of implicit is-tests.
class BB {}
-/*class: B:implicit=[B.T],indirect,needsArgs*/
+/*class: B:implicit=[B.T],needsArgs,test*/
class B<T> implements BB {
@pragma('dart2js:noInline')
foo() {
diff --git a/pkg/compiler/test/rti/data/generic_method1.dart b/pkg/compiler/test/rti/data/generic_method1.dart
index f0f6f81..11237ef 100644
--- a/pkg/compiler/test/rti/data/generic_method1.dart
+++ b/pkg/compiler/test/rti/data/generic_method1.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*class: A:deps=[method2],direct,explicit=[A.T*],needsArgs*/
+/*class: A:deps=[method2],explicit=[A.T*],needsArgs,test*/
class A<T> {
@pragma('dart2js:noInline')
foo(x) {
@@ -17,11 +17,11 @@
/*class: BB:implicit=[BB]*/
class BB {}
-/*member: method2:deps=[B],implicit=[method2.T],indirect,needsArgs*/
+/*member: method2:deps=[B],implicit=[method2.T],needsArgs,test*/
@pragma('dart2js:noInline')
method2<T>() => new A<T>();
-/*class: B:deps=[method1],implicit=[B.T],indirect,needsArgs*/
+/*class: B:deps=[method1],implicit=[B.T],needsArgs,test*/
class B<T> implements BB {
@pragma('dart2js:noInline')
foo() {
@@ -29,7 +29,7 @@
}
}
-/*member: method1:implicit=[method1.T],indirect,needsArgs*/
+/*member: method1:implicit=[method1.T],needsArgs,test*/
@pragma('dart2js:noInline')
method1<T>() {
return new B<T>().foo();
diff --git a/pkg/compiler/test/rti/data/generic_method2.dart b/pkg/compiler/test/rti/data/generic_method2.dart
index 9fc5d87..101c7f7 100644
--- a/pkg/compiler/test/rti/data/generic_method2.dart
+++ b/pkg/compiler/test/rti/data/generic_method2.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*class: A:deps=[B],direct,explicit=[A.T*],needsArgs*/
+/*class: A:deps=[B],explicit=[A.T*],needsArgs,test*/
class A<T> {
@pragma('dart2js:noInline')
foo(x) {
@@ -17,7 +17,7 @@
/*class: BB:implicit=[BB]*/
class BB {}
-/*class: B:deps=[method1],implicit=[B.T],indirect,needsArgs*/
+/*class: B:deps=[method1],implicit=[B.T],needsArgs,test*/
class B<T> implements BB {
@pragma('dart2js:noInline')
foo() {
@@ -25,7 +25,7 @@
}
}
-/*member: method1:implicit=[method1.T],indirect,needsArgs*/
+/*member: method1:implicit=[method1.T],needsArgs,test*/
@pragma('dart2js:noInline')
method1<T>() {
return new B<T>().foo();
diff --git a/pkg/compiler/test/rti/data/generic_method3.dart b/pkg/compiler/test/rti/data/generic_method3.dart
index 2bc69b6..d2e7916 100644
--- a/pkg/compiler/test/rti/data/generic_method3.dart
+++ b/pkg/compiler/test/rti/data/generic_method3.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*class: A:deps=[method2],direct,explicit=[A.T*],needsArgs*/
+/*class: A:deps=[method2],explicit=[A.T*],needsArgs,test*/
class A<T> {
@pragma('dart2js:noInline')
foo(x) {
@@ -17,11 +17,11 @@
/*class: BB:implicit=[BB]*/
class BB {}
-/*member: method2:deps=[B],implicit=[method2.T],indirect,needsArgs*/
+/*member: method2:deps=[B],implicit=[method2.T],needsArgs,test*/
@pragma('dart2js:noInline')
method2<T>() => new A<T>();
-/*class: B:implicit=[B.T],indirect,needsArgs*/
+/*class: B:implicit=[B.T],needsArgs,test*/
class B<T> implements BB {
@pragma('dart2js:noInline')
foo() {
diff --git a/pkg/compiler/test/rti/data/generic_method4.dart b/pkg/compiler/test/rti/data/generic_method4.dart
index d1b48b4..7e1c616 100644
--- a/pkg/compiler/test/rti/data/generic_method4.dart
+++ b/pkg/compiler/test/rti/data/generic_method4.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*class: A:deps=[C.method2],direct,explicit=[A.T*],needsArgs*/
+/*class: A:deps=[C.method2],explicit=[A.T*],needsArgs,test*/
class A<T> {
@pragma('dart2js:noInline')
foo(x) {
@@ -17,7 +17,7 @@
/*class: BB:implicit=[BB]*/
class BB {}
-/*class: B:deps=[C.method1],implicit=[B.T],indirect,needsArgs*/
+/*class: B:deps=[C.method1],implicit=[B.T],needsArgs,test*/
class B<T> implements BB {
@pragma('dart2js:noInline')
foo(c) {
@@ -26,13 +26,13 @@
}
class C {
- /*member: C.method1:implicit=[method1.T],indirect,needsArgs,selectors=[Selector(call, method1, arity=0, types=1)]*/
+ /*member: C.method1:implicit=[method1.T],needsArgs,selectors=[Selector(call, method1, arity=0, types=1)],test*/
@pragma('dart2js:noInline')
method1<T>() {
return new B<T>().foo(this);
}
- /*member: C.method2:deps=[B],implicit=[method2.T],indirect,needsArgs,selectors=[Selector(call, method2, arity=0, types=1)]*/
+ /*member: C.method2:deps=[B],implicit=[method2.T],needsArgs,selectors=[Selector(call, method2, arity=0, types=1)],test*/
@pragma('dart2js:noInline')
method2<T>() => new A<T>();
}
diff --git a/pkg/compiler/test/rti/data/generic_method_is.dart b/pkg/compiler/test/rti/data/generic_method_is.dart
index 246e40b..19036845 100644
--- a/pkg/compiler/test/rti/data/generic_method_is.dart
+++ b/pkg/compiler/test/rti/data/generic_method_is.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*member: method:direct,explicit=[method.T*],needsArgs*/
+/*member: method:explicit=[method.T*],needsArgs,test*/
method<T>(T t) => t is T;
main() {
diff --git a/pkg/compiler/test/rti/data/generic_method_is2.dart b/pkg/compiler/test/rti/data/generic_method_is2.dart
index 9505896..e67767e 100644
--- a/pkg/compiler/test/rti/data/generic_method_is2.dart
+++ b/pkg/compiler/test/rti/data/generic_method_is2.dart
@@ -47,36 +47,36 @@
class F3 {}
// Calls to this imply a check of the passed type arguments.
-/*member: topLevelMethod1:direct,explicit=[topLevelMethod1.T*],needsArgs,selectors=[Selector(call, call, arity=2, named=[a1], types=1)]*/
+/*member: topLevelMethod1:explicit=[topLevelMethod1.T*],needsArgs,selectors=[Selector(call, call, arity=2, named=[a1], types=1)],test*/
bool topLevelMethod1<T>(T t, {a1}) => t is T;
// Calls to this does _not_ imply a check of the passed type arguments.
-/*spec.member: topLevelMethod2:direct,explicit=[topLevelMethod2.T*],needsArgs,selectors=[Selector(call, call, arity=2, named=[a2], types=1)]*/
+/*spec.member: topLevelMethod2:explicit=[topLevelMethod2.T*],needsArgs,selectors=[Selector(call, call, arity=2, named=[a2], types=1)],test*/
T topLevelMethod2<T>(T t, {a2}) => t;
class Class {
// Calls to this imply a check of the passed type arguments.
- /*member: Class.instanceMethod1:direct,explicit=[instanceMethod1.S*],needsArgs,selectors=[Selector(call, call, arity=2, named=[b1], types=1),Selector(call, instanceMethod1, arity=2, named=[b1], types=1)]*/
+ /*member: Class.instanceMethod1:explicit=[instanceMethod1.S*],needsArgs,selectors=[Selector(call, call, arity=2, named=[b1], types=1),Selector(call, instanceMethod1, arity=2, named=[b1], types=1)],test*/
bool instanceMethod1<S>(S s, {b1}) => s is S;
// Calls to this does _not_ imply a check of the passed type arguments.
- /*spec.member: Class.instanceMethod2:direct,explicit=[instanceMethod2.S*],needsArgs,selectors=[Selector(call, call, arity=2, named=[b2], types=1),Selector(call, instanceMethod2, arity=2, named=[b2], types=1)]*/
+ /*spec.member: Class.instanceMethod2:explicit=[instanceMethod2.S*],needsArgs,selectors=[Selector(call, call, arity=2, named=[b2], types=1),Selector(call, instanceMethod2, arity=2, named=[b2], types=1)],test*/
S instanceMethod2<S>(S s, {b2}) => s;
}
main() {
// Calls to this imply a check of the passed type arguments.
- /*direct,explicit=[localFunction1.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/
+ /*explicit=[localFunction1.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)],test*/
bool localFunction1<U>(U u, {c1}) => u is U;
// Calls to this does _not_ imply a check of the passed type arguments.
- /*spec.direct,explicit=[localFunction2.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c2], types=1)]*/
+ /*spec.explicit=[localFunction2.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c2], types=1)],test*/
U localFunction2<U>(U u, {c2}) => u;
// Calls to this does _not_ imply a check of the passed type arguments. A
// call to the .call function on this will, though, since it has the same
// signature as [localFunction1] which needs its type arguments.
- /*spec.direct,explicit=[localFunction3.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)]*/
+ /*spec.explicit=[localFunction3.U*],needsArgs,selectors=[Selector(call, call, arity=2, named=[c1], types=1)],test*/
localFunction3<U>(U u, {c1}) => u;
var c = new Class();
diff --git a/pkg/compiler/test/rti/data/generic_methods_dynamic_05.dart b/pkg/compiler/test/rti/data/generic_methods_dynamic_05.dart
index 051894e..17bb4da 100644
--- a/pkg/compiler/test/rti/data/generic_methods_dynamic_05.dart
+++ b/pkg/compiler/test/rti/data/generic_methods_dynamic_05.dart
@@ -8,9 +8,9 @@
// Test derived from language_2/generic_methods_dynamic_test/05
-/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],indirect,needsArgs*/
+/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],needsArgs,test*/
/*prod.class: global#JSArray:deps=[List],needsArgs*/
-/*spec.class: global#List:deps=[C.bar,JSArray.markFixedList],explicit=[List,List<B*>*,List<Object>,List<String>?,List<markFixedList.T>],indirect,needsArgs*/
+/*spec.class: global#List:deps=[C.bar,JSArray.markFixedList],explicit=[List,List<B*>*,List<Object>,List<String>?,List<markFixedList.T>],needsArgs,test*/
/*prod.class: global#List:deps=[C.bar],explicit=[List<B*>*],needsArgs*/
class A {}
@@ -20,7 +20,7 @@
class B {}
class C {
- /*spec.member: C.bar:direct,explicit=[Iterable<bar.T*>*],implicit=[bar.T],needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
+ /*spec.member: C.bar:explicit=[Iterable<bar.T*>*],implicit=[bar.T],needsArgs,selectors=[Selector(call, bar, arity=1, types=1)],test*/
/*prod.member: C.bar:needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
List<T> bar<T>(Iterable<T> t) => <T>[t.first];
}
diff --git a/pkg/compiler/test/rti/data/generic_methods_dynamic_05a.dart b/pkg/compiler/test/rti/data/generic_methods_dynamic_05a.dart
index 3226063..7c759ee 100644
--- a/pkg/compiler/test/rti/data/generic_methods_dynamic_05a.dart
+++ b/pkg/compiler/test/rti/data/generic_methods_dynamic_05a.dart
@@ -8,7 +8,7 @@
// Reduced version of generic_methods_dynamic_05a_strong.
-/*spec.class: A:deps=[C.bar],direct,explicit=[A.T*,A<B*>*,A<bar.T*>*],needsArgs*/
+/*spec.class: A:deps=[C.bar],explicit=[A.T*,A<B*>*,A<bar.T*>*],needsArgs,test*/
/*prod.class: A:deps=[C.bar],explicit=[A<B*>*],needsArgs*/
class A<T> {
final T field;
@@ -21,7 +21,7 @@
class B {}
class C {
- /*spec.member: C.bar:explicit=[A<bar.T*>*],implicit=[bar.T],indirect,needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
+ /*spec.member: C.bar:explicit=[A<bar.T*>*],implicit=[bar.T],needsArgs,selectors=[Selector(call, bar, arity=1, types=1)],test*/
/*prod.member: C.bar:needsArgs,selectors=[Selector(call, bar, arity=1, types=1)]*/
A<T> bar<T>(A<T> t) => new A<T>(t.field);
}
diff --git a/pkg/compiler/test/rti/data/implicit_as.dart b/pkg/compiler/test/rti/data/implicit_as.dart
index ddf0046..0c78cd3 100644
--- a/pkg/compiler/test/rti/data/implicit_as.dart
+++ b/pkg/compiler/test/rti/data/implicit_as.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*spec.class: C:direct,explicit=[C.T*,C<String*>*],needsArgs*/
+/*spec.class: C:explicit=[C.T*,C<String*>*],needsArgs,test*/
class C<T> {
T field;
}
diff --git a/pkg/compiler/test/rti/data/indirect_through_static.dart b/pkg/compiler/test/rti/data/indirect_through_static.dart
index 2b5b0be..9c7ffc5 100644
--- a/pkg/compiler/test/rti/data/indirect_through_static.dart
+++ b/pkg/compiler/test/rti/data/indirect_through_static.dart
@@ -19,7 +19,7 @@
map['x'] = new C<B>();
}
-/*member: lookup:direct,explicit=[C<lookup.T*>*],needsArgs*/
+/*member: lookup:explicit=[C<lookup.T*>*],needsArgs,test*/
C<T> lookup<T>(String key) {
final value = map[key];
if (value != null && value is C<T>) {
diff --git a/pkg/compiler/test/rti/data/instantiation1.dart b/pkg/compiler/test/rti/data/instantiation1.dart
index 0ea6b96..6033cf6 100644
--- a/pkg/compiler/test/rti/data/instantiation1.dart
+++ b/pkg/compiler/test/rti/data/instantiation1.dart
@@ -4,13 +4,13 @@
// @dart = 2.7
-/*spec.member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
+/*spec.member: f:deps=[B],explicit=[f.T*],needsArgs,needsInst=[<B.S*>],test*/
/*prod.member: f:deps=[B]*/
int f<T>(T a) => null;
typedef int F<R>(R a);
-/*spec.class: B:explicit=[int* Function(B.S*)*],implicit=[B.S],indirect,needsArgs*/
+/*spec.class: B:explicit=[int* Function(B.S*)*],implicit=[B.S],needsArgs,test*/
/*prod.class: B:needsArgs*/
class B<S> {
F<S> c;
diff --git a/pkg/compiler/test/rti/data/instantiation2.dart b/pkg/compiler/test/rti/data/instantiation2.dart
index 934152a..ef67348 100644
--- a/pkg/compiler/test/rti/data/instantiation2.dart
+++ b/pkg/compiler/test/rti/data/instantiation2.dart
@@ -4,13 +4,13 @@
// @dart = 2.7
-/*member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
+/*member: f:deps=[B],explicit=[f.T*],needsArgs,needsInst=[<B.S*>],test*/
bool f<T>(T a) => a is T;
typedef bool F<R>(R a);
-/*spec.class: B:explicit=[bool* Function(B.S*)*],implicit=[B.S],indirect,needsArgs*/
-/*prod.class: B:implicit=[B.S],indirect,needsArgs*/
+/*spec.class: B:explicit=[bool* Function(B.S*)*],implicit=[B.S],needsArgs,test*/
+/*prod.class: B:implicit=[B.S],needsArgs,test*/
class B<S> {
F<S> c;
diff --git a/pkg/compiler/test/rti/data/instantiation3.dart b/pkg/compiler/test/rti/data/instantiation3.dart
index 4c13f62..5712524 100644
--- a/pkg/compiler/test/rti/data/instantiation3.dart
+++ b/pkg/compiler/test/rti/data/instantiation3.dart
@@ -4,13 +4,13 @@
// @dart = 2.7
-/*spec.member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
+/*spec.member: f:deps=[B],explicit=[f.T*],needsArgs,needsInst=[<B.S*>],test*/
/*prod.member: f:deps=[B]*/
int f<T>(T a) => null;
typedef int F<R>(R a);
-/*spec.class: B:direct,explicit=[int* Function(B.S*)*],implicit=[B.S],needsArgs*/
+/*spec.class: B:explicit=[int* Function(B.S*)*],implicit=[B.S],needsArgs,test*/
/*prod.class: B:needsArgs*/
class B<S> {
F<S> c;
diff --git a/pkg/compiler/test/rti/data/instantiation4.dart b/pkg/compiler/test/rti/data/instantiation4.dart
index af33f43..9f92b96 100644
--- a/pkg/compiler/test/rti/data/instantiation4.dart
+++ b/pkg/compiler/test/rti/data/instantiation4.dart
@@ -4,13 +4,13 @@
// @dart = 2.7
-/*member: f:deps=[B],direct,explicit=[f.T*],needsArgs,needsInst=[<B.S*>]*/
+/*member: f:deps=[B],explicit=[f.T*],needsArgs,needsInst=[<B.S*>],test*/
bool f<T>(T a) => a is T;
typedef bool F<R>(R a);
-/*spec.class: B:direct,explicit=[bool* Function(B.S*)*],implicit=[B.S],needsArgs*/
-/*prod.class: B:implicit=[B.S],indirect,needsArgs*/
+/*spec.class: B:explicit=[bool* Function(B.S*)*],implicit=[B.S],needsArgs,test*/
+/*prod.class: B:implicit=[B.S],needsArgs,test*/
class B<S> {
F<S> c;
diff --git a/pkg/compiler/test/rti/data/instantiation5.dart b/pkg/compiler/test/rti/data/instantiation5.dart
index 3c37996..855d5ab 100644
--- a/pkg/compiler/test/rti/data/instantiation5.dart
+++ b/pkg/compiler/test/rti/data/instantiation5.dart
@@ -4,13 +4,13 @@
// @dart = 2.7
-/*spec.member: f:deps=[method],direct,explicit=[f.T*],needsArgs,needsInst=[<method.S*>]*/
+/*spec.member: f:deps=[method],explicit=[f.T*],needsArgs,needsInst=[<method.S*>],test*/
/*prod.member: f:deps=[method]*/
int f<T>(T a) => null;
typedef int F<R>(R a);
-/*spec.member: method:implicit=[method.S],indirect,needsArgs*/
+/*spec.member: method:implicit=[method.S],needsArgs,test*/
/*prod.member: method:needsArgs*/
method<S>() {
F<S> c;
diff --git a/pkg/compiler/test/rti/data/instantiation6.dart b/pkg/compiler/test/rti/data/instantiation6.dart
index e596af2..d235bca 100644
--- a/pkg/compiler/test/rti/data/instantiation6.dart
+++ b/pkg/compiler/test/rti/data/instantiation6.dart
@@ -4,12 +4,12 @@
// @dart = 2.7
-/*member: f:deps=[method],direct,explicit=[f.T*],needsArgs,needsInst=[<method.S*>]*/
+/*member: f:deps=[method],explicit=[f.T*],needsArgs,needsInst=[<method.S*>],test*/
bool f<T>(T a) => a is T;
typedef bool F<R>(R a);
-/*member: method:implicit=[method.S],indirect,needsArgs*/
+/*member: method:implicit=[method.S],needsArgs,test*/
method<S>() {
F<S> c;
diff --git a/pkg/compiler/test/rti/data/instantiation7.dart b/pkg/compiler/test/rti/data/instantiation7.dart
index 216c83d..5a09574 100644
--- a/pkg/compiler/test/rti/data/instantiation7.dart
+++ b/pkg/compiler/test/rti/data/instantiation7.dart
@@ -4,15 +4,15 @@
// @dart = 2.7
-/*spec.member: f1:deps=[method],direct,explicit=[f1.T*],needsArgs,needsInst=[<method.X*>]*/
+/*spec.member: f1:deps=[method],explicit=[f1.T*],needsArgs,needsInst=[<method.X*>],test*/
/*prod.member: f1:deps=[method]*/
int f1<T>(T a, T b, T c) => null;
-/*spec.member: f2:deps=[method],direct,explicit=[f2.S*,f2.T*],needsArgs,needsInst=[<method.X*,method.Y*>]*/
+/*spec.member: f2:deps=[method],explicit=[f2.S*,f2.T*],needsArgs,needsInst=[<method.X*,method.Y*>],test*/
/*prod.member: f2:deps=[method]*/
int f2<T, S>(T a, S b, S c) => null;
-/*spec.member: f3:deps=[method],direct,explicit=[f3.S*,f3.T*,f3.U*],needsArgs,needsInst=[<method.X*,method.Y*,method.Z*>]*/
+/*spec.member: f3:deps=[method],explicit=[f3.S*,f3.T*,f3.U*],needsArgs,needsInst=[<method.X*,method.Y*,method.Z*>],test*/
/*prod.member: f3:deps=[method]*/
int f3<T, S, U>(T a, S b, U c) => null;
@@ -20,7 +20,7 @@
typedef int F2<R, P>(R a, P b, P c);
typedef int F3<R, P, Q>(R a, P b, Q c);
-/*spec.member: method:implicit=[method.X,method.Y,method.Z],indirect,needsArgs*/
+/*spec.member: method:implicit=[method.X,method.Y,method.Z],needsArgs,test*/
/*prod.member: method:needsArgs*/
method<X, Y, Z>() {
F1<X> c1;
diff --git a/pkg/compiler/test/rti/data/is_type_variable.dart b/pkg/compiler/test/rti/data/is_type_variable.dart
index b188421..96d76ef 100644
--- a/pkg/compiler/test/rti/data/is_type_variable.dart
+++ b/pkg/compiler/test/rti/data/is_type_variable.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*class: A:direct,explicit=[A.T*],needsArgs*/
+/*class: A:explicit=[A.T*],needsArgs,test*/
class A<T> {
m(T t) => t is T;
}
diff --git a/pkg/compiler/test/rti/data/is_type_variable_super.dart b/pkg/compiler/test/rti/data/is_type_variable_super.dart
index 286e73b..65c7bae 100644
--- a/pkg/compiler/test/rti/data/is_type_variable_super.dart
+++ b/pkg/compiler/test/rti/data/is_type_variable_super.dart
@@ -6,7 +6,7 @@
class A<T> {}
-/*class: B:direct,explicit=[B.T*],needsArgs*/
+/*class: B:explicit=[B.T*],needsArgs,test*/
class B<T> extends A<T> {
m(T t) => t is T;
}
diff --git a/pkg/compiler/test/rti/data/is_type_variable_super_complex.dart b/pkg/compiler/test/rti/data/is_type_variable_super_complex.dart
index d512bd1..18f00af 100644
--- a/pkg/compiler/test/rti/data/is_type_variable_super_complex.dart
+++ b/pkg/compiler/test/rti/data/is_type_variable_super_complex.dart
@@ -6,7 +6,7 @@
class A<T> {}
-/*class: B:direct,explicit=[B.T*],needsArgs*/
+/*class: B:explicit=[B.T*],needsArgs,test*/
class B<T> extends A<List<T>> {
m(T t) => t is T;
}
diff --git a/pkg/compiler/test/rti/data/list_literal.dart b/pkg/compiler/test/rti/data/list_literal.dart
index c4f9b47..c76451d 100644
--- a/pkg/compiler/test/rti/data/list_literal.dart
+++ b/pkg/compiler/test/rti/data/list_literal.dart
@@ -4,11 +4,11 @@
// @dart = 2.7
-/*spec.class: global#List:deps=[Class.m,JSArray.markFixedList],explicit=[List,List<Object>,List<String>?,List<markFixedList.T>],indirect,needsArgs*/
-/*prod.class: global#List:deps=[Class.m],indirect,needsArgs*/
+/*spec.class: global#List:deps=[Class.m,JSArray.markFixedList],explicit=[List,List<Object>,List<String>?,List<markFixedList.T>],needsArgs,test*/
+/*prod.class: global#List:deps=[Class.m],needsArgs,test*/
-/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],indirect,needsArgs*/
-/*prod.class: global#JSArray:deps=[List],implicit=[JSArray.E],indirect,needsArgs*/
+/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],needsArgs,test*/
+/*prod.class: global#JSArray:deps=[List],implicit=[JSArray.E],needsArgs,test*/
main() {
var c = new Class();
@@ -18,7 +18,7 @@
}
class Class {
- /*member: Class.m:implicit=[m.T],indirect,needsArgs,selectors=[Selector(call, m, arity=0, types=1)]*/
+ /*member: Class.m:implicit=[m.T],needsArgs,selectors=[Selector(call, m, arity=0, types=1)],test*/
m<T>() {
return <T>[];
}
diff --git a/pkg/compiler/test/rti/data/list_to_set.dart b/pkg/compiler/test/rti/data/list_to_set.dart
index 63884f8..c73b735 100644
--- a/pkg/compiler/test/rti/data/list_to_set.dart
+++ b/pkg/compiler/test/rti/data/list_to_set.dart
@@ -4,11 +4,11 @@
// @dart = 2.7
-/*spec.class: global#List:deps=[Class,JSArray.markFixedList],explicit=[List,List<Object>,List<String>?,List<markFixedList.T>],indirect,needsArgs*/
-/*prod.class: global#List:deps=[Class],indirect,needsArgs*/
+/*spec.class: global#List:deps=[Class,JSArray.markFixedList],explicit=[List,List<Object>,List<String>?,List<markFixedList.T>],needsArgs,test*/
+/*prod.class: global#List:deps=[Class],needsArgs,test*/
-/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],indirect,needsArgs*/
-/*prod.class: global#JSArray:deps=[List],implicit=[JSArray.E],indirect,needsArgs*/
+/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],needsArgs,test*/
+/*prod.class: global#JSArray:deps=[List],implicit=[JSArray.E],needsArgs,test*/
main() {
var c = new Class<int>();
@@ -17,7 +17,7 @@
set is Set<String>;
}
-/*class: Class:implicit=[Class.T],indirect,needsArgs*/
+/*class: Class:implicit=[Class.T],needsArgs,test*/
class Class<T> {
m() {
return <T>[];
diff --git a/pkg/compiler/test/rti/data/local_function_generic.dart b/pkg/compiler/test/rti/data/local_function_generic.dart
index 80892aa..861d030 100644
--- a/pkg/compiler/test/rti/data/local_function_generic.dart
+++ b/pkg/compiler/test/rti/data/local_function_generic.dart
@@ -7,7 +7,7 @@
import 'package:compiler/src/util/testing.dart';
method1() {
- /*spec.direct,explicit=[local.T*],needsArgs,needsSignature*/
+ /*spec.explicit=[local.T*],needsArgs,needsSignature,test*/
/*prod.needsArgs,needsSignature*/
T local<T>(T t) => t;
return local;
diff --git a/pkg/compiler/test/rti/data/local_function_list_literal.dart b/pkg/compiler/test/rti/data/local_function_list_literal.dart
index 3de5b69..0af6116 100644
--- a/pkg/compiler/test/rti/data/local_function_list_literal.dart
+++ b/pkg/compiler/test/rti/data/local_function_list_literal.dart
@@ -6,11 +6,11 @@
import 'package:compiler/src/util/testing.dart';
-/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],indirect,needsArgs*/
+/*spec.class: global#JSArray:deps=[ArrayIterator,List],explicit=[JSArray,JSArray.E,JSArray<ArrayIterator.E>],implicit=[JSArray.E],needsArgs,test*/
/*prod.class: global#JSArray:deps=[List],needsArgs*/
@pragma('dart2js:noInline')
-/*spec.member: method:implicit=[method.T],indirect,needsArgs*/
+/*spec.member: method:implicit=[method.T],needsArgs,test*/
/*prod.member: method:needsArgs*/
method<T>() {
return /*spec.*/ () => <T>[];
diff --git a/pkg/compiler/test/rti/data/local_function_map_literal.dart b/pkg/compiler/test/rti/data/local_function_map_literal.dart
index a0dca5f..7130d69 100644
--- a/pkg/compiler/test/rti/data/local_function_map_literal.dart
+++ b/pkg/compiler/test/rti/data/local_function_map_literal.dart
@@ -6,11 +6,11 @@
import 'package:compiler/src/util/testing.dart';
-/*spec.class: global#LinkedHashMap:deps=[Map],direct,explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs*/
+/*spec.class: global#LinkedHashMap:deps=[Map],explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs,test*/
/*prod.class: global#LinkedHashMap:deps=[Map],needsArgs*/
@pragma('dart2js:noInline')
-/*spec.member: method:implicit=[method.T],indirect,needsArgs*/
+/*spec.member: method:implicit=[method.T],needsArgs,test*/
/*prod.member: method:needsArgs*/
method<T>() {
return /*spec.needsSignature*/ () => <T, int>{};
diff --git a/pkg/compiler/test/rti/data/local_function_signature2.dart b/pkg/compiler/test/rti/data/local_function_signature2.dart
index 06bcb64..1d06d37 100644
--- a/pkg/compiler/test/rti/data/local_function_signature2.dart
+++ b/pkg/compiler/test/rti/data/local_function_signature2.dart
@@ -24,7 +24,7 @@
}
class Class2 {
- /*spec.member: Class2.method4:direct,explicit=[method4.T*],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
+ /*spec.member: Class2.method4:explicit=[method4.T*],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)],test*/
/*prod.member: Class2.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
method4<T>() {
/*needsSignature*/
@@ -44,14 +44,14 @@
class Class4 {
/*prod.member: Class4.method6:needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
- /*spec.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
+ /*spec.member: Class4.method6:explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)],test*/
method6<T>() {
/*needsSignature*/ num local(num n, T t) => null;
return local;
}
}
-/*spec.member: method7:direct,explicit=[method7.T*],needsArgs*/
+/*spec.member: method7:explicit=[method7.T*],needsArgs,test*/
/*prod.member: method7:needsArgs*/
method7<T>() {
/*needsSignature*/
@@ -66,7 +66,7 @@
return local;
}
-/*spec.member: method9:direct,explicit=[method9.T*],needsArgs*/
+/*spec.member: method9:explicit=[method9.T*],needsArgs,test*/
/*prod.member: method9:needsArgs*/
method9<T>() {
/*needsSignature*/ num local(num n, T t) => null;
@@ -74,7 +74,7 @@
}
method10() {
- /*spec.direct,explicit=[local.T*],needsArgs,needsSignature*/
+ /*spec.explicit=[local.T*],needsArgs,needsSignature,test*/
/*prod.needsArgs,needsSignature*/ num local<T>(T n) => null;
return local;
}
@@ -85,7 +85,7 @@
}
method12() {
- /*spec.direct,explicit=[local.T*],needsArgs,needsSignature*/
+ /*spec.explicit=[local.T*],needsArgs,needsSignature,test*/
/*prod.needsArgs,needsSignature*/ num local<T>(num n, T t) => null;
return local;
}
diff --git a/pkg/compiler/test/rti/data/local_function_signatures.dart b/pkg/compiler/test/rti/data/local_function_signatures.dart
index ad97152..cacf62d 100644
--- a/pkg/compiler/test/rti/data/local_function_signatures.dart
+++ b/pkg/compiler/test/rti/data/local_function_signatures.dart
@@ -24,7 +24,7 @@
}
}
-/*spec.class: Class2:direct,explicit=[Class2.T*],needsArgs*/
+/*spec.class: Class2:explicit=[Class2.T*],needsArgs,test*/
/*prod.class: Class2:needsArgs*/
class Class2<T> {
method4() {
@@ -43,7 +43,7 @@
}
}
-/*spec.class: Class4:direct,explicit=[Class4.T*],needsArgs*/
+/*spec.class: Class4:explicit=[Class4.T*],needsArgs,test*/
/*prod.class: Class4:needsArgs*/
class Class4<T> {
method6() {
diff --git a/pkg/compiler/test/rti/data/local_function_signatures_generic.dart b/pkg/compiler/test/rti/data/local_function_signatures_generic.dart
index fa0d44f..8f651f6 100644
--- a/pkg/compiler/test/rti/data/local_function_signatures_generic.dart
+++ b/pkg/compiler/test/rti/data/local_function_signatures_generic.dart
@@ -27,7 +27,7 @@
}
class Class2 {
- /*spec.member: Class2.method4:direct,explicit=[method4.T*],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
+ /*spec.member: Class2.method4:explicit=[method4.T*],needsArgs,selectors=[Selector(call, method4, arity=0, types=1)],test*/
/*prod.member: Class2.method4:needsArgs,selectors=[Selector(call, method4, arity=0, types=1)]*/
method4<T>() {
/*needsSignature*/
@@ -47,14 +47,14 @@
class Class4 {
/*prod.member: Class4.method6:needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
- /*spec.member: Class4.method6:direct,explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)]*/
+ /*spec.member: Class4.method6:explicit=[method6.T*],needsArgs,selectors=[Selector(call, method6, arity=0, types=1)],test*/
method6<T>() {
/*needsSignature*/ num local(num n, T t) => null;
return local;
}
}
-/*spec.member: method7:direct,explicit=[method7.T*],needsArgs*/
+/*spec.member: method7:explicit=[method7.T*],needsArgs,test*/
/*prod.member: method7:needsArgs*/
method7<T>() {
/*needsSignature*/
@@ -69,7 +69,7 @@
return local;
}
-/*spec.member: method9:direct,explicit=[method9.T*],needsArgs*/
+/*spec.member: method9:explicit=[method9.T*],needsArgs,test*/
/*prod.member: method9:needsArgs*/
method9<T>() {
/*needsSignature*/ num local(num n, T t) => null;
@@ -77,7 +77,7 @@
}
method10() {
- /*spec.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/
+ /*spec.explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature,test*/
/*prod.needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/
num local<T>(T n) => null;
return local;
@@ -90,7 +90,7 @@
}
method12() {
- /*spec.direct,explicit=[local.T*],needsArgs,needsSignature*/
+ /*spec.explicit=[local.T*],needsArgs,needsSignature,test*/
/*prod.needsArgs,needsSignature*/ num local<T>(num n, T t) => null;
return local;
}
@@ -102,7 +102,7 @@
}
num Function(num) method14() {
- /*spec.direct,explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/
+ /*spec.explicit=[local.T*],needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature,test*/
/*prod.needsArgs,needsInst=[<dynamic>,<num*>,<num*>],needsSignature*/
num local<T>(T n) => null;
return local;
diff --git a/pkg/compiler/test/rti/data/map_literal.dart b/pkg/compiler/test/rti/data/map_literal.dart
index 988f06e..60568fd 100644
--- a/pkg/compiler/test/rti/data/map_literal.dart
+++ b/pkg/compiler/test/rti/data/map_literal.dart
@@ -5,13 +5,13 @@
// @dart = 2.7
/*prod.class: global#Map:*/
-/*spec.class: global#Map:explicit=[Map,Map<Object?,Object?>],indirect,needsArgs*/
+/*spec.class: global#Map:explicit=[Map,Map<Object?,Object?>],needsArgs,test*/
/*prod.class: global#LinkedHashMap:deps=[Map]*/
-/*spec.class: global#LinkedHashMap:deps=[Map],direct,explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs*/
+/*spec.class: global#LinkedHashMap:deps=[Map],explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs,test*/
/*prod.class: global#JsLinkedHashMap:deps=[LinkedHashMap]*/
-/*spec.class: global#JsLinkedHashMap:deps=[LinkedHashMap],direct,explicit=[JsLinkedHashMap,JsLinkedHashMap.K,JsLinkedHashMap.V,void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)],implicit=[JsLinkedHashMap.K],needsArgs*/
+/*spec.class: global#JsLinkedHashMap:deps=[LinkedHashMap],explicit=[JsLinkedHashMap,JsLinkedHashMap.K,JsLinkedHashMap.V,void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)],implicit=[JsLinkedHashMap.K],needsArgs,test*/
/*prod.class: global#double:*/
/*spec.class: global#double:implicit=[double]*/
diff --git a/pkg/compiler/test/rti/data/map_to_set.dart b/pkg/compiler/test/rti/data/map_to_set.dart
index 4c870c3..33c2194 100644
--- a/pkg/compiler/test/rti/data/map_to_set.dart
+++ b/pkg/compiler/test/rti/data/map_to_set.dart
@@ -5,13 +5,13 @@
// @dart = 2.7
/*prod.class: global#Map:deps=[Class],needsArgs*/
-/*spec.class: global#Map:deps=[Class],explicit=[Map,Map<Object?,Object?>],indirect,needsArgs*/
+/*spec.class: global#Map:deps=[Class],explicit=[Map,Map<Object?,Object?>],needsArgs,test*/
/*prod.class: global#LinkedHashMap:deps=[Map],implicit=[LinkedHashMap.K],needsArgs*/
-/*spec.class: global#LinkedHashMap:deps=[Map],direct,explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs*/
+/*spec.class: global#LinkedHashMap:deps=[Map],explicit=[LinkedHashMap<LinkedHashMap.K,LinkedHashMap.V>],implicit=[LinkedHashMap.K,LinkedHashMap.V],needsArgs,test*/
/*prod.class: global#JsLinkedHashMap:deps=[LinkedHashMap],implicit=[JsLinkedHashMap.K],needsArgs*/
-/*spec.class: global#JsLinkedHashMap:deps=[LinkedHashMap],direct,explicit=[JsLinkedHashMap,JsLinkedHashMap.K,JsLinkedHashMap.V,void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)],implicit=[JsLinkedHashMap.K],needsArgs*/
+/*spec.class: global#JsLinkedHashMap:deps=[LinkedHashMap],explicit=[JsLinkedHashMap,JsLinkedHashMap.K,JsLinkedHashMap.V,void Function(JsLinkedHashMap.K,JsLinkedHashMap.V)],implicit=[JsLinkedHashMap.K],needsArgs,test*/
/*prod.class: global#double:*/
/*spec.class: global#double:implicit=[double]*/
@@ -25,7 +25,7 @@
set is Set<String>;
}
-/*spec.class: Class:implicit=[Class.S,Class.T],indirect,needsArgs*/
+/*spec.class: Class:implicit=[Class.S,Class.T],needsArgs,test*/
/*prod.class: Class:needsArgs*/
class Class<T, S> {
m() {
diff --git a/pkg/compiler/test/rti/data/method_signatures.dart b/pkg/compiler/test/rti/data/method_signatures.dart
index 93ab6d2..29baa2f 100644
--- a/pkg/compiler/test/rti/data/method_signatures.dart
+++ b/pkg/compiler/test/rti/data/method_signatures.dart
@@ -17,7 +17,7 @@
Object method3(num n) => null;
}
-/*spec.class: Class2:direct,explicit=[Class2.T*],needsArgs*/
+/*spec.class: Class2:explicit=[Class2.T*],needsArgs,test*/
class Class2<T> {
num method4(T n) => null;
}
@@ -28,7 +28,7 @@
T method5(num n) => null;
}
-/*spec.class: Class4:direct,explicit=[Class4.T*],needsArgs*/
+/*spec.class: Class4:explicit=[Class4.T*],needsArgs,test*/
class Class4<T> {
/*member: Class4.method6:*/
num method6(num n, T t) => null;
diff --git a/pkg/compiler/test/rti/data/method_signatures_generic.dart b/pkg/compiler/test/rti/data/method_signatures_generic.dart
index 96dd598..8a8f55b 100644
--- a/pkg/compiler/test/rti/data/method_signatures_generic.dart
+++ b/pkg/compiler/test/rti/data/method_signatures_generic.dart
@@ -18,7 +18,7 @@
}
class Class2 {
- /*spec.member: Class2.method4:direct,explicit=[method4.T*],needsArgs,needsInst=[<num*>,<num*>]*/
+ /*spec.member: Class2.method4:explicit=[method4.T*],needsArgs,needsInst=[<num*>,<num*>],test*/
num method4<T>(T n) => null;
}
@@ -28,17 +28,17 @@
}
class Class4 {
- /*spec.member: Class4.method6:direct,explicit=[method6.T*],needsArgs*/
+ /*spec.member: Class4.method6:explicit=[method6.T*],needsArgs,test*/
num method6<T>(num n, T t) => null;
}
-/*spec.member: method7:direct,explicit=[method7.T*],needsArgs,needsInst=[<num*>,<num*>]*/
+/*spec.member: method7:explicit=[method7.T*],needsArgs,needsInst=[<num*>,<num*>],test*/
num method7<T>(T n) => null;
/*member: method8:*/
T method8<T>(num n) => null;
-/*spec.member: method9:direct,explicit=[method9.T*],needsArgs*/
+/*spec.member: method9:explicit=[method9.T*],needsArgs,test*/
num method9<T>(num n, T t) => null;
@pragma('dart2js:noInline')
diff --git a/pkg/compiler/test/rti/data/private_dynamic.dart b/pkg/compiler/test/rti/data/private_dynamic.dart
index 87f1714..f6fbdb8 100644
--- a/pkg/compiler/test/rti/data/private_dynamic.dart
+++ b/pkg/compiler/test/rti/data/private_dynamic.dart
@@ -5,7 +5,7 @@
// @dart = 2.7
class C {
- /*member: C._private:direct,explicit=[_private.T*],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
+ /*member: C._private:explicit=[_private.T*],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)],test*/
_private<T>(t) => t is T;
}
diff --git a/pkg/compiler/test/rti/data/private_dynamic2.dart b/pkg/compiler/test/rti/data/private_dynamic2.dart
index 2126428..723250a 100644
--- a/pkg/compiler/test/rti/data/private_dynamic2.dart
+++ b/pkg/compiler/test/rti/data/private_dynamic2.dart
@@ -5,12 +5,12 @@
// @dart = 2.7
class C {
- /*member: C._private:deps=[D._private2],direct,explicit=[_private.T*],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)]*/
+ /*member: C._private:deps=[D._private2],explicit=[_private.T*],needsArgs,selectors=[Selector(call, _private, arity=1, types=1)],test*/
_private<T>(t) => t is T;
}
class D {
- /*member: D._private2:implicit=[_private2.T],indirect,needsArgs,selectors=[Selector(call, _private2, arity=2, types=1)]*/
+ /*member: D._private2:implicit=[_private2.T],needsArgs,selectors=[Selector(call, _private2, arity=2, types=1)],test*/
_private2<T>(c, t) => c._private<T>(t);
}
diff --git a/pkg/compiler/test/rti/data/runtime_type_closure_equals2.dart b/pkg/compiler/test/rti/data/runtime_type_closure_equals2.dart
index a9199b1..00ea501 100644
--- a/pkg/compiler/test/rti/data/runtime_type_closure_equals2.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_closure_equals2.dart
@@ -17,7 +17,7 @@
/*needsArgs,needsSignature*/
T local1b<T>() => null;
- /*spec.direct,explicit=[local2.T*],needsArgs,needsSignature*/
+ /*spec.explicit=[local2.T*],needsArgs,needsSignature,test*/
/*prod.needsArgs,needsSignature*/
T local2<T>(T t, String s) => t;
diff --git a/pkg/compiler/test/rti/data/runtime_type_closure_equals3.dart b/pkg/compiler/test/rti/data/runtime_type_closure_equals3.dart
index bba535c..83b4387 100644
--- a/pkg/compiler/test/rti/data/runtime_type_closure_equals3.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_closure_equals3.dart
@@ -8,7 +8,7 @@
String method() => null;
-/*spec.class: Class1:direct,explicit=[Class1.T*],needsArgs*/
+/*spec.class: Class1:explicit=[Class1.T*],needsArgs,test*/
/*prod.class: Class1:needsArgs*/
class Class1<T> {
Class1();
diff --git a/pkg/compiler/test/rti/data/runtime_type_closure_equals5.dart b/pkg/compiler/test/rti/data/runtime_type_closure_equals5.dart
index b3477bb..63a7b9e 100644
--- a/pkg/compiler/test/rti/data/runtime_type_closure_equals5.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_closure_equals5.dart
@@ -6,7 +6,7 @@
import 'package:compiler/src/util/testing.dart';
-/*spec.class: Class1:direct,explicit=[Class1.T*],needsArgs*/
+/*spec.class: Class1:explicit=[Class1.T*],needsArgs,test*/
/*prod.class: Class1:needsArgs*/
class Class1<T> {
Class1();
diff --git a/pkg/compiler/test/rti/data/runtime_type_closure_equals7.dart b/pkg/compiler/test/rti/data/runtime_type_closure_equals7.dart
index 8ffc992..804a190 100644
--- a/pkg/compiler/test/rti/data/runtime_type_closure_equals7.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_closure_equals7.dart
@@ -12,7 +12,7 @@
/*member: method1b:*/
T method1b<T>() => null;
-/*spec.member: method2:direct,explicit=[method2.T*],needsArgs*/
+/*spec.member: method2:explicit=[method2.T*],needsArgs,test*/
T method2<T>(T t, String s) => t;
class Class<T> {
diff --git a/pkg/compiler/test/rti/data/runtime_type_closure_equals8.dart b/pkg/compiler/test/rti/data/runtime_type_closure_equals8.dart
index fae683f..4dde28e 100644
--- a/pkg/compiler/test/rti/data/runtime_type_closure_equals8.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_closure_equals8.dart
@@ -15,7 +15,7 @@
/*member: Class1.method1b:*/
T method1b<T>() => null;
- /*spec.member: Class1.method2:direct,explicit=[method2.T*],needsArgs*/
+ /*spec.member: Class1.method2:explicit=[method2.T*],needsArgs,test*/
T method2<T>(T t, String s) => t;
}
diff --git a/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string1.dart b/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string1.dart
index f8ee428..92ef961 100644
--- a/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string1.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string1.dart
@@ -9,7 +9,7 @@
/*member: global#instantiate1:needsArgs*/
main() {
- /*spec.direct,explicit=[id.T*],needsArgs,needsInst=[<int*>],needsSignature*/
+ /*spec.explicit=[id.T*],needsArgs,needsInst=[<int*>],needsSignature,test*/
T id<T>(T t, String s) => t;
int Function(int, String s) x = id;
makeLive("${x.runtimeType}");
diff --git a/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string2.dart b/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string2.dart
index 09002a4..f45d037 100644
--- a/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string2.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string2.dart
@@ -8,7 +8,7 @@
/*member: global#instantiate1:needsArgs*/
-/*spec.member: id:direct,explicit=[id.T*],needsArgs,needsInst=[<int*>]*/
+/*spec.member: id:explicit=[id.T*],needsArgs,needsInst=[<int*>],test*/
T id<T>(T t, String s) => t;
main() {
diff --git a/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string3.dart b/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string3.dart
index 5de5547..ddcced5 100644
--- a/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string3.dart
+++ b/pkg/compiler/test/rti/data/runtime_type_instantiate_to_string3.dart
@@ -9,7 +9,7 @@
/*member: global#instantiate1:needsArgs*/
class Class {
- /*spec.member: Class.id:direct,explicit=[id.T*],needsArgs,needsInst=[<int*>]*/
+ /*spec.member: Class.id:explicit=[id.T*],needsArgs,needsInst=[<int*>],test*/
T id<T>(T t, String s) => t;
}
diff --git a/pkg/compiler/test/rti/data/tear_off_generic.dart b/pkg/compiler/test/rti/data/tear_off_generic.dart
index 1aa8d04..f2446f1 100644
--- a/pkg/compiler/test/rti/data/tear_off_generic.dart
+++ b/pkg/compiler/test/rti/data/tear_off_generic.dart
@@ -4,7 +4,7 @@
// @dart = 2.7
-/*spec.class: A:direct,explicit=[A.T*],needsArgs*/
+/*spec.class: A:explicit=[A.T*],needsArgs,test*/
class A<T> {
void m(T t) {}
diff --git a/pkg/compiler/test/rti/data/type_variable_function_type.dart b/pkg/compiler/test/rti/data/type_variable_function_type.dart
index d36e45f..2c31bc6 100644
--- a/pkg/compiler/test/rti/data/type_variable_function_type.dart
+++ b/pkg/compiler/test/rti/data/type_variable_function_type.dart
@@ -10,7 +10,7 @@
typedef T Func<T>();
-/*class: Foo:direct,explicit=[Foo.S* Function()*],needsArgs*/
+/*class: Foo:explicit=[Foo.S* Function()*],needsArgs,test*/
class Foo<S> {
m(x) => x is Func<S>;
}
diff --git a/pkg/compiler/test/rti/rti_need_test_helper.dart b/pkg/compiler/test/rti/rti_need_test_helper.dart
index 8973cd7..56b4627 100644
--- a/pkg/compiler/test/rti/rti_need_test_helper.dart
+++ b/pkg/compiler/test/rti/rti_need_test_helper.dart
@@ -46,8 +46,7 @@
static const String dependencies = 'deps';
static const String explicitTypeCheck = 'explicit';
static const String implicitTypeCheck = 'implicit';
- static const String directTypeArgumentTest = 'direct';
- static const String indirectTypeArgumentTest = 'indirect';
+ static const String typeArgumentTest = 'test';
static const String typeLiteral = 'exp';
static const String selectors = 'selectors';
static const String instantiationsNeedTypeArguments = 'needsInst';
@@ -109,12 +108,9 @@
.contains(frontendClass)) {
features.add(Tags.typeLiteral);
}
- if (rtiNeedBuilder.typeVariableTestsForTesting.directClassTestsForTesting
+ if (rtiNeedBuilder.typeVariableTestsForTesting.classTestsForTesting
.contains(frontendClass)) {
- features.add(Tags.directTypeArgumentTest);
- } else if (rtiNeedBuilder.typeVariableTestsForTesting.classTestsForTesting
- .contains(frontendClass)) {
- features.add(Tags.indirectTypeArgumentTest);
+ features.add(Tags.typeArgumentTest);
}
findChecks(features, Tags.explicitTypeCheck, frontendClass,
rtiNeedBuilder.typeVariableTestsForTesting.explicitIsChecks);
@@ -139,14 +135,9 @@
void addFrontendData(Entity entity) {
findDependencies(features, entity);
- if (rtiNeedBuilder
- .typeVariableTestsForTesting.directMethodTestsForTesting
+ if (rtiNeedBuilder.typeVariableTestsForTesting.methodTestsForTesting
.contains(entity)) {
- features.add(Tags.directTypeArgumentTest);
- } else if (rtiNeedBuilder
- .typeVariableTestsForTesting.methodTestsForTesting
- .contains(entity)) {
- features.add(Tags.indirectTypeArgumentTest);
+ features.add(Tags.typeArgumentTest);
}
findChecks(features, Tags.explicitTypeCheck, entity,
rtiNeedBuilder.typeVariableTestsForTesting.explicitIsChecks);