Skip to content
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

Prevent empty-block on range over channel #818

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

avorima
Copy link
Contributor

@avorima avorima commented May 3, 2023

An empty loop over channels is a common pattern:
https://sourcegraph.com/search?q=context%3Aglobal+lang%3AGo+for%5C+range%5C+.*%5C+%5C%7B%5Cs*%5C%7D&patternType=regexp&sm=1&groupBy=repo
https://sourcegraph.com/search?q=context%3Aglobal+lang%3AGo+for%5C+range%5C+.*%5C+%5C%7B%5Cs*%5C%7D+repo%3Agithub.com%2Fgolang%2Fgo&patternType=regexp&sm=1&groupBy=repo

Since the given AST doesn't really provide much type info I had to resort to finding the declaration/definition of the object to figure out whether for range was actually looping over a channel.
This doesn't feel very reliable, but it works for the test data. I'll be happy to extend the checks if an issue gets reported.

I tried re-adding file.Pkg.TypeCheck() from #415, but didn't notice any difference in the AST.

Closes #386

@avorima avorima marked this pull request as ready for review May 3, 2023 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Incorrectly identifies channel draining as "empty code block"
1 participant