Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(eslint-plugin): [no-floating-promises] check top-level type assertions (and more) #9043
fix(eslint-plugin): [no-floating-promises] check top-level type assertions (and more) #9043
Changes from all commits
2ec68c2
3dd7f67
79fa0f6
01c550d
53e7d0e
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In your summary you wrote
But I don't understand what we gain from that switch
This seems... dangerous - switching to default assuming it's unhandled is probably going to lead to false positives at scale.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TL;DR Concern is valid but I tentatively think this is the right move. Would welcome a second opinion
implementation simplicity and future proofing 🤷 It seems more straightforward, and more correct (IMO), to opt out of flagging behaviors indicated by the docs than it does to opt in to the ones we do want to flag...
Nodes that are handled
await
expressionNodes that require special handling to determine whether they're handled or unhandled (and therefore need to be specified individually no matter what)
void
expressionNodes that are always unhandled (if they result in a promise)
To be sure, I gave this some thought before making this change, and I just couldn't think of any scenarios where this would really be problematic... Every case I thought of seemed to be beneficial. Just to be sure we're on the same page, that code is only reached if the expression results in a promise/thenable.
That does mean that this code will start flagging now
and I think that makes sense, given
already flags (of course, this touches upon #8433). But it's not like we're suddenly going to flag every object literal; just thenable ones.
I think the
yield
cases added to the tests make sense to flag as well....Note that we dogfood
no-floating-promises
in this repo and this change didn't result in any new reports.My conclusion - false positives are a very valid concern to explore, but for now I do think that this change is safe/beneficial. Would definitely be open to being proven wrong, though, especially if a good counterexample comes to mind! 🙂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These changes are just because
declare
is not syntactically allowed in that position (it's required to be at top level). Just some hygiene, not relevant to the changes.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
surprisingly, assignments without a declaration were not tested for