Chromium Code Reviews| Index: tests/compiler/dart2js/equivalence/id_equivalence.dart |
| diff --git a/tests/compiler/dart2js/equivalence/id_equivalence.dart b/tests/compiler/dart2js/equivalence/id_equivalence.dart |
| index 9d6d5d0cf757eec25868a023e5364c98bfb4b4eb..92a39805f752a7a79a6784b1b3127e27f914db5b 100644 |
| --- a/tests/compiler/dart2js/equivalence/id_equivalence.dart |
| +++ b/tests/compiler/dart2js/equivalence/id_equivalence.dart |
| @@ -157,12 +157,23 @@ abstract class AstDataExtractor extends ast.Visitor { |
| return new NodeId(node.getBeginToken().charOffset); |
| } |
| - NodeId computeLoopNodeId(ast.Node node) { |
| - return new NodeId(node.getBeginToken().charOffset); |
| - } |
| + NodeId computeLoopNodeId(ast.Node node) => computeDefaultNodeId(node); |
| - NodeId computeGotoNodeId(ast.Node node) { |
| - return new NodeId(node.getBeginToken().charOffset); |
| + NodeId computeGotoNodeId(ast.Node node) => computeDefaultNodeId(node); |
| + |
| + NodeId computeSwitchNodeId(ast.SwitchStatement node) => |
| + computeDefaultNodeId(node); |
| + |
| + NodeId computeSwitchCaseNodeId(ast.SwitchCase node) { |
| + ast.Node position; |
| + for (ast.Node child in node.labelsAndCases) { |
| + if (child.asCaseMatch() != null) { |
| + ast.CaseMatch caseMatch = child; |
| + position = caseMatch.expression; |
| + break; |
| + } |
| + } |
| + return computeDefaultNodeId(position); |
| } |
| void run() { |
| @@ -223,6 +234,24 @@ abstract class AstDataExtractor extends ast.Visitor { |
| computeForNode(node, computeGotoNodeId(node)); |
| visitNode(node); |
| } |
| + |
| + visitSwitchStatement(ast.SwitchStatement node) { |
| + computeForNode(node, computeSwitchNodeId(node)); |
| + visitNode(node); |
| + } |
| + |
| + visitSwitchCase(ast.SwitchCase node) { |
| + ast.Node position; |
| + for (ast.Node child in node.labelsAndCases) { |
| + if (child.asCaseMatch() != null) { |
| + ast.CaseMatch caseMatch = child; |
| + position = caseMatch.expression; |
| + break; |
| + } |
| + } |
| + computeForNode(node, computeDefaultNodeId(position)); |
|
Siggi Cherem (dart-lang)
2017/08/30 20:17:29
use computeSwitchCaseNodeId here?
Johnni Winther
2017/08/31 11:03:36
Done.
|
| + visitNode(node); |
| + } |
| } |
| /// Abstract IR visitor for computing data corresponding to a node or element, |
| @@ -285,6 +314,10 @@ abstract class IrDataExtractor extends ir.Visitor { |
| NodeId computeLoopNodeId(ir.TreeNode node) => computeDefaultNodeId(node); |
| NodeId computeGotoNodeId(ir.TreeNode node) => computeDefaultNodeId(node); |
| + NodeId computeSwitchNodeId(ir.SwitchStatement node) => |
| + computeDefaultNodeId(node); |
| + NodeId computeSwitchCaseNodeId(ir.SwitchCase node) => |
| + new NodeId(node.expressionOffsets.first); |
| void run(ir.Node root) { |
| root.accept(this); |
| @@ -353,4 +386,19 @@ abstract class IrDataExtractor extends ir.Visitor { |
| computeForNode(node, computeGotoNodeId(node)); |
| super.visitBreakStatement(node); |
| } |
| + |
| + visitSwitchStatement(ir.SwitchStatement node) { |
| + computeForNode(node, computeSwitchNodeId(node)); |
| + super.visitSwitchStatement(node); |
| + } |
| + |
| + visitSwitchCase(ir.SwitchCase node) { |
| + computeForNode(node, computeSwitchCaseNodeId(node)); |
| + super.visitSwitchCase(node); |
| + } |
| + |
| + visitContinueSwitchStatement(ir.ContinueSwitchStatement node) { |
| + computeForNode(node, computeGotoNodeId(node)); |
| + super.visitContinueSwitchStatement(node); |
| + } |
| } |