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 0017ebc9b16877df510e6ab71c831789f1b79945..8d960821848766431dad86d3aa34467b98ad930c 100644 |
--- a/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart |
+++ b/pkg/dev_compiler/tool/input_sdk/private/js_helper.dart |
@@ -576,16 +576,16 @@ throwConcurrentModificationError(collection) { |
throw new ConcurrentModificationError(collection); |
} |
-class NullError extends Error implements NoSuchMethodError { |
- final String _message; |
- final String _method; |
- |
- NullError(this._message, match) |
- : _method = match == null ? null : JS('', '#.method', match); |
+@JsPeerInterface(name: 'TypeError') |
+class NullError extends Interceptor implements NoSuchMethodError { |
+ StackTrace get stackTrace => Primitives.extractStackTrace(this); |
String toString() { |
- if (_method == null) return 'NullError: $_message'; |
- return "NullError: method not found: '$_method' on null"; |
+ // TODO(vsm): Distinguish between null reference errors and other |
+ // TypeErrors. We should not get non-null TypeErrors from DDC code, |
+ // but we may from native JavaScript. |
+ var message = JS('String', '#.message', this); |
+ return "NullError: $message"; |
} |
} |