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));
        }
Exemple #2
0
        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));
        }
Exemple #4
0
        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;
        }
Exemple #6
0
        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);
 }