Mercurial > repos > tabletprog
diff interp.js @ 273:0dc7322590da
Make import:from actually work. Fix some macro bugs. Add a cpointer primitive type for storing an opaque pointer to a C object.
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 20 Jul 2014 00:12:43 -0700 |
parents | 08081b0a9382 |
children | 23b52d2d05a0 |
line wrap: on
line diff
--- a/interp.js Sat Jul 19 20:18:34 2014 -0700 +++ b/interp.js Sun Jul 20 00:12:43 2014 -0700 @@ -757,14 +757,15 @@ for (var i = 0; i < this.args.length; i++) { env.syms[this.args[i].cleanName()] = {}; } + var outexprs = [] for (var i = 0; i < this.expressions.length; i++) { var expr = this.expressions[i]; if (expr instanceof assignment) { if (expr.expression instanceof funcall && expr.expression.name == 'macro:') { - env.defMacro(expr.symbol.name, exp.expression.args[0].eval(env)); + env.defMacro(expr.symbol.name, expr.expression.args[0].eval(env)); } else { env.syms[expr.symbol.cleanName()] = {}; - this.expressions[i] = expr.macroexpand(env); + outexprs.push(expr.macroexpand(env)); try { if (this.expressions[i].expression.isconstant()) { env.syms[expr.symbol.cleanName()] = this.expressions[i].expression.eval(env); @@ -780,9 +781,10 @@ } } } else { - this.expressions[i] = expr.macroexpand(env); + outexprs.push(expr.macroexpand(env)); } } + this.expressions = outexprs; return this; };