You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support in the compiler for breakpoints within expressions, for example
On the when clause and arm expression of a switch expression;
On each initializer of an object initializer expression;
On the second and third operands of a conditional expression; and
On the second operand of &&, ||, and ??.
@tmat Has analyzed what we need to produce to make this happen, and it requires we produce a special kind of synthetic sequence point at the end of the instrumented subexpression to direct the debugger's attention back to the enclosing statement. The synthetic sequence point is produced as a sequence of existing sequence points and IL to produce the intended result:
Goto L
SequencePoint SpanOfEnclosingStatement
nop
SequencePoint Hidden
L:
The proposal is to represent this as a single bound node to ensure we will emit the (unreachable) nop instruction.
The text was updated successfully, but these errors were encountered:
it might be obvious, but it might be worth adding a comment to the compiler on the implementation that we have to make sure that the IL offset of the unreachable [SequencePoint Enclosing] is greater than the IL offset of the sequence point that actually represents the enclosing "statement".
this will allow the debugger to disambiguate between these two sequence points that have the same span but different IL offsets
@gafter the issue names 4 constructs to be supported but the PR seems to be specifically about switch expressions only, should this be kept open or are these points tracked separately for later?
This issue represents adding support in the compiler internals necessary for instrumenting expressions. Actually instrumenting specific expression forms will be tracked by separate issues and decided separately.
Add support in the compiler for breakpoints within expressions, for example
&&
,||
, and??
.@tmat Has analyzed what we need to produce to make this happen, and it requires we produce a special kind of synthetic sequence point at the end of the instrumented subexpression to direct the debugger's attention back to the enclosing statement. The synthetic sequence point is produced as a sequence of existing sequence points and IL to produce the intended result:
The proposal is to represent this as a single bound node to ensure we will emit the (unreachable) nop instruction.
The text was updated successfully, but these errors were encountered: