public override BoundNode VisitPointerElementAccess(BoundPointerElementAccess node) { BoundSpillSequenceBuilder builder = null; var index = VisitExpression(ref builder, node.Index); BoundExpression expression; if (builder == null) { expression = VisitExpression(ref builder, node.Expression); } else { var expressionBuilder = new BoundSpillSequenceBuilder(); expression = VisitExpression(ref expressionBuilder, node.Expression); expression = Spill(expressionBuilder, expression); expressionBuilder.Include(builder); builder = expressionBuilder; } return(UpdateExpression(builder, node.Update(expression, index, node.Checked, node.Type))); }
public override BoundNode VisitPointerElementAccess(BoundPointerElementAccess node) { BoundSpillSequence2 ss = null; var index = VisitExpression(ref ss, node.Index); BoundExpression expression; if (ss == null) { expression = VisitExpression(ref ss, node.Expression); } else { // if the right-hand-side has await, spill the left var ss2 = new BoundSpillSequence2(); expression = VisitExpression(ref ss2, node.Expression); expression = Spill(ss2, expression); ss2.IncludeSequence(ss); ss = ss2; } return(UpdateExpression(ss, node.Update(expression, index, node.Checked, node.Type))); }