| Index: runtime/lib/errors_patch.dart
|
| diff --git a/runtime/lib/errors_patch.dart b/runtime/lib/errors_patch.dart
|
| index 898f7f6abe52bd2c4dfdbb1b1813ad3653d8de0c..cf42b572f7c9a7904b0c590174835b36af7ade8b 100644
|
| --- a/runtime/lib/errors_patch.dart
|
| +++ b/runtime/lib/errors_patch.dart
|
| @@ -2,25 +2,27 @@
|
| // for details. All rights reserved. Use of this source code is governed by a
|
| // BSD-style license that can be found in the LICENSE file.
|
|
|
| -@patch class Error {
|
| - @patch static String _objectToString(Object object) {
|
| +@patch
|
| +class Error {
|
| + @patch
|
| + static String _objectToString(Object object) {
|
| return Object._toString(object);
|
| }
|
|
|
| - @patch static String _stringToSafeString(String string) {
|
| + @patch
|
| + static String _stringToSafeString(String string) {
|
| return JSON.encode(string);
|
| }
|
|
|
| - @patch StackTrace get stackTrace => _stackTrace;
|
| + @patch
|
| + StackTrace get stackTrace => _stackTrace;
|
|
|
| StackTrace _stackTrace;
|
| }
|
|
|
| class _AssertionError extends Error implements AssertionError {
|
| _AssertionError._create(
|
| - this._failedAssertion, this._url, this._line, this._column,
|
| - this.message);
|
| -
|
| + this._failedAssertion, this._url, this._line, this._column, this.message);
|
|
|
| // AssertionError_throwNew in errors.cc fishes the assertion source code
|
| // out of the script. It expects a Dart stack frame from class
|
| @@ -30,7 +32,7 @@ class _AssertionError extends Error implements AssertionError {
|
| }
|
|
|
| static _doThrowNew(int assertionStart, int assertionEnd, Object message)
|
| - native "AssertionError_throwNew";
|
| + native "AssertionError_throwNew";
|
|
|
| static _evaluateAssertion(condition) {
|
| if (identical(condition, true) || identical(condition, false)) {
|
| @@ -64,6 +66,7 @@ class _AssertionError extends Error implements AssertionError {
|
| return "'$_url': Failed assertion: line $_line$columnInfo: "
|
| "'$_failedAssertion': $_messageString";
|
| }
|
| +
|
| final String _failedAssertion;
|
| final String _url;
|
| final int _line;
|
| @@ -75,19 +78,16 @@ class _TypeError extends _AssertionError implements TypeError {
|
| _TypeError._create(String url, int line, int column, String errorMsg)
|
| : super._create("is assignable", url, line, column, errorMsg);
|
|
|
| - static _throwNew(int location,
|
| - Object src_value,
|
| - _Type dst_type,
|
| - String dst_name,
|
| - String bound_error_msg)
|
| - native "TypeError_throwNew";
|
| -
|
| - static _throwNewIfNotLoaded(_LibraryPrefix prefix,
|
| - int location,
|
| - Object src_value,
|
| - _Type dst_type,
|
| - String dst_name,
|
| - String bound_error_msg) {
|
| + static _throwNew(int location, Object src_value, _Type dst_type,
|
| + String dst_name, String bound_error_msg) native "TypeError_throwNew";
|
| +
|
| + static _throwNewIfNotLoaded(
|
| + _LibraryPrefix prefix,
|
| + int location,
|
| + Object src_value,
|
| + _Type dst_type,
|
| + String dst_name,
|
| + String bound_error_msg) {
|
| if (!prefix.isLoaded()) {
|
| _throwNew(location, src_value, dst_type, dst_name, bound_error_msg);
|
| }
|
| @@ -111,7 +111,8 @@ class _CastError extends Error implements CastError {
|
| final String _errorMsg;
|
| }
|
|
|
| -@patch class FallThroughError {
|
| +@patch
|
| +class FallThroughError {
|
| FallThroughError._create(this._url, this._line);
|
|
|
| static _throwNew(int case_clause_pos) native "FallThroughError_throwNew";
|
| @@ -133,28 +134,32 @@ class _InternalError {
|
| final String _msg;
|
| }
|
|
|
| -@patch class UnsupportedError {
|
| +@patch
|
| +class UnsupportedError {
|
| static _throwNew(String msg) {
|
| throw new UnsupportedError(msg);
|
| }
|
| }
|
|
|
| -@patch class CyclicInitializationError {
|
| +@patch
|
| +class CyclicInitializationError {
|
| static _throwNew(String variableName) {
|
| throw new CyclicInitializationError(variableName);
|
| }
|
| }
|
|
|
| -@patch class AbstractClassInstantiationError {
|
| +@patch
|
| +class AbstractClassInstantiationError {
|
| AbstractClassInstantiationError._create(
|
| this._className, this._url, this._line);
|
|
|
| static _throwNew(int case_clause_pos, String className)
|
| native "AbstractClassInstantiationError_throwNew";
|
|
|
| - @patch String toString() {
|
| + @patch
|
| + String toString() {
|
| return "Cannot instantiate abstract class $_className: "
|
| - "_url '$_url' line $_line";
|
| + "_url '$_url' line $_line";
|
| }
|
|
|
| // These new fields cannot be declared final, because a constructor exists
|
| @@ -163,16 +168,13 @@ class _InternalError {
|
| int _line;
|
| }
|
|
|
| -@patch class NoSuchMethodError {
|
| +@patch
|
| +class NoSuchMethodError {
|
| // The compiler emits a call to _throwNew when it cannot resolve a static
|
| // method at compile time. The receiver is actually the literal class of the
|
| // unresolved method.
|
| - static void _throwNew(Object receiver,
|
| - String memberName,
|
| - int invocation_type,
|
| - List arguments,
|
| - List argumentNames,
|
| - List existingArgumentNames) {
|
| + static void _throwNew(Object receiver, String memberName, int invocation_type,
|
| + List arguments, List argumentNames, List existingArgumentNames) {
|
| int numNamedArguments = argumentNames == null ? 0 : argumentNames.length;
|
| int numPositionalArguments = arguments == null ? 0 : arguments.length;
|
| numPositionalArguments -= numNamedArguments;
|
| @@ -191,24 +193,26 @@ class _InternalError {
|
| var arg_value = arguments[numPositionalArguments + i];
|
| namedArguments[new Symbol(argumentNames[i])] = arg_value;
|
| }
|
| - throw new NoSuchMethodError._withType(receiver,
|
| - new Symbol(memberName),
|
| - invocation_type,
|
| - positionalArguments,
|
| - namedArguments,
|
| - existingArgumentNames);
|
| + throw new NoSuchMethodError._withType(
|
| + receiver,
|
| + new Symbol(memberName),
|
| + invocation_type,
|
| + positionalArguments,
|
| + namedArguments,
|
| + existingArgumentNames);
|
| }
|
|
|
| - static void _throwNewIfNotLoaded(_LibraryPrefix prefix,
|
| - Object receiver,
|
| - String memberName,
|
| - int invocation_type,
|
| - List arguments,
|
| - List argumentNames,
|
| - List existingArgumentNames) {
|
| + static void _throwNewIfNotLoaded(
|
| + _LibraryPrefix prefix,
|
| + Object receiver,
|
| + String memberName,
|
| + int invocation_type,
|
| + List arguments,
|
| + List argumentNames,
|
| + List existingArgumentNames) {
|
| if (!prefix.isLoaded()) {
|
| - _throwNew(receiver, memberName, invocation_type, arguments,
|
| - argumentNames, existingArgumentNames);
|
| + _throwNew(receiver, memberName, invocation_type, arguments, argumentNames,
|
| + existingArgumentNames);
|
| }
|
| }
|
|
|
| @@ -218,11 +222,9 @@ class _InternalError {
|
| final int _invocation_type;
|
|
|
| @patch
|
| - NoSuchMethodError(Object receiver,
|
| - Symbol memberName,
|
| - List positionalArguments,
|
| - Map<Symbol, dynamic> namedArguments,
|
| - [List existingArgumentNames = null])
|
| + NoSuchMethodError(Object receiver, Symbol memberName,
|
| + List positionalArguments, Map<Symbol, dynamic> namedArguments,
|
| + [List existingArgumentNames = null])
|
| : _receiver = receiver,
|
| _memberName = memberName,
|
| _arguments = positionalArguments,
|
| @@ -232,29 +234,30 @@ class _InternalError {
|
|
|
| // This constructor seems to be called with either strings or
|
| // values read from another NoSuchMethodError.
|
| - NoSuchMethodError._withType(this._receiver,
|
| - /*String|Symbol*/ memberName,
|
| - this._invocation_type,
|
| - this._arguments,
|
| - Map<dynamic, dynamic> namedArguments,
|
| - [List existingArgumentNames = null])
|
| + NoSuchMethodError._withType(
|
| + this._receiver,
|
| + /*String|Symbol*/ memberName,
|
| + this._invocation_type,
|
| + this._arguments,
|
| + Map<dynamic, dynamic> namedArguments,
|
| + [List existingArgumentNames = null])
|
| : this._memberName =
|
| (memberName is String) ? new Symbol(memberName) : memberName,
|
| - this._namedArguments =
|
| - (namedArguments == null)
|
| - ? null
|
| - : new Map<Symbol, dynamic>.fromIterable(
|
| - namedArguments.keys,
|
| - key: (k) => (k is String) ? new Symbol(k) : k,
|
| - value: (k) => namedArguments[k]),
|
| + this._namedArguments = (namedArguments == null)
|
| + ? null
|
| + : new Map<Symbol, dynamic>.fromIterable(namedArguments.keys,
|
| + key: (k) => (k is String) ? new Symbol(k) : k,
|
| + value: (k) => namedArguments[k]),
|
| this._existingArgumentNames = existingArgumentNames;
|
|
|
| - @patch String toString() {
|
| + @patch
|
| + String toString() {
|
| var level = (_invocation_type >> _InvocationMirror._CALL_SHIFT) &
|
| _InvocationMirror._CALL_MASK;
|
| var type = _invocation_type & _InvocationMirror._TYPE_MASK;
|
| - String memberName = (_memberName == null) ? "" :
|
| - internal.Symbol.getUnmangledName(_memberName);
|
| + String memberName = (_memberName == null)
|
| + ? ""
|
| + : internal.Symbol.getUnmangledName(_memberName);
|
|
|
| if (type == _InvocationMirror._LOCAL_VAR) {
|
| return "NoSuchMethodError: Cannot assign to final variable '$memberName'";
|
| @@ -286,61 +289,73 @@ class _InternalError {
|
|
|
| String type_str;
|
| if (type >= 0 && type < 5) {
|
| - type_str = (const ["method", "getter", "setter", "getter or setter",
|
| - "variable"])[type];
|
| + type_str = (const [
|
| + "method",
|
| + "getter",
|
| + "setter",
|
| + "getter or setter",
|
| + "variable"
|
| + ])[type];
|
| }
|
|
|
| StringBuffer msg_buf = new StringBuffer("NoSuchMethodError: ");
|
| bool is_type_call = false;
|
| switch (level) {
|
| - case _InvocationMirror._DYNAMIC: {
|
| - if (_receiver == null) {
|
| - if (args_mismatch) {
|
| - msg_buf.writeln("The null object does not have a $type_str "
|
| - "'$memberName'$args_message.");
|
| - } else {
|
| - msg_buf.writeln("The $type_str '$memberName' was called on null.");
|
| - }
|
| - } else {
|
| - if (_receiver is Function) {
|
| - msg_buf.writeln("Closure call with mismatched arguments: "
|
| - "function '$memberName'");
|
| - } else if (_receiver is _Type && memberName == "call") {
|
| - is_type_call = true;
|
| - String name = _receiver.toString();
|
| - msg_buf.writeln("Attempted to use type '$name' as a function. "
|
| - "Since types do not define a method 'call', this is not "
|
| - "possible. Did you intend to call the $name constructor and "
|
| - "forget the 'new' operator?");
|
| + case _InvocationMirror._DYNAMIC:
|
| + {
|
| + if (_receiver == null) {
|
| + if (args_mismatch) {
|
| + msg_buf.writeln("The null object does not have a $type_str "
|
| + "'$memberName'$args_message.");
|
| + } else {
|
| + msg_buf
|
| + .writeln("The $type_str '$memberName' was called on null.");
|
| + }
|
| } else {
|
| - msg_buf.writeln("Class '${_receiver.runtimeType}' has no instance "
|
| - "$type_str '$memberName'$args_message.");
|
| + if (_receiver is Function) {
|
| + msg_buf.writeln("Closure call with mismatched arguments: "
|
| + "function '$memberName'");
|
| + } else if (_receiver is _Type && memberName == "call") {
|
| + is_type_call = true;
|
| + String name = _receiver.toString();
|
| + msg_buf.writeln("Attempted to use type '$name' as a function. "
|
| + "Since types do not define a method 'call', this is not "
|
| + "possible. Did you intend to call the $name constructor and "
|
| + "forget the 'new' operator?");
|
| + } else {
|
| + msg_buf
|
| + .writeln("Class '${_receiver.runtimeType}' has no instance "
|
| + "$type_str '$memberName'$args_message.");
|
| + }
|
| }
|
| + break;
|
| }
|
| - break;
|
| - }
|
| - case _InvocationMirror._SUPER: {
|
| - msg_buf.writeln("Super class of class '${_receiver.runtimeType}' has "
|
| + case _InvocationMirror._SUPER:
|
| + {
|
| + msg_buf.writeln("Super class of class '${_receiver.runtimeType}' has "
|
| "no instance $type_str '$memberName'$args_message.");
|
| - memberName = "super.$memberName";
|
| - break;
|
| - }
|
| - case _InvocationMirror._STATIC: {
|
| - msg_buf.writeln("No static $type_str '$memberName'$args_message "
|
| - "declared in class '$_receiver'.");
|
| - break;
|
| - }
|
| - case _InvocationMirror._CONSTRUCTOR: {
|
| - msg_buf.writeln("No constructor '$memberName'$args_message declared "
|
| - "in class '$_receiver'.");
|
| - memberName = "new $memberName";
|
| - break;
|
| - }
|
| - case _InvocationMirror._TOP_LEVEL: {
|
| - msg_buf.writeln("No top-level $type_str '$memberName'$args_message "
|
| - "declared.");
|
| - break;
|
| - }
|
| + memberName = "super.$memberName";
|
| + break;
|
| + }
|
| + case _InvocationMirror._STATIC:
|
| + {
|
| + msg_buf.writeln("No static $type_str '$memberName'$args_message "
|
| + "declared in class '$_receiver'.");
|
| + break;
|
| + }
|
| + case _InvocationMirror._CONSTRUCTOR:
|
| + {
|
| + msg_buf.writeln("No constructor '$memberName'$args_message declared "
|
| + "in class '$_receiver'.");
|
| + memberName = "new $memberName";
|
| + break;
|
| + }
|
| + case _InvocationMirror._TOP_LEVEL:
|
| + {
|
| + msg_buf.writeln("No top-level $type_str '$memberName'$args_message "
|
| + "declared.");
|
| + break;
|
| + }
|
| }
|
|
|
| if (level == _InvocationMirror._TOP_LEVEL) {
|
| @@ -375,7 +390,6 @@ class _InternalError {
|
| }
|
| }
|
|
|
| -
|
| class _CompileTimeError extends Error {
|
| final String _errorMsg;
|
| _CompileTimeError(this._errorMsg);
|
|
|