protected override ICode VisitJsByRefWrapper(ExprJsByRefWrapper e) { this.js.Append("("); foreach (var byRef in e.ByRefs) { this.Visit(byRef.Item2); this.js.Append(" = ["); this.Visit(byRef.Item1); this.js.Append("], "); } this.Visit(e.ResultTemp); this.js.Append(" = "); this.Visit(e.Expr); foreach (var byRef in e.ByRefs) { this.js.Append(", "); this.Visit(byRef.Item1); this.js.Append(" = "); this.Visit(byRef.Item2); this.js.Append("[0]"); } this.js.Append(", "); this.Visit(e.ResultTemp); this.js.Append(")"); return(e); }
protected virtual ICode VisitJsByRefWrapper(ExprJsByRefWrapper e) { this.ThrowOnNoOverride(); var expr = (Expr)this.Visit(e.Expr); // These visits are required so the variable namer finds them this.Visit(e.ResultTemp); foreach (var byRef in e.ByRefs) { this.Visit(byRef.Item1); this.Visit(byRef.Item2); } if (expr != e.Expr) { return(new ExprJsByRefWrapper(e.Ctx, expr, e.ResultTemp, e.ByRefs)); } else { return(e); } }
protected virtual ICode VisitJsByRefWrapper(ExprJsByRefWrapper e) { this.ThrowOnNoOverride(); var expr = (Expr)this.Visit(e.Expr); // These visits are required so the variable namer finds them this.Visit(e.ResultTemp); foreach (var byRef in e.ByRefs) { this.Visit(byRef.Item1); this.Visit(byRef.Item2); } if (expr != e.Expr) { return new ExprJsByRefWrapper(e.Ctx, expr, e.ResultTemp, e.ByRefs); } else { return e; } }
protected override ICode VisitJsByRefWrapper(ExprJsByRefWrapper e) { this.js.Append("("); foreach (var byRef in e.ByRefs) { this.Visit(byRef.Item2); this.js.Append(" = ["); this.Visit(byRef.Item1); this.js.Append("], "); } this.Visit(e.ResultTemp); this.js.Append(" = "); this.Visit(e.Expr); foreach (var byRef in e.ByRefs) { this.js.Append(", "); this.Visit(byRef.Item1); this.js.Append(" = "); this.Visit(byRef.Item2); this.js.Append("[0]"); } this.js.Append(", "); this.Visit(e.ResultTemp); this.js.Append(")"); return e; }
protected override ICode VisitJsByRefWrapper(ExprJsByRefWrapper e) { this.code.Append("byref-wrapper("); this.Visit(e.Expr); this.code.Append(")"); return e; }