Index: pkg/dev_compiler/tool/input_sdk/private/js_helper.dart |
diff --git a/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart b/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart |
index 1cb146ddcc3931bb5737e64d69aaffd85c1060f0..6fc12bd7f1fbd2f4d6d304b39e8ebe3e8c77617a 100644 |
--- a/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart |
+++ b/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart |
@@ -493,7 +493,7 @@ class Primitives { |
} |
static StackTrace extractStackTrace(Error error) { |
- return getTraceFromException(JS('', r'#.$thrownJsError', error)); |
+ return JS('StackTrace', 'dart.stackTrace(#)', error); |
Jennifer Messerly
2017/05/05 23:59:15
question ... i've seen this pattern too in dart:mi
vsm
2017/05/08 17:07:44
Oh nice - the typed call works!
In this case th
|
} |
} |
@@ -627,10 +627,20 @@ class UnknownJsTypeError extends Error { |
} |
/** |
- * Called by generated code to fetch the stack trace from an |
+ * Called by generated code to fetch the stack trace from a Dart |
* exception. Should never return null. |
*/ |
-StackTrace getTraceFromException(exception) => new _StackTrace(exception); |
+final _stackTrace = JS('', 'Symbol("_stackTrace")'); |
+StackTrace getTraceFromException(exception) { |
+ var error = JS('', 'dart.recordJsError(#)', exception); |
Jennifer Messerly
2017/05/05 23:59:15
same as above, I don't think we need to use JS cod
|
+ var trace = JS('StackTrace', '#[#]', error, _stackTrace); |
+ if (trace != null) return trace; |
+ trace = new _StackTrace(error); |
+ JS('', '#[#] = #', error, _stackTrace, trace); |
+ return trace; |
+} |
+ |
+//=> JS('StackTrace', 'dart.stackTrace(#)', exception); |
Jennifer Messerly
2017/05/05 23:59:15
remove this comment?
vsm
2017/05/08 17:07:44
doh!
|
class _StackTrace implements StackTrace { |
var _exception; |