diff core/src/luan/modules/PackageLuan.java @ 503:92c3d22745b8

make _ENV optional
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 20 May 2015 23:24:46 -0600
parents 2e79b47d02a2
children f1601a4ce1aa
line wrap: on
line diff
--- a/core/src/luan/modules/PackageLuan.java	Tue May 19 17:57:20 2015 -0600
+++ b/core/src/luan/modules/PackageLuan.java	Wed May 20 23:24:46 2015 -0600
@@ -49,12 +49,16 @@
 				String src = read(luan,modName,true);
 				if( src == null )
 					return null;
-				LuanTable env = new LuanTable();
-				LuanFunction loader = BasicLuan.load(luan,src,modName,env,false);
-				Object result = Luan.first(
+				LuanFunction loader = BasicLuan.load(luan,src,modName,null,false);
+				mod = Luan.first(
 					luan.call(loader,"<require \""+modName+"\">",new Object[]{modName})
 				);
-				mod = result!=null ? result : env;
+				if( mod == null ) {
+					mod = loaded.rawGet(modName);
+					if( mod != null )
+						return mod;
+					throw luan.exception( "module '"+modName+"' returned nil" );
+				}
 			}
 			loaded.rawPut(modName,mod);
 		}