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

Side by Side Diff: pkg/kernel/lib/analyzer/ast_from_analyzer.dart

Issue 2750013002: [kernel] Debugging of switch statement (Closed)
Patch Set: Take #2: Update switch case to include list of positions Created 3 years, 9 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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 library kernel.analyzer.ast_from_analyzer; 4 library kernel.analyzer.ast_from_analyzer;
5 5
6 import '../ast.dart' as ast; 6 import '../ast.dart' as ast;
7 import '../frontend/accessors.dart'; 7 import '../frontend/accessors.dart';
8 import '../frontend/super_initializers.dart'; 8 import '../frontend/super_initializers.dart';
9 import '../log.dart'; 9 import '../log.dart';
10 import '../type_algebra.dart'; 10 import '../type_algebra.dart';
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after
1106 var labelToNode = <String, ast.SwitchCase>{}; 1106 var labelToNode = <String, ast.SwitchCase>{};
1107 ast.SwitchCase currentCase = null; 1107 ast.SwitchCase currentCase = null;
1108 for (var member in node.members) { 1108 for (var member in node.members) {
1109 if (currentCase != null && currentCase.isDefault) { 1109 if (currentCase != null && currentCase.isDefault) {
1110 var error = member is SwitchCase 1110 var error = member is SwitchCase
1111 ? ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE 1111 ? ParserErrorCode.SWITCH_HAS_CASE_AFTER_DEFAULT_CASE
1112 : ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES; 1112 : ParserErrorCode.SWITCH_HAS_MULTIPLE_DEFAULT_CASES;
1113 return scope.emitCompileTimeError(error); 1113 return scope.emitCompileTimeError(error);
1114 } 1114 }
1115 if (currentCase == null) { 1115 if (currentCase == null) {
1116 currentCase = new ast.SwitchCase(<ast.Expression>[], null); 1116 currentCase = new ast.SwitchCase(<ast.Expression>[], <int>[], null);
1117 cases.add(currentCase); 1117 cases.add(currentCase);
1118 } 1118 }
1119 if (member is SwitchCase) { 1119 if (member is SwitchCase) {
1120 var expression = scope.buildExpression(member.expression); 1120 var expression = scope.buildExpression(member.expression);
1121 currentCase.expressions.add(expression..parent = currentCase); 1121 currentCase.expressions.add(expression..parent = currentCase);
1122 } else { 1122 } else {
1123 currentCase.isDefault = true; 1123 currentCase.isDefault = true;
1124 } 1124 }
1125 for (Label label in member.labels) { 1125 for (Label label in member.labels) {
1126 continueNode = 1126 continueNode =
(...skipping 1943 matching lines...) Expand 10 before | Expand all | Expand 10 after
3070 if (list[i - 1].compareTo(item) == 0) { 3070 if (list[i - 1].compareTo(item) == 0) {
3071 ++deleted; 3071 ++deleted;
3072 } else if (deleted > 0) { 3072 } else if (deleted > 0) {
3073 list[i - deleted] = item; 3073 list[i - deleted] = item;
3074 } 3074 }
3075 } 3075 }
3076 if (deleted > 0) { 3076 if (deleted > 0) {
3077 list.length -= deleted; 3077 list.length -= deleted;
3078 } 3078 }
3079 } 3079 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698