diff core/src/luan/impl/LuanCompiler.java @ 194:08df375e2e5f

remove EnvGetter git-svn-id: https://luan-java.googlecode.com/svn/trunk@195 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Wed, 02 Jul 2014 04:52:25 +0000
parents 3dcb0f9bee82
children 24ede40ee0aa
line wrap: on
line diff
--- a/core/src/luan/impl/LuanCompiler.java	Wed Jul 02 03:27:35 2014 +0000
+++ b/core/src/luan/impl/LuanCompiler.java	Wed Jul 02 04:52:25 2014 +0000
@@ -13,7 +13,10 @@
 	private LuanCompiler() {}  // never
 
 	public static LuanFunction compile(LuanState luan,LuanSource src,LuanTable env,boolean allowExpr) throws LuanException {
-		UpValue.Getter envGetter = env!=null ? new UpValue.ValueGetter(env) : new UpValue.EnvGetter();
+		boolean passedEnv = env != null;
+		if( !passedEnv )
+			env = new LuanTable();
+		UpValue.Getter envGetter = new UpValue.ValueGetter(env);
 		LuanParser parser = new LuanParser(src,envGetter);
 		for( Map.Entry<Object,Object> entry : luan.global() ) {
 			Object key = entry.getKey();
@@ -21,7 +24,7 @@
 				parser.addVar( (String)key, entry.getValue() );
 		}
 		FnDef fnDef = parse(luan,parser,allowExpr);
-		if( env != null )
+		if( passedEnv )
 			return new Closure((LuanStateImpl)luan,fnDef);
 		final Closure c = new Closure((LuanStateImpl)luan,fnDef);
 		return new LuanFunction() {