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

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

Issue 3007783004: Handle switch continue (Closed)
Patch Set: 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 ast.Node position;
245 for (ast.Node child in node.labelsAndCases) {
246 if (child.asCaseMatch() != null) {
247 ast.CaseMatch caseMatch = child;
248 position = caseMatch.expression;
249 break;
250 }
251 }
252 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.
253 visitNode(node);
254 }
226 } 255 }
227 256
228 /// Abstract IR visitor for computing data corresponding to a node or element, 257 /// Abstract IR visitor for computing data corresponding to a node or element,
229 /// and record it with a generic [Id] 258 /// and record it with a generic [Id]
230 abstract class IrDataExtractor extends ir.Visitor { 259 abstract class IrDataExtractor extends ir.Visitor {
231 final Map<Id, ActualData> actualMap; 260 final Map<Id, ActualData> actualMap;
232 261
233 void registerValue( 262 void registerValue(
234 SourceSpan sourceSpan, Id id, String value, Object object) { 263 SourceSpan sourceSpan, Id id, String value, Object object) {
235 if (value != null) { 264 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); 307 Uri.parse(node.location.file), node.fileOffset, node.fileOffset + 1);
279 } 308 }
280 309
281 NodeId computeDefaultNodeId(ir.TreeNode node) { 310 NodeId computeDefaultNodeId(ir.TreeNode node) {
282 assert(node.fileOffset != ir.TreeNode.noOffset); 311 assert(node.fileOffset != ir.TreeNode.noOffset);
283 return new NodeId(node.fileOffset); 312 return new NodeId(node.fileOffset);
284 } 313 }
285 314
286 NodeId computeLoopNodeId(ir.TreeNode node) => computeDefaultNodeId(node); 315 NodeId computeLoopNodeId(ir.TreeNode node) => computeDefaultNodeId(node);
287 NodeId computeGotoNodeId(ir.TreeNode node) => computeDefaultNodeId(node); 316 NodeId computeGotoNodeId(ir.TreeNode node) => computeDefaultNodeId(node);
317 NodeId computeSwitchNodeId(ir.SwitchStatement node) =>
318 computeDefaultNodeId(node);
319 NodeId computeSwitchCaseNodeId(ir.SwitchCase node) =>
320 new NodeId(node.expressionOffsets.first);
288 321
289 void run(ir.Node root) { 322 void run(ir.Node root) {
290 root.accept(this); 323 root.accept(this);
291 } 324 }
292 325
293 defaultNode(ir.Node node) { 326 defaultNode(ir.Node node) {
294 node.visitChildren(this); 327 node.visitChildren(this);
295 } 328 }
296 329
297 defaultMember(ir.Member node) { 330 defaultMember(ir.Member node) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 379
347 visitWhileStatement(ir.WhileStatement node) { 380 visitWhileStatement(ir.WhileStatement node) {
348 computeForNode(node, computeLoopNodeId(node)); 381 computeForNode(node, computeLoopNodeId(node));
349 super.visitWhileStatement(node); 382 super.visitWhileStatement(node);
350 } 383 }
351 384
352 visitBreakStatement(ir.BreakStatement node) { 385 visitBreakStatement(ir.BreakStatement node) {
353 computeForNode(node, computeGotoNodeId(node)); 386 computeForNode(node, computeGotoNodeId(node));
354 super.visitBreakStatement(node); 387 super.visitBreakStatement(node);
355 } 388 }
389
390 visitSwitchStatement(ir.SwitchStatement node) {
391 computeForNode(node, computeSwitchNodeId(node));
392 super.visitSwitchStatement(node);
393 }
394
395 visitSwitchCase(ir.SwitchCase node) {
396 computeForNode(node, computeSwitchCaseNodeId(node));
397 super.visitSwitchCase(node);
398 }
399
400 visitContinueSwitchStatement(ir.ContinueSwitchStatement node) {
401 computeForNode(node, computeGotoNodeId(node));
402 super.visitContinueSwitchStatement(node);
403 }
356 } 404 }
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