Chromium Code Reviews| Index: tests/compiler/dart2js/equivalence/id_equivalence_helper.dart |
| diff --git a/tests/compiler/dart2js/equivalence/id_equivalence_helper.dart b/tests/compiler/dart2js/equivalence/id_equivalence_helper.dart |
| index 0219bc108ec5786d102e3b4c07812b95361532df..d89841238a3617963abffbb19c11feb2bac2d5b9 100644 |
| --- a/tests/compiler/dart2js/equivalence/id_equivalence_helper.dart |
| +++ b/tests/compiler/dart2js/equivalence/id_equivalence_helper.dart |
| @@ -7,12 +7,8 @@ import 'package:compiler/src/commandline_options.dart'; |
| import 'package:compiler/src/common.dart'; |
| import 'package:compiler/src/common_elements.dart'; |
| import 'package:compiler/src/compiler.dart'; |
| -import 'package:compiler/src/elements/elements.dart'; |
| import 'package:compiler/src/elements/entities.dart'; |
| -import 'package:compiler/src/resolution/tree_elements.dart'; |
| -import 'package:compiler/src/tree/nodes.dart' as ast; |
| import 'package:expect/expect.dart'; |
| -import 'package:kernel/ast.dart' as ir; |
| import '../annotated_code_helper.dart'; |
| import '../memory_compiler.dart'; |
| @@ -88,15 +84,6 @@ Future<IdData> computeData( |
| code, compiler, elementEnvironment, mainUri, expectedMap, actualMap); |
| } |
| -class ActualData { |
| - final Id id; |
| - final String value; |
| - final SourceSpan sourceSpan; |
| - final Object object; |
| - |
| - ActualData(this.id, this.value, this.sourceSpan, this.object); |
| -} |
| - |
| /// Data collected by [computeData]. |
| class IdData { |
| final AnnotatedCode code; |
| @@ -155,6 +142,27 @@ class IdData { |
| }); |
| return withAnnotations(annotations); |
| } |
| + |
| + String computeDiffCodeFor(IdData other) { |
| + Map<int, String> annotations = <int, String>{}; |
| + actualMap.forEach((Id id, ActualData data1) { |
| + ActualData data2 = other.actualMap[id]; |
| + if (data1.value != data2?.value) { |
| + annotations[data1.sourceSpan.begin] = |
| + '${data1.value} | ${data2?.value ?? '---'}'; |
| + } |
| + }); |
| + other.actualMap.forEach((Id id, ActualData data2) { |
| + if (!actualMap.containsKey(id)) { |
| + int offset = compiler.reporter |
| + .spanFromSpannable( |
| + computeSpannable(elementEnvironment, mainUri, id)) |
| + .begin; |
| + annotations[offset] = '--- | ${data2.value}'; |
| + } |
| + }); |
| + return withAnnotations(annotations); |
| + } |
| } |
| /// Compiles the [annotatedCode] with the provided [options] and calls |
| @@ -248,158 +256,3 @@ Map<Id, String> computeExpectedMap(AnnotatedCode code) { |
| } |
| return map; |
| } |
| - |
| -/// Mixin used for computing [Id] data. |
| -abstract class ComputerMixin { |
|
Siggi Cherem (dart-lang)
2017/08/18 21:20:21
ha! - I just realized this was a move :(...
comme
Johnni Winther
2017/08/19 09:30:52
Acknowledged.
|
| - Map<Id, ActualData> get actualMap; |
| - |
| - void registerValue( |
| - SourceSpan sourceSpan, Id id, String value, Object object) { |
| - if (id != null && value != null) { |
| - actualMap[id] = new ActualData(id, value, sourceSpan, object); |
| - } |
| - } |
| -} |
| - |
| -/// Abstract AST visitor for computing [Id] data. |
| -abstract class AbstractResolvedAstComputer extends ast.Visitor |
| - with AstEnumeratorMixin, ComputerMixin { |
| - final DiagnosticReporter reporter; |
| - final Map<Id, ActualData> actualMap; |
| - final ResolvedAst resolvedAst; |
| - |
| - AbstractResolvedAstComputer(this.reporter, this.actualMap, this.resolvedAst); |
| - |
| - TreeElements get elements => resolvedAst.elements; |
| - |
| - void computeForElement(AstElement element) { |
| - ElementId id = computeElementId(element); |
| - if (id == null) return; |
| - String value = computeElementValue(element); |
| - registerValue(element.sourcePosition, id, value, element); |
| - } |
| - |
| - void computeForNode(ast.Node node, AstElement element) { |
| - NodeId id = computeNodeId(node, element); |
| - if (id == null) return; |
| - String value = computeNodeValue(node, element); |
| - SourceSpan sourceSpan = new SourceSpan(resolvedAst.sourceUri, |
| - node.getBeginToken().charOffset, node.getEndToken().charEnd); |
| - registerValue(sourceSpan, id, value, element ?? node); |
| - } |
| - |
| - String computeElementValue(AstElement element); |
| - |
| - String computeNodeValue(ast.Node node, AstElement element); |
| - |
| - void run() { |
| - resolvedAst.node.accept(this); |
| - } |
| - |
| - visitNode(ast.Node node) { |
| - node.visitChildren(this); |
| - } |
| - |
| - visitVariableDefinitions(ast.VariableDefinitions node) { |
| - for (ast.Node child in node.definitions) { |
| - AstElement element = elements[child]; |
| - if (element == null) { |
| - reportHere(reporter, child, 'No element for variable.'); |
| - } else if (!element.isLocal) { |
| - computeForElement(element); |
| - } else { |
| - computeForNode(child, element); |
| - } |
| - } |
| - visitNode(node); |
| - } |
| - |
| - visitFunctionExpression(ast.FunctionExpression node) { |
| - AstElement element = elements.getFunctionDefinition(node); |
| - if (!element.isLocal) { |
| - computeForElement(element); |
| - } else { |
| - computeForNode(node, element); |
| - } |
| - visitNode(node); |
| - } |
| - |
| - visitSend(ast.Send node) { |
| - computeForNode(node, null); |
| - visitNode(node); |
| - } |
| - |
| - visitSendSet(ast.SendSet node) { |
| - computeForNode(node, null); |
| - visitNode(node); |
| - } |
| -} |
| - |
| -/// Abstract IR visitor for computing [Id] data. |
| -abstract class AbstractIrComputer extends ir.Visitor |
| - with IrEnumeratorMixin, ComputerMixin { |
| - final Map<Id, ActualData> actualMap; |
| - |
| - AbstractIrComputer(this.actualMap); |
| - |
| - void computeForMember(ir.Member member) { |
| - ElementId id = computeElementId(member); |
| - if (id == null) return; |
| - String value = computeMemberValue(member); |
| - registerValue(computeSpannable(member), id, value, member); |
| - } |
| - |
| - void computeForNode(ir.TreeNode node) { |
| - NodeId id = computeNodeId(node); |
| - if (id == null) return; |
| - String value = computeNodeValue(node); |
| - registerValue(computeSpannable(node), id, value, node); |
| - } |
| - |
| - Spannable computeSpannable(ir.TreeNode node) { |
| - return new SourceSpan( |
| - Uri.parse(node.location.file), node.fileOffset, node.fileOffset + 1); |
| - } |
| - |
| - String computeMemberValue(ir.Member member); |
| - |
| - String computeNodeValue(ir.TreeNode node); |
| - |
| - void run(ir.Node root) { |
| - root.accept(this); |
| - } |
| - |
| - defaultNode(ir.Node node) { |
| - node.visitChildren(this); |
| - } |
| - |
| - defaultMember(ir.Member node) { |
| - computeForMember(node); |
| - super.defaultMember(node); |
| - } |
| - |
| - visitMethodInvocation(ir.MethodInvocation node) { |
| - computeForNode(node); |
| - super.visitMethodInvocation(node); |
| - } |
| - |
| - visitPropertyGet(ir.PropertyGet node) { |
| - computeForNode(node); |
| - super.visitPropertyGet(node); |
| - } |
| - |
| - visitVariableDeclaration(ir.VariableDeclaration node) { |
| - computeForNode(node); |
| - super.visitVariableDeclaration(node); |
| - } |
| - |
| - visitFunctionDeclaration(ir.FunctionDeclaration node) { |
| - computeForNode(node); |
| - super.visitFunctionDeclaration(node); |
| - } |
| - |
| - visitFunctionExpression(ir.FunctionExpression node) { |
| - computeForNode(node); |
| - super.visitFunctionExpression(node); |
| - } |
| -} |