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

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

Issue 2967843002: Add EquivalenceVisitor to tools in js_ast (Closed)
Patch Set: Updated cf. comment Created 3 years, 5 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
« no previous file with comments | « pkg/js_ast/lib/src/equivalence_visitor.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js/equivalence/check_functions.dart
diff --git a/tests/compiler/dart2js/equivalence/check_functions.dart b/tests/compiler/dart2js/equivalence/check_functions.dart
index 537a65f30765ded1198f44c8e9f8be7310ad191f..8b27e9ccbc158f66ced9967e322971224558caf6 100644
--- a/tests/compiler/dart2js/equivalence/check_functions.dart
+++ b/tests/compiler/dart2js/equivalence/check_functions.dart
@@ -876,9 +876,10 @@ bool areJsNodesEquivalent(js.Node node1, js.Node node2) {
return new JsEquivalenceVisitor().testNodes(node1, node2);
}
-class JsEquivalenceVisitor implements js.NodeVisitor1<bool, js.Node> {
+class JsEquivalenceVisitor extends js.EquivalenceVisitor {
Map<String, String> labelsMap = <String, String>{};
+ @override
bool failAt(js.Node node1, js.Node node2) {
print('Node mismatch:');
print(' ${js.nodeToString(node1)}');
@@ -886,520 +887,37 @@ class JsEquivalenceVisitor implements js.NodeVisitor1<bool, js.Node> {
return false;
}
- bool testValues(
- js.Node node1, Object object1, js.Node node2, Object object2) {
- if (object1 != object2) {
+ @override
+ bool testValues(js.Node node1, Object value1, js.Node node2, Object value2) {
+ if (value1 != value2) {
print('Value mismatch:');
- print(' ${object1}');
- print(' ${object2}');
+ print(' ${value1}');
+ print(' ${value2}');
print('at');
print(' ${js.nodeToString(node1)}');
print(' ${js.nodeToString(node2)}');
+ return false;
}
- return object1 == object2;
+ return true;
}
- bool testLabels(
- js.Node node1, String object1, js.Node node2, String object2) {
- if (object1 == null && object2 == null) return true;
- if (labelsMap.containsKey(object1)) {
- String expectedValue = labelsMap[object1];
- if (expectedValue != object2) {
+ @override
+ bool testLabels(js.Node node1, String label1, js.Node node2, String label2) {
+ if (label1 == null && label2 == null) return true;
+ if (labelsMap.containsKey(label1)) {
+ String expectedValue = labelsMap[label1];
+ if (expectedValue != label2) {
print('Value mismatch:');
- print(' ${object1}');
- print(' found ${object2}, expected ${expectedValue}');
+ print(' ${label1}');
+ print(' found ${label2}, expected ${expectedValue}');
print('at');
print(' ${js.nodeToString(node1)}');
print(' ${js.nodeToString(node2)}');
}
- return expectedValue == object2;
+ return expectedValue == label2;
} else {
- labelsMap[object1] = object2;
+ labelsMap[label1] = label2;
return true;
}
}
-
- bool testNodes(js.Node node1, js.Node node2) {
- if (identical(node1, node2)) return true;
- if (node1 == null || node2 == null) return failAt(node1, node2);
- return node1.accept1(this, node2);
- }
-
- bool testNodeLists(List<js.Node> list1, List<js.Node> list2) {
- int index = 0;
- while (index < list1.length && index < list2.length) {
- if (!testNodes(list1[index], list2[index])) return false;
- index++;
- }
- if (index < list1.length) {
- return failAt(list1[index], null);
- } else if (index < list2.length) {
- return failAt(list2[index], null);
- }
- return true;
- }
-
- @override
- bool visitProgram(js.Program node, js.Node arg) {
- if (arg is! js.Program) return failAt(node, arg);
- js.Program other = arg;
- return testNodeLists(node.body, other.body);
- }
-
- @override
- bool visitInterpolatedDeclaration(
- js.InterpolatedDeclaration node, js.Node arg) {
- if (arg is! js.InterpolatedDeclaration) return failAt(node, arg);
- js.InterpolatedDeclaration other = arg;
- return testValues(node, node.nameOrPosition, other, other.nameOrPosition);
- }
-
- @override
- bool visitInterpolatedStatement(js.InterpolatedStatement node, js.Node arg) {
- if (arg is! js.InterpolatedStatement) return failAt(node, arg);
- js.InterpolatedStatement other = arg;
- return testValues(node, node.nameOrPosition, other, other.nameOrPosition);
- }
-
- @override
- bool visitInterpolatedSelector(js.InterpolatedSelector node, js.Node arg) {
- if (arg is! js.InterpolatedSelector) return failAt(node, arg);
- js.InterpolatedSelector other = arg;
- return testValues(node, node.nameOrPosition, other, other.nameOrPosition);
- }
-
- @override
- bool visitInterpolatedParameter(js.InterpolatedParameter node, js.Node arg) {
- if (arg is! js.InterpolatedParameter) return failAt(node, arg);
- js.InterpolatedParameter other = arg;
- return testValues(node, node.nameOrPosition, other, other.nameOrPosition);
- }
-
- @override
- bool visitInterpolatedLiteral(js.InterpolatedLiteral node, js.Node arg) {
- if (arg is! js.InterpolatedLiteral) return failAt(node, arg);
- js.InterpolatedLiteral other = arg;
- return testValues(node, node.nameOrPosition, other, other.nameOrPosition);
- }
-
- @override
- bool visitInterpolatedExpression(
- js.InterpolatedExpression node, js.Node arg) {
- if (arg is! js.InterpolatedExpression) return failAt(node, arg);
- js.InterpolatedExpression other = arg;
- return testValues(node, node.nameOrPosition, other, other.nameOrPosition);
- }
-
- @override
- bool visitComment(js.Comment node, js.Node arg) {
- if (arg is! js.Comment) return failAt(node, arg);
- js.Comment other = arg;
- return testValues(node, node.comment, other, other.comment);
- }
-
- @override
- bool visitAwait(js.Await node, js.Node arg) {
- if (arg is! js.Await) return failAt(node, arg);
- js.Await other = arg;
- return testNodes(node.expression, other.expression);
- }
-
- @override
- bool visitRegExpLiteral(js.RegExpLiteral node, js.Node arg) {
- if (arg is! js.RegExpLiteral) return failAt(node, arg);
- js.RegExpLiteral other = arg;
- return testValues(node, node.pattern, other, other.pattern);
- }
-
- @override
- bool visitProperty(js.Property node, js.Node arg) {
- if (arg is! js.Property) return failAt(node, arg);
- js.Property other = arg;
- return testNodes(node.name, other.name) &&
- testNodes(node.value, other.value);
- }
-
- @override
- bool visitObjectInitializer(js.ObjectInitializer node, js.Node arg) {
- if (arg is! js.ObjectInitializer) return failAt(node, arg);
- js.ObjectInitializer other = arg;
- return testNodeLists(node.properties, other.properties);
- }
-
- @override
- bool visitArrayHole(js.ArrayHole node, js.Node arg) {
- if (arg is! js.ArrayHole) return failAt(node, arg);
- return true;
- }
-
- @override
- bool visitArrayInitializer(js.ArrayInitializer node, js.Node arg) {
- if (arg is! js.ArrayInitializer) return failAt(node, arg);
- js.ArrayInitializer other = arg;
- return testNodeLists(node.elements, other.elements);
- }
-
- @override
- bool visitName(js.Name node, js.Node arg) {
- if (arg is! js.Name) return failAt(node, arg);
- js.Name other = arg;
- return testValues(node, node.key, other, other.key);
- }
-
- @override
- bool visitStringConcatenation(js.StringConcatenation node, js.Node arg) {
- if (arg is! js.StringConcatenation) return failAt(node, arg);
- js.StringConcatenation other = arg;
- return testNodeLists(node.parts, other.parts);
- }
-
- @override
- bool visitLiteralNull(js.LiteralNull node, js.Node arg) {
- if (arg is! js.LiteralNull) return failAt(node, arg);
- return true;
- }
-
- @override
- bool visitLiteralNumber(js.LiteralNumber node, js.Node arg) {
- if (arg is! js.LiteralNumber) return failAt(node, arg);
- js.LiteralNumber other = arg;
- return testValues(node, node.value, other, other.value);
- }
-
- @override
- bool visitLiteralString(js.LiteralString node, js.Node arg) {
- if (arg is! js.LiteralString) return failAt(node, arg);
- js.LiteralString other = arg;
- return testValues(node, node.value, other, other.value);
- }
-
- @override
- bool visitLiteralBool(js.LiteralBool node, js.Node arg) {
- if (arg is! js.LiteralBool) return failAt(node, arg);
- js.LiteralBool other = arg;
- return testValues(node, node.value, other, other.value);
- }
-
- @override
- bool visitDeferredString(js.DeferredString node, js.Node arg) {
- if (arg is! js.DeferredString) return failAt(node, arg);
- js.DeferredString other = arg;
- return testValues(node, node.value, other, other.value);
- }
-
- @override
- bool visitDeferredNumber(js.DeferredNumber node, js.Node arg) {
- if (arg is! js.DeferredNumber) return failAt(node, arg);
- js.DeferredNumber other = arg;
- return testValues(node, node.value, other, other.value);
- }
-
- @override
- bool visitDeferredExpression(js.DeferredExpression node, js.Node arg) {
- if (arg is! js.DeferredExpression) return failAt(node, arg);
- js.DeferredExpression other = arg;
- return testNodes(node.value, other.value);
- }
-
- @override
- bool visitFun(js.Fun node, js.Node arg) {
- if (arg is! js.Fun) return failAt(node, arg);
- js.Fun other = arg;
- return testNodeLists(node.params, other.params) &&
- testNodes(node.body, other.body) &&
- testValues(node, node.asyncModifier, other, other.asyncModifier);
- }
-
- @override
- bool visitNamedFunction(js.NamedFunction node, js.Node arg) {
- if (arg is! js.NamedFunction) return failAt(node, arg);
- js.NamedFunction other = arg;
- return testNodes(node.name, other.name) &&
- testNodes(node.function, other.function);
- }
-
- @override
- bool visitAccess(js.PropertyAccess node, js.Node arg) {
- if (arg is! js.PropertyAccess) return failAt(node, arg);
- js.PropertyAccess other = arg;
- return testNodes(node.receiver, other.receiver) &&
- testNodes(node.selector, other.selector);
- }
-
- @override
- bool visitParameter(js.Parameter node, js.Node arg) {
- if (arg is! js.Parameter) return failAt(node, arg);
- js.Parameter other = arg;
- return testValues(node, node.name, other, other.name);
- }
-
- @override
- bool visitVariableDeclaration(js.VariableDeclaration node, js.Node arg) {
- if (arg is! js.VariableDeclaration) return failAt(node, arg);
- js.VariableDeclaration other = arg;
- return testValues(node, node.name, other, other.name) &&
- testValues(node, node.allowRename, other, other.allowRename);
- }
-
- @override
- bool visitThis(js.This node, js.Node arg) {
- if (arg is! js.This) return failAt(node, arg);
- return true;
- }
-
- @override
- bool visitVariableUse(js.VariableUse node, js.Node arg) {
- if (arg is! js.VariableUse) return failAt(node, arg);
- js.VariableUse other = arg;
- return testValues(node, node.name, other, other.name);
- }
-
- @override
- bool visitPostfix(js.Postfix node, js.Node arg) {
- if (arg is! js.Postfix) return failAt(node, arg);
- js.Postfix other = arg;
- return testValues(node, node.op, other, other.op) &&
- testNodes(node.argument, other.argument);
- }
-
- @override
- bool visitPrefix(js.Prefix node, js.Node arg) {
- if (arg is! js.Prefix) return failAt(node, arg);
- js.Prefix other = arg;
- return testValues(node, node.op, other, other.op) &&
- testNodes(node.argument, other.argument);
- }
-
- @override
- bool visitBinary(js.Binary node, js.Node arg) {
- if (arg is! js.Binary) return failAt(node, arg);
- js.Binary other = arg;
- return testNodes(node.left, other.left) &&
- testValues(node, node.op, other, other.op) &&
- testNodes(node.right, other.right);
- }
-
- @override
- bool visitCall(js.Call node, js.Node arg) {
- if (arg is! js.Call) return failAt(node, arg);
- js.Call other = arg;
- return testNodes(node.target, other.target) &&
- testNodeLists(node.arguments, other.arguments);
- }
-
- @override
- bool visitNew(js.New node, js.Node arg) {
- if (arg is! js.New) return failAt(node, arg);
- js.New other = arg;
- return testNodes(node.target, other.target) &&
- testNodeLists(node.arguments, other.arguments);
- }
-
- @override
- bool visitConditional(js.Conditional node, js.Node arg) {
- if (arg is! js.Conditional) return failAt(node, arg);
- js.Conditional other = arg;
- return testNodes(node.condition, other.condition) &&
- testNodes(node.then, other.then) &&
- testNodes(node.otherwise, other.otherwise);
- }
-
- @override
- bool visitVariableInitialization(
- js.VariableInitialization node, js.Node arg) {
- if (arg is! js.VariableInitialization) return failAt(node, arg);
- js.VariableInitialization other = arg;
- return testNodes(node.declaration, other.declaration) &&
- testNodes(node.leftHandSide, other.leftHandSide) &&
- testValues(node, node.op, other, other.op) &&
- testNodes(node.value, other.value);
- }
-
- @override
- bool visitAssignment(js.Assignment node, js.Node arg) {
- if (arg is! js.Assignment) return failAt(node, arg);
- js.Assignment other = arg;
- return testNodes(node.leftHandSide, other.leftHandSide) &&
- testValues(node, node.op, other, other.op) &&
- testNodes(node.value, other.value);
- }
-
- @override
- bool visitVariableDeclarationList(
- js.VariableDeclarationList node, js.Node arg) {
- if (arg is! js.VariableDeclarationList) return failAt(node, arg);
- js.VariableDeclarationList other = arg;
- return testNodeLists(node.declarations, other.declarations);
- }
-
- @override
- bool visitLiteralExpression(js.LiteralExpression node, js.Node arg) {
- if (arg is! js.LiteralExpression) return failAt(node, arg);
- js.LiteralExpression other = arg;
- return testValues(node, node.template, other, other.template) &&
- testNodeLists(node.inputs, other.inputs);
- }
-
- @override
- bool visitDartYield(js.DartYield node, js.Node arg) {
- if (arg is! js.DartYield) return failAt(node, arg);
- js.DartYield other = arg;
- return testNodes(node.expression, other.expression) &&
- testValues(node, node.hasStar, other, other.hasStar);
- }
-
- @override
- bool visitLiteralStatement(js.LiteralStatement node, js.Node arg) {
- if (arg is! js.LiteralStatement) return failAt(node, arg);
- js.LiteralStatement other = arg;
- return testValues(node, node.code, other, other.code);
- }
-
- @override
- bool visitLabeledStatement(js.LabeledStatement node, js.Node arg) {
- if (arg is! js.LabeledStatement) return failAt(node, arg);
- js.LabeledStatement other = arg;
- return testLabels(node, node.label, other, other.label) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitFunctionDeclaration(js.FunctionDeclaration node, js.Node arg) {
- if (arg is! js.FunctionDeclaration) return failAt(node, arg);
- js.FunctionDeclaration other = arg;
- return testNodes(node.name, other.name) &&
- testNodes(node.function, other.function);
- }
-
- @override
- bool visitDefault(js.Default node, js.Node arg) {
- if (arg is! js.Default) return failAt(node, arg);
- js.Default other = arg;
- return testNodes(node.body, other.body);
- }
-
- @override
- bool visitCase(js.Case node, js.Node arg) {
- if (arg is! js.Case) return failAt(node, arg);
- js.Case other = arg;
- return testNodes(node.expression, other.expression) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitSwitch(js.Switch node, js.Node arg) {
- if (arg is! js.Switch) return failAt(node, arg);
- js.Switch other = arg;
- return testNodes(node.key, other.key) &&
- testNodeLists(node.cases, other.cases);
- }
-
- @override
- bool visitCatch(js.Catch node, js.Node arg) {
- if (arg is! js.Catch) return failAt(node, arg);
- js.Catch other = arg;
- return testNodes(node.declaration, other.declaration) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitTry(js.Try node, js.Node arg) {
- if (arg is! js.Try) return failAt(node, arg);
- js.Try other = arg;
- return testNodes(node.body, other.body) &&
- testNodes(node.catchPart, other.catchPart) &&
- testNodes(node.finallyPart, other.finallyPart);
- }
-
- @override
- bool visitThrow(js.Throw node, js.Node arg) {
- if (arg is! js.Throw) return failAt(node, arg);
- js.Throw other = arg;
- return testNodes(node.expression, other.expression);
- }
-
- @override
- bool visitReturn(js.Return node, js.Node arg) {
- if (arg is! js.Return) return failAt(node, arg);
- js.Return other = arg;
- return testNodes(node.value, other.value);
- }
-
- @override
- bool visitBreak(js.Break node, js.Node arg) {
- if (arg is! js.Break) return failAt(node, arg);
- js.Break other = arg;
- return testLabels(node, node.targetLabel, other, other.targetLabel);
- }
-
- @override
- bool visitContinue(js.Continue node, js.Node arg) {
- if (arg is! js.Continue) return failAt(node, arg);
- js.Continue other = arg;
- return testLabels(node, node.targetLabel, other, other.targetLabel);
- }
-
- @override
- bool visitDo(js.Do node, js.Node arg) {
- if (arg is! js.Do) return failAt(node, arg);
- js.Do other = arg;
- return testNodes(node.condition, other.condition) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitWhile(js.While node, js.Node arg) {
- if (arg is! js.While) return failAt(node, arg);
- js.While other = arg;
- return testNodes(node.condition, other.condition) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitForIn(js.ForIn node, js.Node arg) {
- if (arg is! js.ForIn) return failAt(node, arg);
- js.ForIn other = arg;
- return testNodes(node.leftHandSide, other.leftHandSide) &&
- testNodes(node.object, other.object) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitFor(js.For node, js.Node arg) {
- if (arg is! js.For) return failAt(node, arg);
- js.For other = arg;
- return testNodes(node.init, other.init) &&
- testNodes(node.condition, other.condition) &&
- testNodes(node.update, other.update) &&
- testNodes(node.body, other.body);
- }
-
- @override
- bool visitIf(js.If node, js.Node arg) {
- if (arg is! js.If) return failAt(node, arg);
- js.If other = arg;
- return testNodes(node.condition, other.condition) &&
- testNodes(node.then, other.then) &&
- testNodes(node.otherwise, other.otherwise);
- }
-
- @override
- bool visitEmptyStatement(js.EmptyStatement node, js.Node arg) {
- if (arg is! js.EmptyStatement) return failAt(node, arg);
- return true;
- }
-
- @override
- bool visitExpressionStatement(js.ExpressionStatement node, js.Node arg) {
- if (arg is! js.ExpressionStatement) return failAt(node, arg);
- js.ExpressionStatement other = arg;
- return testNodes(node.expression, other.expression);
- }
-
- @override
- bool visitBlock(js.Block node, js.Node arg) {
- if (arg is! js.Block) return failAt(node, arg);
- js.Block other = arg;
- return testNodeLists(node.statements, other.statements);
- }
}
« no previous file with comments | « pkg/js_ast/lib/src/equivalence_visitor.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698