Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(806)

Unified Diff: tests/compiler/dart2js/equivalence/id_equivalence_test.dart

Issue 3001223002: Support unittest of jumps (Closed)
Patch Set: Updated cf. comments Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/equivalence/id_equivalence_test.dart
diff --git a/tests/compiler/dart2js/equivalence/id_equivalence_test.dart b/tests/compiler/dart2js/equivalence/id_equivalence_test.dart
index e7230e9c8acf06135d27e0a5a97fd7b7dc40fb62..8a9e3bf41e7a231906f1fb9f3a27d742a1931d3e 100644
--- a/tests/compiler/dart2js/equivalence/id_equivalence_test.dart
+++ b/tests/compiler/dart2js/equivalence/id_equivalence_test.dart
@@ -22,6 +22,7 @@ import '../equivalence/id_equivalence_helper.dart';
const List<String> dataDirectories = const <String>[
'../closure/data',
'../inference/data',
+ '../jumps/data',
];
main() {
@@ -42,6 +43,9 @@ main() {
if (value1 != value2) {
reportHere(data1.compiler.reporter, actualData1.sourceSpan,
'$id: from source:${value1},from dill:${value2}');
+ print('--annotations diff----------------------------------------');
+ print(data1.computeDiffCodeFor(data2));
+ print('----------------------------------------------------------');
}
Expect.equals(value1, value2, 'Value mismatch for $id');
});
@@ -51,6 +55,9 @@ main() {
if (value1 != value2) {
reportHere(data2.compiler.reporter, actualData2.sourceSpan,
'$id: from source:${value1},from dill:${value2}');
+ print('--annotations diff----------------------------------------');
+ print(data1.computeDiffCodeFor(data2));
+ print('----------------------------------------------------------');
}
Expect.equals(value1, value2, 'Value mismatch for $id');
});
@@ -86,18 +93,21 @@ class ComputerMixin {
return 'local:$localName';
}
- String computeDynamicGetName(String propertyName) {
- return 'dynamic-get:$propertyName';
+ String computeGetName(String propertyName) {
+ return 'get:$propertyName';
}
- String computeDynamicInvokeName(String propertyName) {
- return 'dynamic-invoke:$propertyName';
+ String computeInvokeName(String propertyName) {
+ return 'invoke:$propertyName';
}
+
+ String get loopName => 'loop';
+
+ String get gotoName => 'goto';
}
/// AST visitor for computing a descriptive mapping of the [Id]s in a member.
-class ResolvedAstComputer extends AbstractResolvedAstComputer
- with ComputerMixin {
+class ResolvedAstComputer extends AstDataExtractor with ComputerMixin {
ResolvedAstComputer(DiagnosticReporter reporter,
Map<Id, ActualData> actualMap, ResolvedAst resolvedAst)
: super(reporter, actualMap, resolvedAst);
@@ -107,12 +117,25 @@ class ResolvedAstComputer extends AbstractResolvedAstComputer
if (element != null && element.isLocal) {
return computeLocalName(element.name);
}
+ if (node is ast.Loop) {
+ return loopName;
+ } else if (node is ast.GotoStatement) {
+ return gotoName;
+ }
+
+ dynamic sendStructure;
if (node is ast.Send) {
- dynamic sendStructure = elements.getSendStructure(node);
+ sendStructure = elements.getSendStructure(node);
if (sendStructure == null) return null;
String getDynamicName() {
switch (sendStructure.semantics.kind) {
+ case AccessKind.PARAMETER:
+ case AccessKind.FINAL_PARAMETER:
+ case AccessKind.LOCAL_VARIABLE:
+ case AccessKind.FINAL_LOCAL_VARIABLE:
+ case AccessKind.LOCAL_FUNCTION:
+ return sendStructure.semantics.element.name;
case AccessKind.DYNAMIC_PROPERTY:
DynamicAccess access = sendStructure.semantics;
return access.name.text;
@@ -124,16 +147,25 @@ class ResolvedAstComputer extends AbstractResolvedAstComputer
switch (sendStructure.kind) {
case SendStructureKind.GET:
String dynamicName = getDynamicName();
- if (dynamicName != null) return computeDynamicGetName(dynamicName);
+ if (dynamicName != null) return computeGetName(dynamicName);
break;
+ case SendStructureKind.BINARY:
+ return computeInvokeName(sendStructure.operator.selectorName);
+ case SendStructureKind.EQUALS:
+ return computeInvokeName('==');
+ case SendStructureKind.NOT_EQUALS:
+ return computeInvokeName('!=');
case SendStructureKind.INVOKE:
String dynamicName = getDynamicName();
- if (dynamicName != null) return computeDynamicInvokeName(dynamicName);
+ if (dynamicName != null) return computeInvokeName(dynamicName);
break;
default:
}
}
- return '<unknown:$node>';
+ if (sendStructure != null) {
+ return '<unknown:$node (${node.runtimeType}) $sendStructure>';
+ }
+ return '<unknown:$node (${node.runtimeType})>';
}
@override
@@ -159,7 +191,7 @@ void computeIrMemberData(
}
/// IR visitor for computing a descriptive mapping of the [Id]s in a member.
-class IrComputer extends AbstractIrComputer with ComputerMixin {
+class IrComputer extends IrDataExtractor with ComputerMixin {
IrComputer(Map<Id, ActualData> actualMap) : super(actualMap);
@override
@@ -171,11 +203,23 @@ class IrComputer extends AbstractIrComputer with ComputerMixin {
} else if (node is ir.FunctionExpression) {
return computeLocalName('');
} else if (node is ir.MethodInvocation) {
- return computeDynamicInvokeName(node.name.name);
+ return computeInvokeName(node.name.name);
} else if (node is ir.PropertyGet) {
- return computeDynamicGetName(node.name.name);
+ return computeGetName(node.name.name);
+ } else if (node is ir.VariableGet) {
+ return computeGetName(node.variable.name);
+ } else if (node is ir.DoStatement) {
+ return loopName;
+ } else if (node is ir.ForStatement) {
+ return loopName;
+ } else if (node is ir.ForInStatement) {
+ return loopName;
+ } else if (node is ir.WhileStatement) {
+ return loopName;
+ } else if (node is ir.BreakStatement) {
+ return gotoName;
}
- return '<unknown:$node>';
+ return '<unknown:$node (${node.runtimeType})>';
}
@override

Powered by Google App Engine
This is Rietveld 408576698