private BoundStatement UpdateStatement(BoundSpillSequenceBuilder builder, BoundStatement statement) { if (builder == null) { Debug.Assert(statement != null); return(statement); } Debug.Assert(builder.Value == null); if (statement != null) { builder.AddStatement(statement); } var result = _F.Block(builder.GetLocals(), builder.GetStatements()); builder.Free(); return(result); }
private BoundStatement UpdateStatement(BoundSpillSequenceBuilder builder, BoundStatement statement, bool substituteTemps) { if (builder == null) { // statement doesn't contain any await Debug.Assert(!substituteTemps || _tempSubstitution.Count == 0); Debug.Assert(statement != null); return(statement); } Debug.Assert(builder.Value == null); if (statement != null) { builder.AddStatement(statement); } var substituterOpt = (substituteTemps && _tempSubstitution.Count > 0) ? new LocalSubstituter(_tempSubstitution, RecursionDepth) : null; var result = _F.Block(builder.GetLocals(), builder.GetStatements(substituterOpt)); builder.Free(); return(result); }