quick-lint/quick-lint-js

incorrect diagnostic: `using a '.' after a '?.' might fail`

vegerot opened this issue · 3 comments

minimal example:

undefined?.a.b

quick-lint reports: using a '.' after a '?.' might fail, since '?.' might return 'undefined'., however this is not true.

Running the above code shows that optional chaining short-circuits the entire property access expression to undefined, not just the first property access.

❯ deno
Deno 1.39.4
exit using ctrl+d, ctrl+c, or close()
REPL is running with all permissions allowed.
To specify permissions, run `deno repl` with allow flags.
> undefined?.a.b.c.d
undefined

idk if there's a "correct" version of this diagnostic, or if we should just delete the whole thing

A better version of this diagnostic would be to check for non-null assertions, which are incorrect.

undefined?.a!.b

Fixed in Git commit 434d085. I will ship the fix in version 3.2.0.

Fix released in version 3.2.0.