Chromium Code Reviews| Index: runtime/lib/error.dart |
| diff --git a/runtime/lib/error.dart b/runtime/lib/error.dart |
| index acac03599089dc549bbbef96e8f2fa8c8ea49ca4..10ed6e0cdd14550c5bbffcb36e4eb4391ac1565f 100644 |
| --- a/runtime/lib/error.dart |
| +++ b/runtime/lib/error.dart |
| @@ -4,15 +4,15 @@ |
| // Errors are created and thrown by DartVM only. |
| // Changes here should also be reflected in corelib/error.dart as well |
| -class AssertionErrorImplementation extends AssertionError { |
| - factory AssertionErrorImplementation._uninstantiable() { |
| - throw new UnsupportedError( |
| - "AssertionError can only be allocated by the VM"); |
| - } |
| +class _AssertionErrorImplementation extends AssertionError { |
| + _AssertionErrorImplementation( |
| + this.failedAssertion, this.url, this.line, this.column); |
| + |
| static _throwNew(int assertionStart, int assertionEnd) |
| native "AssertionError_throwNew"; |
| + |
| String toString() { |
| - return "'$url': Failed assertion: line $line pos $column: " |
| + return "'$url': Failed assertion: line $line pos $_column: " |
| "'$failedAssertion' is not true."; |
| } |
| final String failedAssertion; |
| @@ -21,21 +21,24 @@ class AssertionErrorImplementation extends AssertionError { |
| final int column; |
| } |
| -class TypeErrorImplementation |
| - extends AssertionErrorImplementation |
| +class _TypeErrorImplementation |
| + extends _AssertionErrorImplementation |
| implements TypeError { |
| - factory TypeErrorImplementation._uninstantiable() { |
| - throw new UnsupportedError( |
| - "TypeError can only be allocated by the VM"); |
| - } |
| + |
| + _TypeErrorImplementation( |
| + String failedAssertion, String url, int line, int column, |
| + this.srcType, this.dstType, this.dstName, this._malformedError) |
| + : super(failedAssertion, url, line, column); |
| + |
| static _throwNew(int location, |
| Object src_value, |
| String dst_type_name, |
| String dst_name, |
| String malformed_error) |
| native "TypeError_throwNew"; |
| + |
| String toString() { |
| - String str = (malformedError != null) ? malformedError : ""; |
| + String str = (_malformedError != null) ? _malformedError : ""; |
| if ((dstName != null) && (dstName.length > 0)) { |
| str = "${str}type '$srcType' is not a subtype of " |
| "type '$dstType' of '$dstName'."; |
| @@ -44,23 +47,27 @@ class TypeErrorImplementation |
| } |
| return str; |
| } |
| + |
| final String srcType; |
| final String dstType; |
| final String dstName; |
| - final String malformedError; |
| + final String _malformedError; |
| } |
| -class CastErrorImplementation |
| - extends TypeErrorImplementation |
| +class _CastErrorImplementation |
| + extends _TypeErrorImplementation |
| implements CastError { |
| - factory CastErrorImplementation._uninstantiable() { |
| - throw new UnsupportedError( |
| - "CastError can only be allocated by the VM"); |
| - } |
| + |
| + _CastErrorImplementation( |
| + String failedAssertion, String url, int line, int column, |
| + String srcType, String dstType, String dstName, String malformedError) |
| + : super(failedAssertion, url, line, column, |
| + srcType, dstType, dstName, malformedError); |
| + |
| // A CastError is allocated by TypeError._throwNew() when dst_name equals |
| // Exceptions::kCastErrorDstName. |
| String toString() { |
| - String str = (malformedError != null) ? malformedError : ""; |
| + String str = (_malformedError != null) ? _malformedError : ""; |
| if ((dstName != null) && (dstName.length > 0)) { |
| str = "${str}type '$srcType' is not a subtype of " |
| "type '$dstType' in type cast."; |
| @@ -71,43 +78,44 @@ class CastErrorImplementation |
| } |
| } |
| -class FallThroughErrorImplementation extends FallThroughError { |
| - factory FallThroughErrorImplementation._uninstantiable() { |
| - throw new UnsupportedError( |
| - "FallThroughError can only be allocated by the VM"); |
| - } |
| +class _FallThroughErrorImplementation extends FallThroughError { |
| + |
| + _FallThroughErrorImplementation(this._url, this._line); |
| + |
| static _throwNew(int case_clause_pos) native "FallThroughError_throwNew"; |
| + |
| String toString() { |
| - return "'$url': Switch case fall-through at line $line."; |
| + return "'$_url': Switch case fall-through at line $_line."; |
| } |
| - final String url; |
| - final int line; |
| + |
| + final String _url; |
| + final int _line; |
| } |
| -class InternalError { |
| - const InternalError(this._msg); |
| +class _InternalError { |
| + const _InternalError(this._msg); |
| String toString() => "InternalError: '${_msg}'"; |
| final String _msg; |
| } |
| -class AbstractClassInstantiationErrorImplementation |
| +class _AbstractClassInstantiationErrorImplementation |
| extends AbstractClassInstantiationError { |
| - factory AbstractClassInstantiationErrorImplementation._uninstantiable() { |
| - throw new UnsupportedError( |
| - "AbstractClassInstantiationError can only be allocated by the VM"); |
| - } |
| + _AbstractClassInstantiationErrorImplementation( |
| + String className, this._url, this._line) |
| + : this._className = className, |
| + super(className); |
| static _throwNew(int case_clause_pos, String className) |
| native "AbstractClassInstantiationError_throwNew"; |
| String toString() { |
| - return "Cannot instantiate abstract class $className: " |
| - "url '$url' line $line"; |
| + return "Cannot instantiate abstract class $_className: " |
| + "_url '$_url' line $_line"; |
| } |
| - final String className; |
| - final String url; |
| - final int line; |
| + final String _className; |
|
siva
2013/07/12 16:49:36
The className field already exists in the super cl
floitsch
2013/07/12 17:12:36
done.
|
| + final String _url; |
| + final int _line; |
|
siva
2013/07/12 16:49:36
If we are going with this scheme of using a Dart c
floitsch
2013/07/12 17:12:36
Sure. We can discuss this.
Not in this CL, though.
|
| } |