diff src/luan/impl/LuanCompiler.java @ 1335:e0cf0d108a77

major cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 14 Feb 2019 03:10:45 -0700
parents 25746915a241
children 8d95711f6615
line wrap: on
line diff
--- a/src/luan/impl/LuanCompiler.java	Tue Feb 12 22:53:57 2019 -0700
+++ b/src/luan/impl/LuanCompiler.java	Thu Feb 14 03:10:45 2019 -0700
@@ -4,6 +4,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Map;
 import java.util.HashMap;
+import luan.Luan;
 import luan.LuanFunction;
 import luan.LuanException;
 import luan.LuanTable;
@@ -15,14 +16,14 @@
 public final class LuanCompiler {
 	private static final Map<String,WeakReference<Class>> map = new HashMap<String,WeakReference<Class>>();
 
-	public static LuanFunction compile(String sourceText,String sourceName,LuanTable env) throws LuanException {
+	public static LuanFunction compile(Luan luan,String sourceText,String sourceName,LuanTable env) throws LuanException {
 		Class fnClass = env==null ? getClass(sourceText,sourceName) : getClass(sourceText,sourceName,env);
 		boolean javaOk = false;
 		if( env != null && env.closure != null )
 			javaOk = env.closure.javaOk;
 		LuanClosure closure;
 		try {
-			closure = (LuanClosure)fnClass.getConstructor(Boolean.TYPE,String.class).newInstance(javaOk,sourceName);
+			closure = (LuanClosure)fnClass.getConstructor(Luan.class,Boolean.TYPE,String.class).newInstance(luan,javaOk,sourceName);
 		} catch(NoSuchMethodException e) {
 			throw new RuntimeException(e);
 		} catch(InstantiationException e) {
@@ -32,8 +33,8 @@
 		} catch(InvocationTargetException e) {
 			throw new RuntimeException(e);
 		}
-		closure.upValues[0].o = JavaLuan.javaFn;
-		closure.upValues[1].o = PackageLuan.requireFn;
+		closure.upValues[0].o = JavaLuan.javaFn(luan);
+		closure.upValues[1].o = PackageLuan.requireFn(luan);
 		if( env != null ) {
 			closure.upValues[2].o = env;
 			env.closure = closure;