fc7390d97b
This patch is based on https://chromereviews.googleplex.com/3520019/. However it addresses the following issues: 1) TypeError exceptions will now have the stack trace filled in. 2) Type parameters are now accessible from closurized code, including the trampoline shims for named optinal parameters. 3) Suppress use of FunctionExpressionInliner with type checks because the inline normalization can leave return nodes in the AST. 4) Pass the generateHumanReadableOutput flag to the closure backend. 5) TypeDartcTest passes in debug and release modes with type checking enabled. We still need to enable the additional cases in the code. Review URL: https://chromereviews.googleplex.com/3558021 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@271 260f80e4-7a28-3924-810f-c04153c831b5
57 lines
1.8 KiB
Dart
57 lines
1.8 KiB
Dart
// Copyright (c) 2011, 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 AssertError {
|
|
factory AssertError._uninstantiable() {
|
|
throw const UnsupportedOperationException(
|
|
"AssertError can only be allocated by the VM");
|
|
}
|
|
static throwNew(int assertionStart, int assertionEnd)
|
|
native "AssertError_throwNew";
|
|
String toString() {
|
|
return "Failed assertion: '$failedAssertion' is not true " +
|
|
"in $url at line $line, column $column.";
|
|
}
|
|
final String failedAssertion;
|
|
final String url;
|
|
final int line;
|
|
final int column;
|
|
}
|
|
|
|
class TypeError extends AssertError {
|
|
factory TypeError._uninstantiable() {
|
|
throw const UnsupportedOperationException(
|
|
"TypeError can only be allocated by the VM");
|
|
}
|
|
String toString() {
|
|
return "Failed type check: type $srcType is not assignable to type " +
|
|
"$dstType of $dstName in $url at line " +
|
|
"$line, column $column.";
|
|
}
|
|
final String srcType;
|
|
final String dstType;
|
|
final String dstName;
|
|
}
|
|
|
|
class FallThroughError {
|
|
factory FallThroughError._uninstantiable() {
|
|
throw const UnsupportedOperationException(
|
|
"FallThroughError can only be allocated by the VM");
|
|
}
|
|
static throwNew(int case_clause_pos) native "FallThroughError_throwNew";
|
|
String toString() {
|
|
return "Switch case fall-through in $url at line $line.";
|
|
}
|
|
final String url;
|
|
final int line;
|
|
}
|
|
|
|
class InternalError {
|
|
const InternalError(this._msg);
|
|
String toString() => "InternalError: '${_msg}'";
|
|
final String _msg;
|
|
}
|