コード例 #1
0
        private Stmt LoadFieldAddress(Instruction inst)
        {
            var obj  = this.stack.Pop();
            var fRef = ((FieldReference)inst.Operand).FullResolve(this.ctx);
            var expr = new ExprFieldAddress(this.ctx, obj, fRef);

            this.stack.Push(expr);
            return(null);
        }
コード例 #2
0
 protected override ICode VisitFieldAddress(ExprFieldAddress e)
 {
     if (!e.IsStatic)
     {
         this.Visit(e.Obj);
         this.js.Append(".");
     }
     this.js.Append(this.resolver.FieldNames[e.Field]);
     return(e);
 }
コード例 #3
0
        protected virtual ICode VisitFieldAddress(ExprFieldAddress e)
        {
            this.ThrowOnNoOverride();
            var obj = (Expr)this.Visit(e.Obj);

            if (obj != e.Obj)
            {
                return(new ExprFieldAddress(e.Ctx, obj, e.Field));
            }
            else
            {
                return(e);
            }
        }
コード例 #4
0
 protected override ICode VisitFieldAddress(ExprFieldAddress e)
 {
     this.code.Append("@(");
     if (e.IsStatic)
     {
         this.code.Append(e.Field.DeclaringType.FullName);
     }
     else
     {
         this.Visit(e.Obj);
     }
     this.code.Append(".");
     this.code.Append(e.Field.Name);
     this.code.Append(")");
     return(e);
 }
コード例 #5
0
 protected override ICode VisitFieldAddress(ExprFieldAddress e)
 {
     this.fieldAccesses.Add(e.Field);
     return(base.VisitFieldAddress(e));
 }