Mercurial Hosting > luan
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;