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

Side by Side Diff: tests/compiler/dart2js/closure/closure_test.dart

Issue 3002823002: Add more info to closure_test output (Closed)
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « no previous file | tests/compiler/dart2js/equivalence/id_equivalence_helper.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:io' hide Link; 5 import 'dart:io' hide Link;
6 import 'package:async_helper/async_helper.dart'; 6 import 'package:async_helper/async_helper.dart';
7 import 'package:compiler/src/closure.dart'; 7 import 'package:compiler/src/closure.dart';
8 import 'package:compiler/src/common.dart'; 8 import 'package:compiler/src/common.dart';
9 import 'package:compiler/src/compiler.dart'; 9 import 'package:compiler/src/compiler.dart';
10 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; 10 import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
(...skipping 30 matching lines...) Expand all
41 await checkCode(annotatedCode, computeKernelClosureData, compileFromDill, 41 await checkCode(annotatedCode, computeKernelClosureData, compileFromDill,
42 verbose: verbose); 42 verbose: verbose);
43 } 43 }
44 }); 44 });
45 } 45 }
46 46
47 /// Compute closure data mapping for [_member] as a [MemberElement]. 47 /// Compute closure data mapping for [_member] as a [MemberElement].
48 /// 48 ///
49 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans 49 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans
50 /// for the data origin. 50 /// for the data origin.
51 void computeClosureData(Compiler compiler, MemberEntity _member, 51 void computeClosureData(
52 Map<Id, String> actualMap, Map<Id, SourceSpan> sourceSpanMap, 52 Compiler compiler, MemberEntity _member, Map<Id, ActualData> actualMap,
53 {bool verbose: false}) { 53 {bool verbose: false}) {
54 MemberElement member = _member; 54 MemberElement member = _member;
55 ClosureDataLookup<ast.Node> closureDataLookup = 55 ClosureDataLookup<ast.Node> closureDataLookup =
56 compiler.backendStrategy.closureDataLookup as ClosureDataLookup<ast.Node>; 56 compiler.backendStrategy.closureDataLookup as ClosureDataLookup<ast.Node>;
57 new ClosureAstComputer(compiler.reporter, actualMap, sourceSpanMap, 57 new ClosureAstComputer(
58 member.resolvedAst, closureDataLookup, 58 compiler.reporter, actualMap, member.resolvedAst, closureDataLookup,
59 verbose: verbose) 59 verbose: verbose)
60 .run(); 60 .run();
61 } 61 }
62 62
63 /// Compute closure data mapping for [member] as a kernel based element. 63 /// Compute closure data mapping for [member] as a kernel based element.
64 /// 64 ///
65 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans 65 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans
66 /// for the data origin. 66 /// for the data origin.
67 void computeKernelClosureData(Compiler compiler, MemberEntity member, 67 void computeKernelClosureData(
68 Map<Id, String> actualMap, Map<Id, SourceSpan> sourceSpanMap, 68 Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
69 {bool verbose: false}) { 69 {bool verbose: false}) {
70 KernelBackendStrategy backendStrategy = compiler.backendStrategy; 70 KernelBackendStrategy backendStrategy = compiler.backendStrategy;
71 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap; 71 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap;
72 GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting; 72 GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting;
73 ClosureDataLookup closureDataLookup = backendStrategy.closureDataLookup; 73 ClosureDataLookup closureDataLookup = backendStrategy.closureDataLookup;
74 MemberDefinition definition = elementMap.getMemberDefinition(member); 74 MemberDefinition definition = elementMap.getMemberDefinition(member);
75 assert(definition.kind == MemberKind.regular, 75 assert(definition.kind == MemberKind.regular,
76 failedAt(member, "Unexpected member definition $definition")); 76 failedAt(member, "Unexpected member definition $definition"));
77 new ClosureIrChecker(actualMap, sourceSpanMap, elementMap, member, 77 new ClosureIrChecker(actualMap, elementMap, member,
78 localsMap.getLocalsMap(member), closureDataLookup, 78 localsMap.getLocalsMap(member), closureDataLookup,
79 verbose: verbose) 79 verbose: verbose)
80 .run(definition.node); 80 .run(definition.node);
81 } 81 }
82 82
83 /// Ast visitor for computing closure data. 83 /// Ast visitor for computing closure data.
84 class ClosureAstComputer extends AbstractResolvedAstComputer 84 class ClosureAstComputer extends AbstractResolvedAstComputer
85 with ComputeValueMixin { 85 with ComputeValueMixin {
86 final ClosureDataLookup<ast.Node> closureDataLookup; 86 final ClosureDataLookup<ast.Node> closureDataLookup;
87 final bool verbose; 87 final bool verbose;
88 88
89 ClosureAstComputer( 89 ClosureAstComputer(DiagnosticReporter reporter, Map<Id, ActualData> actualMap,
90 DiagnosticReporter reporter, 90 ResolvedAst resolvedAst, this.closureDataLookup,
91 Map<Id, String> actualMap,
92 Map<Id, Spannable> spannableMap,
93 ResolvedAst resolvedAst,
94 this.closureDataLookup,
95 {this.verbose: false}) 91 {this.verbose: false})
96 : super(reporter, actualMap, spannableMap, resolvedAst) { 92 : super(reporter, actualMap, resolvedAst) {
97 push(resolvedAst.element); 93 push(resolvedAst.element);
98 } 94 }
99 95
100 visitFunctionExpression(ast.FunctionExpression node) { 96 visitFunctionExpression(ast.FunctionExpression node) {
101 Entity localFunction = resolvedAst.elements.getFunctionDefinition(node); 97 Entity localFunction = resolvedAst.elements.getFunctionDefinition(node);
102 if (localFunction is LocalFunctionElement) { 98 if (localFunction is LocalFunctionElement) {
103 push(localFunction); 99 push(localFunction);
104 super.visitFunctionExpression(node); 100 super.visitFunctionExpression(node);
105 pop(); 101 pop();
106 } else { 102 } else {
(...skipping 24 matching lines...) Expand all
131 } 127 }
132 128
133 /// Kernel IR visitor for computing closure data. 129 /// Kernel IR visitor for computing closure data.
134 class ClosureIrChecker extends AbstractIrComputer 130 class ClosureIrChecker extends AbstractIrComputer
135 with ComputeValueMixin<ir.Node> { 131 with ComputeValueMixin<ir.Node> {
136 final ClosureDataLookup<ir.Node> closureDataLookup; 132 final ClosureDataLookup<ir.Node> closureDataLookup;
137 final KernelToLocalsMap _localsMap; 133 final KernelToLocalsMap _localsMap;
138 final bool verbose; 134 final bool verbose;
139 135
140 ClosureIrChecker( 136 ClosureIrChecker(
141 Map<Id, String> actualMap, 137 Map<Id, ActualData> actualMap,
142 Map<Id, SourceSpan> sourceSpanMap,
143 KernelToElementMapForBuilding elementMap, 138 KernelToElementMapForBuilding elementMap,
144 MemberEntity member, 139 MemberEntity member,
145 this._localsMap, 140 this._localsMap,
146 this.closureDataLookup, 141 this.closureDataLookup,
147 {this.verbose: false}) 142 {this.verbose: false})
148 : super(actualMap, sourceSpanMap) { 143 : super(actualMap) {
149 push(member); 144 push(member);
150 } 145 }
151 146
152 visitFunctionExpression(ir.FunctionExpression node) { 147 visitFunctionExpression(ir.FunctionExpression node) {
153 Local localFunction = _localsMap.getLocalFunction(node); 148 Local localFunction = _localsMap.getLocalFunction(node);
154 push(localFunction); 149 push(localFunction);
155 super.visitFunctionExpression(node); 150 super.visitFunctionExpression(node);
156 pop(); 151 pop();
157 } 152 }
158 153
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 if (value != '') { 312 if (value != '') {
318 sb.write('='); 313 sb.write('=');
319 sb.write(value); 314 sb.write(value);
320 } 315 }
321 needsComma = true; 316 needsComma = true;
322 } 317 }
323 } 318 }
324 return sb.toString(); 319 return sb.toString();
325 } 320 }
326 } 321 }
OLDNEW
« no previous file with comments | « no previous file | tests/compiler/dart2js/equivalence/id_equivalence_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698