IronPython.Compiler.Ast.ComprehensionScope.AddVariables C# (CSharp) Method

AddVariables() private method

private AddVariables ( Microsoft.Scripting.Ast.Ast expression ) : Microsoft.Scripting.Ast.Ast
expression Microsoft.Scripting.Ast.Ast
return Microsoft.Scripting.Ast.Ast
        internal Ast AddVariables(Ast expression) {
            ReadOnlyCollectionBuilder<MSAst.ParameterExpression> locals = new ReadOnlyCollectionBuilder<MSAst.ParameterExpression>();
            MSAst.ParameterExpression localContext = null;
            if (NeedsLocalContext) {
                localContext = _compContext;
                locals.Add(_compContext);
            }

            List<MSAst.Expression> body = new List<MSAst.Expression>();
            CreateVariables(locals, body);

            if (localContext != null) {
                var createLocal = CreateLocalContext(_comprehension.Parent.LocalContext);
                body.Add(Ast.Assign(_compContext, createLocal));
                body.Add(expression);
            } else {
                body.Add(expression);
            }

            return Expression.Block(
                locals, 
                body
            );
        }
    }

Usage Example

 public override Ast Reduce()
 {
     return(_scope.AddVariables(base.Reduce()));
 }