/// <summary> /// Some `finally` clauses may have already been rewritten and extracted to a plain block (<see cref="AsyncExceptionHandlerRewriter"/>). /// The extracted block will have been wrapped as a <see cref="BoundExtractedFinallyBlock"/> so that we can process it as a `finally` block here. /// </summary> public override BoundNode VisitExtractedFinallyBlock(BoundExtractedFinallyBlock extractedFinally) { // Remove the wrapping and append: // if (disposeMode) goto enclosingFinallyOrExitLabel; return(AppendJumpToCurrentFinallyOrExit((BoundStatement)VisitBlock(extractedFinally.FinallyBlock))); }
public override BoundNode VisitExtractedFinallyBlock(BoundExtractedFinallyBlock extractedFinally) { // Remove the wrapping and optionally append: // if (disposeMode) goto currentDisposalLabel; BoundStatement result = VisitFinally(extractedFinally.FinallyBlock); if (_currentDisposalLabel is object) { result = AppendJumpToCurrentDisposalLabel(result); } return(result); }