public override BoundNode VisitGotoStatement(BoundGotoStatement node) { BoundExpression caseExpressionOpt = (BoundExpression)this.Visit(node.CaseExpressionOpt); BoundLabel labelExpressionOpt = (BoundLabel)this.Visit(node.LabelExpressionOpt); var proxyLabel = _currentAwaitFinallyFrame.ProxyLabelIfNeeded(node.Label); return(node.Update(proxyLabel, caseExpressionOpt, labelExpressionOpt)); }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { BoundExpression caseExpressionOpt = (BoundExpression)this.Visit(node.CaseExpressionOpt); BoundLabel labelExpressionOpt = (BoundLabel)this.Visit(node.LabelExpressionOpt); var proxyLabel = _currentFinallyFrame.ProxyLabelIfNeeded(node.Label); Debug.Assert(node.Label == proxyLabel || !(F.CurrentFunction is IteratorFinallyMethodSymbol), "should not be proxying branches in finally"); return(node.Update(proxyLabel, caseExpressionOpt, labelExpressionOpt)); }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because because this expression // would not need to be pushed to the stack. BoundExpression caseExpressionOpt = null; // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because because this expression // would not need to be pushed to the stack. BoundLabel labelExpressionOpt = null; return AddSequencePoint(node.Update(node.Label, caseExpressionOpt, labelExpressionOpt)); }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because because this expression // would not need to be pushed to the stack. BoundExpression caseExpressionOpt = null; // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because because this expression // would not need to be pushed to the stack. BoundLabel labelExpressionOpt = null; return(AddSequencePoint(node.Update(node.Label, caseExpressionOpt, labelExpressionOpt))); }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because this expression // would not need to be pushed to the stack. BoundExpression caseExpressionOpt = null; // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because this expression // would not need to be pushed to the stack. BoundLabel labelExpressionOpt = null; BoundStatement result = node.Update(node.Label, caseExpressionOpt, labelExpressionOpt); if (this.Instrument && !node.WasCompilerGenerated) { result = _instrumenter.InstrumentGotoStatement(node, result); } return result; }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because this expression // would not need to be pushed to the stack. BoundExpression caseExpressionOpt = null; // we are removing the label expressions from the bound tree because this expression is no longer needed // for the emit phase. It is even doing harm to e.g. the stack depth calculation because this expression // would not need to be pushed to the stack. BoundLabel labelExpressionOpt = null; BoundStatement result = node.Update(node.Label, caseExpressionOpt, labelExpressionOpt); if (this.Instrument && !node.WasCompilerGenerated) { result = _instrumenter.InstrumentGotoStatement(node, result); } return(result); }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { BoundExpression caseExpressionOpt = (BoundExpression)this.Visit(node.CaseExpressionOpt); BoundLabel labelExpressionOpt = (BoundLabel)this.Visit(node.LabelExpressionOpt); var proxyLabel = _currentFinallyFrame.ProxyLabelIfNeeded(node.Label); Debug.Assert(node.Label == proxyLabel || !(F.CurrentMethod is IteratorFinallyMethodSymbol), "should not be proxying branches in finally"); return node.Update(proxyLabel, caseExpressionOpt, labelExpressionOpt); }
public override BoundNode VisitGotoStatement(BoundGotoStatement node) { BoundExpression caseExpressionOpt = (BoundExpression)this.Visit(node.CaseExpressionOpt); BoundLabel labelExpressionOpt = (BoundLabel)this.Visit(node.LabelExpressionOpt); var proxyLabel = _currentAwaitFinallyFrame.ProxyLabelIfNeeded(node.Label); return node.Update(proxyLabel, caseExpressionOpt, labelExpressionOpt); }