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

Side by Side Diff: tests/compiler/dart2js/equivalence/id_equivalence.dart

Issue 3007783004: Handle switch continue (Closed)
Patch Set: Updated cf. comment Created 3 years, 3 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
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 'package:compiler/src/common.dart'; 5 import 'package:compiler/src/common.dart';
6 import 'package:compiler/src/elements/elements.dart'; 6 import 'package:compiler/src/elements/elements.dart';
7 import 'package:compiler/src/resolution/access_semantics.dart'; 7 import 'package:compiler/src/resolution/access_semantics.dart';
8 import 'package:compiler/src/resolution/send_structure.dart'; 8 import 'package:compiler/src/resolution/send_structure.dart';
9 import 'package:compiler/src/resolution/tree_elements.dart'; 9 import 'package:compiler/src/resolution/tree_elements.dart';
10 import 'package:compiler/src/tree/nodes.dart' as ast; 10 import 'package:compiler/src/tree/nodes.dart' as ast;
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 150
151 SourceSpan computeSourceSpan(ast.Node node) { 151 SourceSpan computeSourceSpan(ast.Node node) {
152 return new SourceSpan(resolvedAst.sourceUri, 152 return new SourceSpan(resolvedAst.sourceUri,
153 node.getBeginToken().charOffset, node.getEndToken().charEnd); 153 node.getBeginToken().charOffset, node.getEndToken().charEnd);
154 } 154 }
155 155
156 NodeId computeDefaultNodeId(ast.Node node) { 156 NodeId computeDefaultNodeId(ast.Node node) {
157 return new NodeId(node.getBeginToken().charOffset); 157 return new NodeId(node.getBeginToken().charOffset);
158 } 158 }
159 159
160 NodeId computeLoopNodeId(ast.Node node) { 160 NodeId computeLoopNodeId(ast.Node node) => computeDefaultNodeId(node);
161 return new NodeId(node.getBeginToken().charOffset);
162 }
163 161
164 NodeId computeGotoNodeId(ast.Node node) { 162 NodeId computeGotoNodeId(ast.Node node) => computeDefaultNodeId(node);
165 return new NodeId(node.getBeginToken().charOffset); 163
164 NodeId computeSwitchNodeId(ast.SwitchStatement node) =>
165 computeDefaultNodeId(node);
166
167 NodeId computeSwitchCaseNodeId(ast.SwitchCase node) {
168 ast.Node position;
169 for (ast.Node child in node.labelsAndCases) {
170 if (child.asCaseMatch() != null) {
171 ast.CaseMatch caseMatch = child;
172 position = caseMatch.expression;
173 break;
174 }
175 }
176 return computeDefaultNodeId(position);
166 } 177 }
167 178
168 void run() { 179 void run() {
169 resolvedAst.node.accept(this); 180 resolvedAst.node.accept(this);
170 } 181 }
171 182
172 visitNode(ast.Node node) { 183 visitNode(ast.Node node) {
173 node.visitChildren(this); 184 node.visitChildren(this);
174 } 185 }
175 186
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 227
217 visitLoop(ast.Loop node) { 228 visitLoop(ast.Loop node) {
218 computeForNode(node, computeLoopNodeId(node)); 229 computeForNode(node, computeLoopNodeId(node));
219 visitNode(node); 230 visitNode(node);
220 } 231 }
221 232
222 visitGotoStatement(ast.GotoStatement node) { 233 visitGotoStatement(ast.GotoStatement node) {
223 computeForNode(node, computeGotoNodeId(node)); 234 computeForNode(node, computeGotoNodeId(node));
224 visitNode(node); 235 visitNode(node);
225 } 236 }
237
238 visitSwitchStatement(ast.SwitchStatement node) {
239 computeForNode(node, computeSwitchNodeId(node));
240 visitNode(node);
241 }
242
243 visitSwitchCase(ast.SwitchCase node) {
244 computeForNode(node, computeSwitchCaseNodeId(node));
245 visitNode(node);
246 }
226 } 247 }
227 248
228 /// Abstract IR visitor for computing data corresponding to a node or element, 249 /// Abstract IR visitor for computing data corresponding to a node or element,
229 /// and record it with a generic [Id] 250 /// and record it with a generic [Id]
230 abstract class IrDataExtractor extends ir.Visitor { 251 abstract class IrDataExtractor extends ir.Visitor {
231 final Map<Id, ActualData> actualMap; 252 final Map<Id, ActualData> actualMap;
232 253
233 void registerValue( 254 void registerValue(
234 SourceSpan sourceSpan, Id id, String value, Object object) { 255 SourceSpan sourceSpan, Id id, String value, Object object) {
235 if (value != null) { 256 if (value != null) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 Uri.parse(node.location.file), node.fileOffset, node.fileOffset + 1); 299 Uri.parse(node.location.file), node.fileOffset, node.fileOffset + 1);
279 } 300 }
280 301
281 NodeId computeDefaultNodeId(ir.TreeNode node) { 302 NodeId computeDefaultNodeId(ir.TreeNode node) {
282 assert(node.fileOffset != ir.TreeNode.noOffset); 303 assert(node.fileOffset != ir.TreeNode.noOffset);
283 return new NodeId(node.fileOffset); 304 return new NodeId(node.fileOffset);
284 } 305 }
285 306
286 NodeId computeLoopNodeId(ir.TreeNode node) => computeDefaultNodeId(node); 307 NodeId computeLoopNodeId(ir.TreeNode node) => computeDefaultNodeId(node);
287 NodeId computeGotoNodeId(ir.TreeNode node) => computeDefaultNodeId(node); 308 NodeId computeGotoNodeId(ir.TreeNode node) => computeDefaultNodeId(node);
309 NodeId computeSwitchNodeId(ir.SwitchStatement node) =>
310 computeDefaultNodeId(node);
311 NodeId computeSwitchCaseNodeId(ir.SwitchCase node) =>
312 new NodeId(node.expressionOffsets.first);
288 313
289 void run(ir.Node root) { 314 void run(ir.Node root) {
290 root.accept(this); 315 root.accept(this);
291 } 316 }
292 317
293 defaultNode(ir.Node node) { 318 defaultNode(ir.Node node) {
294 node.visitChildren(this); 319 node.visitChildren(this);
295 } 320 }
296 321
297 defaultMember(ir.Member node) { 322 defaultMember(ir.Member node) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 371
347 visitWhileStatement(ir.WhileStatement node) { 372 visitWhileStatement(ir.WhileStatement node) {
348 computeForNode(node, computeLoopNodeId(node)); 373 computeForNode(node, computeLoopNodeId(node));
349 super.visitWhileStatement(node); 374 super.visitWhileStatement(node);
350 } 375 }
351 376
352 visitBreakStatement(ir.BreakStatement node) { 377 visitBreakStatement(ir.BreakStatement node) {
353 computeForNode(node, computeGotoNodeId(node)); 378 computeForNode(node, computeGotoNodeId(node));
354 super.visitBreakStatement(node); 379 super.visitBreakStatement(node);
355 } 380 }
381
382 visitSwitchStatement(ir.SwitchStatement node) {
383 computeForNode(node, computeSwitchNodeId(node));
384 super.visitSwitchStatement(node);
385 }
386
387 visitSwitchCase(ir.SwitchCase node) {
388 computeForNode(node, computeSwitchCaseNodeId(node));
389 super.visitSwitchCase(node);
390 }
391
392 visitContinueSwitchStatement(ir.ContinueSwitchStatement node) {
393 computeForNode(node, computeGotoNodeId(node));
394 super.visitContinueSwitchStatement(node);
395 }
356 } 396 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/closure/closure_test.dart ('k') | tests/compiler/dart2js/equivalence/id_equivalence_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698