public override BoundNode VisitSpillSequence(BoundSpillSequence node)
        {
            ReadOnlyArray <BoundStatement> statements = this.VisitList(node.Statements);
            BoundExpression value = (BoundExpression)this.Visit(node.Value);
            TypeSymbol      type  = this.VisitType(node.Type);

            return(node.Update(node.Locals, node.SpillTemps, node.SpillFields, statements, value, type));
        }
        public override BoundNode VisitSpillSequence(BoundSpillSequence node)
        {
            ReadOnlyArray <BoundStatement> statements = (ReadOnlyArray <BoundStatement>) this.VisitList(node.Statements);
            BoundExpression value = (BoundExpression)this.Visit(node.Value);
            TypeSymbol      type  = this.VisitType(node.Type);

            if (value.Kind != BoundKind.SpillSequence)
            {
                return(node.Update(node.Locals, node.SpillTemps, node.SpillFields, statements, value, type));
            }

            var valAwait = (BoundSpillSequence)value;

            return(node.Update(
                       node.Locals.Concat(valAwait.Locals),
                       node.SpillTemps.Concat(valAwait.SpillTemps),
                       node.SpillFields,
                       statements.Concat(valAwait.Statements),
                       valAwait.Value,
                       valAwait.Type));
        }
 private static BoundSpillSequence RewriteSpillSequence(BoundSpillSequence spill, BoundExpression value)
 {
     return(spill.Update(spill.Locals, spill.SpillTemps, spill.SpillFields, spill.Statements, value, value.Type));
 }