mirror of
https://github.com/dart-lang/sdk
synced 2024-10-03 02:42:05 +00:00
[js_runtime] NullError always reports as a failed null check
Bug: b/244438673 Change-Id: Iaccfe428b4db2a8d0f910d5028aed77ac5d5ea80 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/306912 Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Stephen Adams <sra@google.com>
This commit is contained in:
parent
4038b4f9df
commit
42fbb693f3
|
@ -1599,14 +1599,11 @@ class TypeErrorDecoder {
|
||||||
|
|
||||||
class NullError extends TypeError implements NoSuchMethodError {
|
class NullError extends TypeError implements NoSuchMethodError {
|
||||||
final String _message;
|
final String _message;
|
||||||
final String? _method;
|
|
||||||
|
|
||||||
NullError(this._message, match)
|
NullError(this._message);
|
||||||
: _method = match == null ? null : JS('', '#.method', match);
|
|
||||||
|
|
||||||
String toString() {
|
String toString() {
|
||||||
if (_method == null) return 'NoSuchMethodError: $_message';
|
return 'Null check operator used on a null value';
|
||||||
return "NoSuchMethodError: method not found: '$_method' on null";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1727,8 +1724,7 @@ Object _unwrapNonDartException(Object ex) {
|
||||||
ex, JsNoSuchMethodError('$message (Error $ieErrorCode)', null));
|
ex, JsNoSuchMethodError('$message (Error $ieErrorCode)', null));
|
||||||
case 445:
|
case 445:
|
||||||
case 5007:
|
case 5007:
|
||||||
return saveStackTrace(
|
return saveStackTrace(ex, NullError('$message (Error $ieErrorCode)'));
|
||||||
ex, NullError('$message (Error $ieErrorCode)', null));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1762,7 +1758,7 @@ Object _unwrapNonDartException(Object ex) {
|
||||||
(match = nullLiteralCall.matchTypeError(message)) != null ||
|
(match = nullLiteralCall.matchTypeError(message)) != null ||
|
||||||
(match = undefProperty.matchTypeError(message)) != null ||
|
(match = undefProperty.matchTypeError(message)) != null ||
|
||||||
(match = undefLiteralProperty.matchTypeError(message)) != null) {
|
(match = undefLiteralProperty.matchTypeError(message)) != null) {
|
||||||
return saveStackTrace(ex, NullError(message, match));
|
return saveStackTrace(ex, NullError(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we cannot determine what kind of error this is, we fall back
|
// If we cannot determine what kind of error this is, we fall back
|
||||||
|
|
|
@ -94,8 +94,8 @@ test2() {
|
||||||
|
|
||||||
gA = null;
|
gA = null;
|
||||||
gB = null;
|
gB = null;
|
||||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
|
|
||||||
gA = 1;
|
gA = 1;
|
||||||
gB = null;
|
gB = null;
|
||||||
|
@ -104,8 +104,8 @@ test2() {
|
||||||
|
|
||||||
gA = null;
|
gA = null;
|
||||||
gB = 2;
|
gB = 2;
|
||||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
|
|
@ -96,8 +96,8 @@ test2() {
|
||||||
|
|
||||||
gA = null;
|
gA = null;
|
||||||
gB = null;
|
gB = null;
|
||||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
|
|
||||||
gA = 1;
|
gA = 1;
|
||||||
gB = null;
|
gB = null;
|
||||||
|
@ -106,8 +106,8 @@ test2() {
|
||||||
|
|
||||||
gA = null;
|
gA = null;
|
||||||
gB = 2;
|
gB = 2;
|
||||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
|
Loading…
Reference in a new issue