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)); }