sdk icon indicating copy to clipboard operation
sdk copied to clipboard

Confusing error message when dynamically calling a null value

Open nshahan opened this issue 3 years ago • 1 comments

dcall(f, args, [@undefined named]) => _checkAndCall(
    f, null, JS('', 'void 0'), null, args, named, JS('', 'f.name'));

dgcall(f, typeArgs, args, [@undefined named]) => _checkAndCall(f, null,
    JS('', 'void 0'), typeArgs, args, named, JS('', "f.name || 'call'"));

Both of these methods attempt to pass f.name as the displayName argument to _checkAndCall(). When f is null the error messages are misleading and the code in _checkAndCall() meant to handle null and provide a more helpful error message is not being executed.

ex:

Uncaught TypeError: Cannot read properties of null (reading 'name')
    at Object.dcall (dart_sdk.js:4914:69)
    at Object.main (test_05.js:37:10)
    at test_05.html:19:17
    at Object.execCb (require.js:1696:33)
    at Module.check (require.js:883:51)
    at Module.<anonymous> (require.js:1139:34)
    at require.js:134:23
    at require.js:1189:21
    at each (require.js:59:31)
    at Module.emit (require.js:1188:17)
    at Module.check (require.js:938:30)
    at Module.<anonymous> (require.js:1139:34)
    at require.js:134:23
    at require.js:1189:21
    at each (require.js:59:31)
    at Module.emit (require.js:1188:17)
    at Module.check (require.js:938:30)
    at Module.enable (require.js:1176:22)
    at Module.init (require.js:788:26)
    at callGetModule (require.js:1203:63)
    at Object.completeLoad (require.js:1590:21)
    at HTMLScriptElement.onScriptLoad (require.js:1717:29)

nshahan avatar Aug 09 '22 21:08 nshahan

We should add additional test cases to https://github.com/dart-lang/sdk/blob/7e86f2e71cdfa17761ae418ae471f49fb0b72269/tests/dartdevc/no_such_method_errors_test.dart

nshahan avatar Aug 09 '22 21:08 nshahan