Thanks to visit codestin.com
Credit goes to github.com

Skip to content

fixes blocking when using function literals #956

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

Closed
wants to merge 1 commit into from

Conversation

FrankReh
Copy link
Contributor

When a function literal is used that calls another function and
that other function has yet to be analyzed, the call site for
the function literal is not retained, so it's not processed later,
so the function that was calling the function literal is not made
blocking itself, when it should be.

A new field is used in info.go. It's name kept short to keep gofmt
from readjusting surrounding lines. It's not the most descriptive name
as it stands.

A short test case that demonstrates the problem can be found in
issue #955.

Fixes #955.

When a function literal is used that calls another function and
that other function has yet to be analyzed, the call site for
the function literal is not retained, so it's not processed later,
so the function that was calling the function literal is not made
blocking itself, when it should be.

A new field is used in info.go. It's name kept short to keep gofmt
from readjusting surrounding lines. It's not the most descriptive name
as it stands.

A short test case that demonstrates the problem can be found in
issue gopherjs#955.

Fixes gopherjs#955.
@nevkontakte
Copy link
Member

Hi @FrankReh, we are finally working through the backlog of issues and pull requests. Sorry it took so long!

Can you please rebase this PR on the latest version of master? Also it would be nice to add your test case tests package to make sure a regression doesn't happen. https://github.com/gopherjs/gopherjs/blob/master/tests/misc_test.go would probably be a good place for it.

@nevkontakte nevkontakte self-requested a review October 23, 2021 17:36
nevkontakte added a commit to nevkontakte/gopherjs that referenced this pull request Apr 19, 2022
When a function literal is used that calls another function and
that other function has yet to be analyzed, the call site for
the function literal is not retained, so it's not processed later,
so the function that was calling the function literal is not made
blocking itself, when it should be.

This change makes blocking status propagate through any number of
intermediate literal function calls.

This is a rebase of gopherjs#956.

Fixes gopherjs#955.

Co-authored-by: FrankReh
nevkontakte added a commit to nevkontakte/gopherjs that referenced this pull request Apr 19, 2022
When a function literal is used that calls another function and
that other function has yet to be analyzed, the call site for
the function literal is not retained, so it's not processed later,
so the function that was calling the function literal is not made
blocking itself, when it should be.

This change makes blocking status propagate through any number of
intermediate literal function calls.

This is a rebase of gopherjs#956.

Fixes gopherjs#955.

Co-authored-by: Frank Rehwinkel <[email protected]>
@nevkontakte
Copy link
Member

@FrankReh I went ahead and rebased this change myself as #1115. Thank you for your contribution and providing a minimal reproduction example. It made investigating and fixing the bug a lot easier for me. I will close this PR in favor of #1115.

@nevkontakte nevkontakte removed their request for review April 19, 2022 14:17
@nevkontakte nevkontakte removed their assignment Apr 19, 2022
flimzy pushed a commit that referenced this pull request Apr 19, 2022
When a function literal is used that calls another function and
that other function has yet to be analyzed, the call site for
the function literal is not retained, so it's not processed later,
so the function that was calling the function literal is not made
blocking itself, when it should be.

This change makes blocking status propagate through any number of
intermediate literal function calls.

This is a rebase of #956.

Fixes #955.

Co-authored-by: Frank Rehwinkel <[email protected]>
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.

compiler/analysis/info.go function literal call site not recorded for later marking
2 participants