Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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:path/path.dart' as p; | 5 import 'package:path/path.dart' as p; |
| 6 import 'package:source_maps/source_maps.dart'; | 6 import 'package:source_maps/source_maps.dart'; |
| 7 import 'package:stack_trace/stack_trace.dart'; | 7 import 'package:stack_trace/stack_trace.dart'; |
| 8 | 8 |
| 9 /// Convert [stackTrace], a stack trace generated by dart2js-compiled | 9 /// Convert [stackTrace], a stack trace generated by dart2js-compiled |
| 10 /// JavaScript, to a native-looking stack trace using [sourceMap]. | 10 /// JavaScript, to a native-looking stack trace using [sourceMap]. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 74 // its member names. Use the span's identifier if available, otherwise | 74 // its member names. Use the span's identifier if available, otherwise |
| 75 // use the minified member name. | 75 // use the minified member name. |
| 76 minified | 76 minified |
| 77 ? (span.isIdentifier ? span.text : frame.member) | 77 ? (span.isIdentifier ? span.text : frame.member) |
| 78 : _prettifyMember(frame.member)); | 78 : _prettifyMember(frame.member)); |
| 79 }).where((frame) => frame != null)); | 79 }).where((frame) => frame != null)); |
| 80 } | 80 } |
| 81 | 81 |
| 82 /// Reformats a JS member name to make it look more Dart-like. | 82 /// Reformats a JS member name to make it look more Dart-like. |
| 83 String _prettifyMember(String member) { | 83 String _prettifyMember(String member) { |
| 84 return member | 84 return member |
|
kevmoo
2016/06/15 19:26:10
Orthogonal: How often is this method called? Durin
nweiz
2016/06/15 20:29:09
For now I don't think it's being used anywhere per
| |
| 85 // Get rid of the noise that Firefox sometimes adds. | 85 // Get rid of the noise that Firefox sometimes adds. |
| 86 .replaceAll(new RegExp(r"/?<$"), "") | 86 .replaceAll(new RegExp(r"/?<$"), "") |
| 87 // Get rid of arity indicators. | 87 // Get rid of arity indicators and named arguments. |
| 88 .replaceAll(new RegExp(r"\$\d+$"), "") | 88 .replaceAll(new RegExp(r"\$\d+(\$[a-zA-Z_0-9]+)*$"), "") |
| 89 // Convert closures to <fn>. | 89 // Convert closures to <fn>. |
| 90 .replaceAllMapped(new RegExp(r"(_+)closure\d*\.call$"), | 90 .replaceAllMapped(new RegExp(r"(_+)closure\d*\.call$"), |
| 91 // The number of underscores before "closure" indicates how nested it | 91 // The number of underscores before "closure" indicates how nested it |
| 92 // is. | 92 // is. |
| 93 (match) => ".<fn>" * match[1].length) | 93 (match) => ".<fn>" * match[1].length) |
| 94 // Get rid of explicitly-generated calls. | 94 // Get rid of explicitly-generated calls. |
| 95 .replaceAll(new RegExp(r"\.call$"), "") | 95 .replaceAll(new RegExp(r"\.call$"), "") |
| 96 // Get rid of the top-level method prefix. | 96 // Get rid of the top-level method prefix. |
| 97 .replaceAll(new RegExp(r"^dart\."), "") | 97 .replaceAll(new RegExp(r"^dart\."), "") |
| 98 // Get rid of library namespaces. | 98 // Get rid of library namespaces. |
| 99 .replaceAll(new RegExp(r"[a-zA-Z_0-9]+\$"), "") | 99 .replaceAll(new RegExp(r"[a-zA-Z_0-9]+\$"), "") |
| 100 // Get rid of the static method prefix. The class name also exists in the | 100 // Get rid of the static method prefix. The class name also exists in the |
| 101 // invocation, so we're not getting rid of any information. | 101 // invocation, so we're not getting rid of any information. |
| 102 .replaceAll(new RegExp(r"^[a-zA-Z_0-9]+.(static|dart)."), "") | 102 .replaceAll(new RegExp(r"^[a-zA-Z_0-9]+.(static|dart)."), "") |
| 103 // Convert underscores after identifiers to dots. This runs the risk of | 103 // Convert underscores after identifiers to dots. This runs the risk of |
| 104 // incorrectly converting members that contain underscores, but those are | 104 // incorrectly converting members that contain underscores, but those are |
| 105 // contrary to the style guide anyway. | 105 // contrary to the style guide anyway. |
| 106 .replaceAllMapped(new RegExp(r"([a-zA-Z0-9]+)_"), | 106 .replaceAllMapped(new RegExp(r"([a-zA-Z0-9]+)_"), |
| 107 (match) => match[1] + "."); | 107 (match) => match[1] + "."); |
| 108 } | 108 } |
| OLD | NEW |