-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Fix line breakpoints for return statements without a value
#17179
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 line breakpoints for return statements without a value
#17179
Conversation
Fixes PowerShell#17081 Adds an explicit call to UpdatePosition when a return statement does not include a pipeline.
daxian-dbw
left a comment
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.
LGTM with a comment
| '@ | ||
| $return_script_2 = @' | ||
| return 10 | ||
| '@ |
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.
Can you please add one more test case to cover return statement in a trap block?
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.
Done! Also added disassembly for traps in the description.
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.
Probably should have waited for the tests to pass before saying that. Looking into the failure
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.
Okay it really does hit twice. Apparently when a trap is present that hits a breakpoint when it's registered. So even with this:
'something'
trap {
'something else'
return 'testing'
}
throwIf you put a breakpoint on every line and run it, line 4 hits a breakpoint first, then line 1, then 8, then 5. That seems like a bug but for another time. I've added another line before the return in the trap test so that doesn't interfere with the result.
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.
Thanks for the additional fix. Will take a look today.
|
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
|
🎉 Handy links: |
Fixes #17081
PR Summary
Adds an explicit call to
UpdatePositionwhen areturnstatement does not include a pipeline.Codegen before change:
Codegen after change:
Trap compilation (click to expand)
Turns out there wasn't an easy way to view disassembly of a trap with
ScriptBlockDisassembler. So that took a minute to figure out how to do easily:Code to generate (click to expand)
Codegen before:
Codegen after:
PR Context
PR Checklist
.h,.cpp,.cs,.ps1and.psm1files have the correct copyright headerWIP:or[ WIP ]to the beginning of the title (theWIPbot will keep its status check atPendingwhile the prefix is present) and remove the prefix when the PR is ready.(which runs in a different PS Host).