blob: dc50c4cb26626e713c2135cba046f24fbfe3d3c0 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// 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.
// Errors are created and thrown by DartVM only.
// Changes here should also be reflected in corelib/error.dart as well
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: "
"'$failedAssertion' is not true.";
}
final String failedAssertion;
final String url;
final int line;
final int column;
}
class _TypeErrorImplementation
extends _AssertionErrorImplementation
implements TypeError {
_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 : "";
if ((dstName != null) && (dstName.length > 0)) {
str = "${str}type '$srcType' is not a subtype of "
"type '$dstType' of '$dstName'.";
} else {
str = "${str}malformed type used.";
}
return str;
}
final String srcType;
final String dstType;
final String dstName;
final String _malformedError;
}
class _CastErrorImplementation
extends _TypeErrorImplementation
implements CastError {
_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 : "";
if ((dstName != null) && (dstName.length > 0)) {
str = "${str}type '$srcType' is not a subtype of "
"type '$dstType' in type cast.";
} else {
str = "${str}malformed type used in type cast.";
}
return str;
}
}
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.";
}
final String _url;
final int _line;
}
class _InternalError {
const _InternalError(this._msg);
String toString() => "InternalError: '${_msg}'";
final String _msg;
}
class _AbstractClassInstantiationErrorImplementation
extends AbstractClassInstantiationError {
_AbstractClassInstantiationErrorImplementation(
String className, this._url, this._line)
: 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";
}
final String _url;
final int _line;
}