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

polish go1.23 range-over-func UX #3733

Open
hyangah opened this issue May 24, 2024 · 1 comment
Open

polish go1.23 range-over-func UX #3733

hyangah opened this issue May 24, 2024 · 1 comment

Comments

@hyangah
Copy link
Contributor

hyangah commented May 24, 2024

Tested with the current master:

Screenshot 2024-05-24 at 10 27 25 AM

UX improvement candidates:

@aarzilli
Copy link
Member

See #3732 (wip)

aarzilli added a commit to aarzilli/delve that referenced this issue May 28, 2024
Initial support for stepping in functions that use the new
range-over-func statement in go1.23.
Does not support:

- inlining
- viewing variables of the enclosing function from a range-over-func
  body closure
- the correct way to find the enclosing function from a range-over-func
  body closure (but it should work most of the time).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue May 28, 2024
Initial support for stepping in functions that use the new
range-over-func statement in go1.23.
Does not support:

- inlining
- viewing variables of the enclosing function from a range-over-func
  body closure
- the correct way to find the enclosing function from a range-over-func
  body closure (but it should work most of the time).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue May 29, 2024
Initial support for stepping in functions that use the new
range-over-func statement in go1.23.
Does not support:

- inlining
- viewing variables of the enclosing function from a range-over-func
  body closure
- the correct way to find the enclosing function from a range-over-func
  body closure (but it should work most of the time).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue May 30, 2024
Because of how range-over-func is implemented it is difficult to
determine the set of visible local variables during expression
compilation (i.e. it is difficulto to keep the HasLocal function
correct).
This commit moves that logic from expression compilation to expression
evaluation.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue May 30, 2024
Because of how range-over-func is implemented it is difficult to
determine the set of visible local variables during expression
compilation (i.e. it is difficulto to keep the HasLocal function
correct).
This commit moves that logic from expression compilation to expression
evaluation.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue May 30, 2024
Initial support for stepping in functions that use the new
range-over-func statement in go1.23.
Does not support:

- inlining
- viewing variables of the enclosing function from a range-over-func
  body closure
- the correct way to find the enclosing function from a range-over-func
  body closure (but it should work most of the time).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue May 30, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates go-delve#3733
derekparker pushed a commit that referenced this issue Jun 4, 2024
Initial support for stepping in functions that use the new
range-over-func statement in go1.23.
Does not support:

- inlining
- viewing variables of the enclosing function from a range-over-func
  body closure
- the correct way to find the enclosing function from a range-over-func
  body closure (but it should work most of the time).

Updates #3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 5, 2024
Because of how range-over-func is implemented it is difficult to
determine the set of visible local variables during expression
compilation (i.e. it is difficulto to keep the HasLocal function
correct).
This commit moves that logic from expression compilation to expression
evaluation.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 13, 2024
Because of how range-over-func is implemented it is difficult to
determine the set of visible local variables during expression
compilation (i.e. it is difficulto to keep the HasLocal function
correct).
This commit moves that logic from expression compilation to expression
evaluation.

Updates go-delve#3733
derekparker pushed a commit that referenced this issue Jun 14, 2024
Because of how range-over-func is implemented it is difficult to
determine the set of visible local variables during expression
compilation (i.e. it is difficulto to keep the HasLocal function
correct).
This commit moves that logic from expression compilation to expression
evaluation.

Updates #3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 15, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 15, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 17, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 17, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 18, 2024
Extends support for stepping through range-over-func statement to
programs compiled with inlining enabled.

Updates go-delve#3733

range-over-func
'rangeoverfunc' on '4b628b81'.
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 18, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 19, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 20, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 20, 2024
Extends support for stepping through range-over-func statement to
programs compiled with inlining enabled.

Updates go-delve#3733

range-over-func
'rangeoverfunc' on '4b628b81'.
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 20, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 20, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 21, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
derekparker pushed a commit that referenced this issue Jun 24, 2024
Supports viewing local variables and evaluating expressions correctly
when range-over-func is used.
The same limitations that the previous commit on this line had still
apply (no inlining, wrong way to identify the range parent in some
cases).

Updates #3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 25, 2024
Extends support for stepping through range-over-func statement to
programs compiled with inlining enabled.

Updates go-delve#3733

range-over-func
'rangeoverfunc' on '4b628b81'.
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 25, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 25, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 25, 2024
Extends support for stepping through range-over-func statement to
programs compiled with inlining enabled.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 25, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jun 25, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
derekparker pushed a commit that referenced this issue Jul 1, 2024
…ng (#3755)

Extends support for stepping through range-over-func statement to
programs compiled with inlining enabled.

Updates #3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 2, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 2, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 2, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 2, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 8, 2024
Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates go-delve#3733
derekparker pushed a commit that referenced this issue Jul 11, 2024
…#3763)

* proc: use .closureptr for stepping through range-over-func statements

Uses special variables .closureptr and #yieldN to correctly identify
the parent frame of a range-over-func body closure call.

Updates #3733

* fix
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 12, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
aarzilli added a commit to aarzilli/delve that referenced this issue Jul 12, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates go-delve#3733
derekparker pushed a commit that referenced this issue Jul 15, 2024
Set a breakpoint on the return address of the current function, if it's
a range-over-func body, and clear the stepping breakpoints for the
current function (except the entry one) when its hit.

Without this what can happen is the following:

1. the range-over-func body finishes and returns to the iterator
2. the iterator calls back into the range-over-func body
3. a stepping breakpoint that's inside the prologue gets hit

Updates #3733
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants