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;
 };