private IteratorFinallyFrame PushFrame(BoundTryStatement statement) { var state = _nextFinalizeState--; var finallyMethod = MakeSynthesizedFinally(state); var newFrame = new IteratorFinallyFrame( _currentFinallyFrame, state, finallyMethod, _yieldsInTryAnalysis.Labels(statement) ); newFrame.AddState(state); _currentFinallyFrame = newFrame; return(newFrame); }
private IteratorFinallyFrame PushFrame(BoundTryStatement statement) { var syntax = statement.Syntax; if (slotAllocatorOpt?.TryGetPreviousStateMachineState(syntax, out var finalizeState) != true) { finalizeState = _nextFinalizeState--; } AddStateDebugInfo(syntax, finalizeState); var finallyMethod = MakeSynthesizedFinally(finalizeState); var newFrame = new IteratorFinallyFrame(_currentFinallyFrame, finalizeState, finallyMethod, _yieldsInTryAnalysis.Labels(statement)); newFrame.AddState(finalizeState); _currentFinallyFrame = newFrame; return(newFrame); }