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

Side by Side Diff: tests/compiler/dart2js/sourcemaps/stacktrace_test.dart

Issue 2656583003: Add inference test functionality based on code point id. (Closed)
Patch Set: Updated cf. comments Created 3 years, 11 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 | « tests/compiler/dart2js/inference/send_test.dart ('k') | no next file » | 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) 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 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/compiler_new.dart'; 10 import 'package:compiler/compiler_new.dart';
11 import 'package:compiler/src/apiimpl.dart'; 11 import 'package:compiler/src/apiimpl.dart';
12 import 'package:compiler/src/commandline_options.dart'; 12 import 'package:compiler/src/commandline_options.dart';
13 import 'package:compiler/src/dart2js.dart' as entry; 13 import 'package:compiler/src/dart2js.dart' as entry;
14 import 'package:expect/expect.dart'; 14 import 'package:expect/expect.dart';
15 import 'package:source_maps/source_maps.dart'; 15 import 'package:source_maps/source_maps.dart';
16 import 'package:source_maps/src/utils.dart'; 16 import 'package:source_maps/src/utils.dart';
17 17
18 import '../annotated_code_helper.dart';
18 import '../source_map_validator_helper.dart'; 19 import '../source_map_validator_helper.dart';
19 20
20 const String EXCEPTION_MARKER = '>ExceptionMarker<'; 21 const String EXCEPTION_MARKER = '>ExceptionMarker<';
21 const String INPUT_FILE_NAME = 'in.dart'; 22 const String INPUT_FILE_NAME = 'in.dart';
22 23
23 const List<String> TESTS = const <String>[ 24 const List<String> TESTS = const <String>[
24 ''' 25 '''
25 main() { 26 main() {
26 @{1:main}throw '$EXCEPTION_MARKER'; 27 @{1:main}throw '$EXCEPTION_MARKER';
27 } 28 }
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 final List<StackTraceLine> unexpectedLines; 178 final List<StackTraceLine> unexpectedLines;
178 179
179 Test(this.code, this.expectedLines, this.unexpectedLines); 180 Test(this.code, this.expectedLines, this.unexpectedLines);
180 } 181 }
181 182
182 const int _LF = 0x0A; 183 const int _LF = 0x0A;
183 const int _CR = 0x0D; 184 const int _CR = 0x0D;
184 const int _LBRACE = 0x7B; 185 const int _LBRACE = 0x7B;
185 186
186 Test processTestCode(String code) { 187 Test processTestCode(String code) {
187 StringBuffer codeBuffer = new StringBuffer();
188 Map<int, StackTraceLine> stackTraceMap = <int, StackTraceLine>{}; 188 Map<int, StackTraceLine> stackTraceMap = <int, StackTraceLine>{};
189 List<StackTraceLine> unexpectedLines = <StackTraceLine>[]; 189 List<StackTraceLine> unexpectedLines = <StackTraceLine>[];
190 int index = 0; 190 AnnotatedCode annotatedCode = new AnnotatedCode(code);
191 int lineNo = 1; 191 for (Annotation annotation in annotatedCode.annotations) {
192 int columnNo = 1; 192 int colonIndex = annotation.text.indexOf(':');
193 while (index < code.length) { 193 String indexText = annotation.text.substring(0, colonIndex);
194 int charCode = code.codeUnitAt(index); 194 String methodName = annotation.text.substring(colonIndex + 1);
195 switch (charCode) { 195 StackTraceLine stackTraceLine = new StackTraceLine(
196 case _LF: 196 methodName, INPUT_FILE_NAME, annotation.lineNo, annotation.columnNo);
197 codeBuffer.write('\n'); 197 if (indexText == '') {
198 lineNo++; 198 unexpectedLines.add(stackTraceLine);
199 columnNo = 1; 199 } else {
200 break; 200 int stackTraceIndex = int.parse(indexText);
201 case _CR: 201 assert(!stackTraceMap.containsKey(stackTraceIndex));
202 if (index + 1 < code.length && code.codeUnitAt(index + 1) == _LF) { 202 stackTraceMap[stackTraceIndex] = stackTraceLine;
203 index++;
204 }
205 codeBuffer.write('\n');
206 lineNo++;
207 columnNo = 1;
208 break;
209 case 0x40:
210 if (index + 1 < code.length && code.codeUnitAt(index + 1) == _LBRACE) {
211 int colonIndex = code.indexOf(':', index);
212 int endIndex = code.indexOf('}', index);
213 String methodName = code.substring(colonIndex + 1, endIndex);
214 String indexText = code.substring(index + 2, colonIndex);
215 StackTraceLine stackTraceLine =
216 new StackTraceLine(methodName, INPUT_FILE_NAME, lineNo, columnNo);
217 if (indexText == '') {
218 unexpectedLines.add(stackTraceLine);
219 } else {
220 int stackTraceIndex = int.parse(indexText);
221 assert(!stackTraceMap.containsKey(stackTraceIndex));
222 stackTraceMap[stackTraceIndex] = stackTraceLine;
223 }
224 index = endIndex;
225 } else {
226 codeBuffer.writeCharCode(charCode);
227 columnNo++;
228 }
229 break;
230 default:
231 codeBuffer.writeCharCode(charCode);
232 columnNo++;
233 } 203 }
234 index++;
235 } 204 }
236 List<StackTraceLine> expectedLines = <StackTraceLine>[]; 205 List<StackTraceLine> expectedLines = <StackTraceLine>[];
237 for (int stackTraceIndex in (stackTraceMap.keys.toList()..sort()).reversed) { 206 for (int stackTraceIndex in (stackTraceMap.keys.toList()..sort()).reversed) {
238 expectedLines.add(stackTraceMap[stackTraceIndex]); 207 expectedLines.add(stackTraceMap[stackTraceIndex]);
239 } 208 }
240 return new Test(codeBuffer.toString(), expectedLines, unexpectedLines); 209 return new Test(annotatedCode.sourceCode, expectedLines, unexpectedLines);
241 } 210 }
242 211
243 void main(List<String> arguments) { 212 void main(List<String> arguments) {
244 bool verbose = false; 213 bool verbose = false;
245 bool printJs = false; 214 bool printJs = false;
246 List<int> indices; 215 List<int> indices;
247 for (String arg in arguments) { 216 for (String arg in arguments) {
248 if (arg == '-v') { 217 if (arg == '-v') {
249 verbose = true; 218 verbose = true;
250 } else if (arg == '--print-js') { 219 } else if (arg == '--print-js') {
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 String get d8executable { 464 String get d8executable {
496 if (Platform.isWindows) { 465 if (Platform.isWindows) {
497 return 'third_party/d8/windows/d8.exe'; 466 return 'third_party/d8/windows/d8.exe';
498 } else if (Platform.isLinux) { 467 } else if (Platform.isLinux) {
499 return 'third_party/d8/linux/d8'; 468 return 'third_party/d8/linux/d8';
500 } else if (Platform.isMacOS) { 469 } else if (Platform.isMacOS) {
501 return 'third_party/d8/macos/d8'; 470 return 'third_party/d8/macos/d8';
502 } 471 }
503 throw new UnsupportedError('Unsupported platform.'); 472 throw new UnsupportedError('Unsupported platform.');
504 } 473 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/inference/send_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698