protected override ICode VisitElementAddress(ExprElementAddress e) { this.Visit(e.Array); this.js.Append("["); this.Visit(e.Index); this.js.Append("]"); return(e); }
private Stmt LoadElema(Instruction inst) { var index = this.stack.Pop(); var array = this.stack.Pop(); var elementType = ((TypeReference)inst.Operand).FullResolve(this.ctx); var expr = new ExprElementAddress(this.ctx, array, index, elementType); this.stack.Push(expr); return(null); }
protected virtual ICode VisitElementAddress(ExprElementAddress e) { this.ThrowOnNoOverride(); var array = (Expr)this.Visit(e.Array); var index = (Expr)this.Visit(e.Index); if (array != e.Array || index != e.Index) { return(new ExprElementAddress(e.Ctx, array, index, ((PointerType)e.Type).ElementType)); } else { return(e); } }