コード例 #1
0
        protected override Expression VisitExtension(Expression node)
        {
            if (node is YieldExpression ||
                node is GeneratorExpression ||
                node is FinallyFlowControlExpression)
            {
                // These should be rewritten last, when doing finaly compilation
                // for now, just walk them so we can find other nodes
                return(base.VisitExtension(node));
            }

            GlobalVariableExpression global = node as GlobalVariableExpression;

            if (global != null)
            {
                return(RewriteGet(global));
            }

            CodeContextExpression cc = node as CodeContextExpression;

            if (cc != null)
            {
                return(_context);
            }

            CodeContextScopeExpression ccs = node as CodeContextScopeExpression;

            if (ccs != null)
            {
                return(Rewrite(ccs));
            }

            AssignmentExtensionExpression aee = node as AssignmentExtensionExpression;

            if (aee != null)
            {
                return(Rewrite(aee));
            }

            // Must remove extension nodes because they could contain
            // one of the above node types. See, e.g. DeleteUnboundExpression
            return(Visit(node.ReduceExtensions()));
        }
コード例 #2
0
 protected internal virtual void PostWalk(CodeContextExpression node) { }
コード例 #3
0
 // CodeContextExpression
 protected internal virtual bool Walk(CodeContextExpression node) { return true; }
コード例 #4
0
 protected internal virtual void PostWalk(CodeContextExpression node)
 {
 }
コード例 #5
0
 // CodeContextExpression
 protected internal virtual bool Walk(CodeContextExpression node)
 {
     return(true);
 }