示例#1
0
        private TypeInfo Visit(AssignVarNode node, MethodBuilder builder, CodegenContext context)
        {
            context.LastVar = builder.MethodInfo.GetVar(node.VarName);

            if (context.LastVar == null)
            {
                context.LastVar = context.CurrentClass.GetField(node.VarName);
            }

            return(context.LastVar.Type);
        }
示例#2
0
        public override void VisitAssignVarNode(AssignVarNode node)
        {
            node.Expression.Visit(this);
            node.ID.Visit(this);

            var kindAssigment = SyntaxKind.SimpleAssignmentExpression;
            var assignVar     = AssignmentExpression(kindAssigment, expressions.Pop(), expressions.Pop());

            assignVar = GetNodeWithAnnotation(assignVar, node.Location) as AssignmentExpressionSyntax;

            AddStatementToCurrentBlock(ExpressionStatement(assignVar));
        }
示例#3
0
        private void Visit(AssignNode node)
        {
            CommonTree replace = null;
            CommonTree parent  = node.LValue;
            int        index   = node.LValue.ChildIndex;

            var lvalue = node.LValue.Expression;

            if (lvalue is VarNode)
            {
                replace = new AssignVarNode(lvalue as VarNode);
            }
            else if (lvalue is MemberCallNode)
            {
                replace = new AssignMemberCallNode(lvalue as MemberCallNode);
            }


            Replace(parent, replace, index);
        }
示例#4
0
 public virtual void VisitAssignVarNode(AssignVarNode node)
 {
 }