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.
Dongbo Wang (daxian-dbw)
left a comment
There was a problem hiding this comment.
LGTM with a comment
| '@ | ||
| $return_script_2 = @' | ||
| return 10 | ||
| '@ |
There was a problem hiding this comment.
Can you please add one more test case to cover return statement in a trap block?
There was a problem hiding this comment.
Done! Also added disassembly for traps in the description.
There was a problem hiding this comment.
Probably should have waited for the tests to pass before saying that. Looking into the failure
There was a problem hiding this comment.
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.
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).