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