mirror of
https://github.com/dart-lang/sdk
synced 2024-10-02 23:59:16 +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 {
|
||||
final String _message;
|
||||
final String? _method;
|
||||
|
||||
NullError(this._message, match)
|
||||
: _method = match == null ? null : JS('', '#.method', match);
|
||||
NullError(this._message);
|
||||
|
||||
String toString() {
|
||||
if (_method == null) return 'NoSuchMethodError: $_message';
|
||||
return "NoSuchMethodError: method not found: '$_method' on null";
|
||||
return 'Null check operator used on a null value';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1727,8 +1724,7 @@ Object _unwrapNonDartException(Object ex) {
|
|||
ex, JsNoSuchMethodError('$message (Error $ieErrorCode)', null));
|
||||
case 445:
|
||||
case 5007:
|
||||
return saveStackTrace(
|
||||
ex, NullError('$message (Error $ieErrorCode)', null));
|
||||
return saveStackTrace(ex, NullError('$message (Error $ieErrorCode)'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1762,7 +1758,7 @@ Object _unwrapNonDartException(Object ex) {
|
|||
(match = nullLiteralCall.matchTypeError(message)) != null ||
|
||||
(match = undefProperty.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
|
||||
|
|
|
@ -94,8 +94,8 @@ test2() {
|
|||
|
||||
gA = null;
|
||||
gB = null;
|
||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
|
||||
gA = 1;
|
||||
gB = null;
|
||||
|
@ -104,8 +104,8 @@ test2() {
|
|||
|
||||
gA = null;
|
||||
gB = 2;
|
||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
}
|
||||
|
||||
main() {
|
||||
|
|
|
@ -96,8 +96,8 @@ test2() {
|
|||
|
||||
gA = null;
|
||||
gB = null;
|
||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
|
||||
gA = 1;
|
||||
gB = null;
|
||||
|
@ -106,8 +106,8 @@ test2() {
|
|||
|
||||
gA = null;
|
||||
gB = 2;
|
||||
Expect.throws(call2a, checkNSME(r'$and'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'$xor'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2a, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
Expect.throws(call2b, checkNSME(r'Null check'), 'foo2($gA, $gB) NSME');
|
||||
}
|
||||
|
||||
main() {
|
||||
|
|
Loading…
Reference in a new issue