changeset 186:cf939124461a

don't import modules by default git-svn-id: https://luan-java.googlecode.com/svn/trunk@187 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Thu, 26 Jun 2014 00:36:50 +0000
parents 5f50dba8ac7d
children 1cb298d918b2
files core/src/luan/LuanState.java core/src/luan/cmd_line.luan core/src/luan/impl/LuanParser.java core/src/luan/impl/SetTableEntry.java core/src/luan/init.luan core/src/luan/modules/PackageLuan.java web/src/luan/modules/web/Web_server.luan
diffstat 7 files changed, 23 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
diff -r 5f50dba8ac7d -r cf939124461a core/src/luan/LuanState.java
--- a/core/src/luan/LuanState.java	Wed Jun 25 07:06:16 2014 +0000
+++ b/core/src/luan/LuanState.java	Thu Jun 26 00:36:50 2014 +0000
@@ -122,19 +122,9 @@
 		return t.put(a[a.length-1],value);
 	}
 
-	public final void globalImport(String modName) {
-		try {
-			Object mod = PackageLuan.require(this,modName);
-			global.put(modName,mod);
-		} catch(LuanException e) {
-			throw new RuntimeException(e);
-		}
-	}
-
 	public static LuanState newStandard() {
 		try {
 			LuanState luan = LuanCompiler.newLuanState();
-			luan.globalImport("Package");
 			BasicLuan.do_file(luan,"java:luan/init.luan");
 			return luan;
 		} catch(LuanException e) {
diff -r 5f50dba8ac7d -r cf939124461a core/src/luan/cmd_line.luan
--- a/core/src/luan/cmd_line.luan	Wed Jun 25 07:06:16 2014 +0000
+++ b/core/src/luan/cmd_line.luan	Thu Jun 26 00:36:50 2014 +0000
@@ -1,3 +1,6 @@
+import "String"
+import "Table"
+
 
 local standalone_usage = [=[
 usage: java luan.CmdLine [options] [script [args]]
diff -r 5f50dba8ac7d -r cf939124461a core/src/luan/impl/LuanParser.java
--- a/core/src/luan/impl/LuanParser.java	Wed Jun 25 07:06:16 2014 +0000
+++ b/core/src/luan/impl/LuanParser.java	Thu Jun 26 00:36:50 2014 +0000
@@ -9,6 +9,7 @@
 import luan.Luan;
 import luan.LuanState;
 import luan.LuanSource;
+import luan.modules.PackageLuan;
 
 
 final class LuanParser {
@@ -345,21 +346,6 @@
 		int start = parser.begin();
 		if( !Keyword("import",In.NOTHING) )
 			return parser.failure(null);
-		Expr importExpr;
-		{
-			LuanSource.Element se = se(start);
-			int index = stackIndex("require");
-			if( index != -1 ) {
-				importExpr = new GetLocalVar(se,index);
-			} else {
-				index = upValueIndex("require");
-				if( index != -1 ) {
-					importExpr = new GetUpVar(se,index);
-				} else {
-					throw parser.exception("no local 'require' function, needed for import");
-				}
-			}
-		}
 		String modName = StringLiteral(In.NOTHING);
 		if( modName==null )
 			return parser.failure(null);
@@ -370,7 +356,7 @@
 		if( !isValidName(varName) )
 			throw parser.exception("invalid variable name '"+varName+"' in import");
 		LuanSource.Element se = se(start);
-		FnCall require = new FnCall( se, importExpr, new ConstExpr(modName) );
+		FnCall require = new FnCall( se, new ConstExpr(se,PackageLuan.requireFn), new ConstExpr(modName) );
 		Settable settable;
 		if( interactive ) {
 			settable = nameVar(se,varName).settable();
diff -r 5f50dba8ac7d -r cf939124461a core/src/luan/impl/SetTableEntry.java
--- a/core/src/luan/impl/SetTableEntry.java	Wed Jun 25 07:06:16 2014 +0000
+++ b/core/src/luan/impl/SetTableEntry.java	Thu Jun 26 00:36:50 2014 +0000
@@ -35,7 +35,7 @@
 		} else {
 			h = luan.getHandler("__newindex",t);
 			if( h==null )
-				throw luan.bit(se).exception( "attempt to index a " + Luan.type(t) + " value" );
+				throw luan.bit(se).exception( "attempt to index '"+tableExpr.se().text()+"' (a " + Luan.type(t) + " value)" );
 		}
 		if( h instanceof LuanFunction ) {
 			LuanFunction fn = (LuanFunction)h;
diff -r 5f50dba8ac7d -r cf939124461a core/src/luan/init.luan
--- a/core/src/luan/init.luan	Wed Jun 25 07:06:16 2014 +0000
+++ b/core/src/luan/init.luan	Thu Jun 26 00:36:50 2014 +0000
@@ -1,3 +1,8 @@
+import "Package"
+import "Basic"
+import "Table"
+import "Io"
+
 function Package.global(module,fn_name)
 	local function fn(...)
 		return module[fn_name](...)
@@ -7,17 +12,6 @@
 end
 
 local require = Package.global(Package,"require")
-
-import "Basic"; _G.Basic = Basic
-import "String"; _G.String = String
-import "Table"; _G.Table = Table
-import "Io"; _G.Io = Io
-import "Math"; _G.Math = Basic
-import "Html"; _G.Html = Html
-import "Thread"; _G.Thread = Thread
-import "Binary"; _G.Binary = Binary
-
-
 Package.global(Basic,"assert")
 Package.global(Basic,"assert_boolean")
 Package.global(Basic,"assert_nil")
diff -r 5f50dba8ac7d -r cf939124461a core/src/luan/modules/PackageLuan.java
--- a/core/src/luan/modules/PackageLuan.java	Wed Jun 25 07:06:16 2014 +0000
+++ b/core/src/luan/modules/PackageLuan.java	Thu Jun 26 00:36:50 2014 +0000
@@ -25,7 +25,7 @@
 			module.put("path","?.luan;java:luan/modules/?.luan");
 			module.put("jpath",jpath);
 			try {
-				add( module, "require", LuanState.class, String.class );
+				module.put("require",requireFn);
 				add( module, "load", LuanState.class, String.class );
 				add( module, "load_lib", String.class );
 				add( module, "search_path", String.class, String.class );
@@ -42,6 +42,15 @@
 		}
 	};
 
+	public static final LuanFunction requireFn;
+	static {
+		try {
+			requireFn = new LuanJavaFunction(PackageLuan.class.getMethod("require",LuanState.class,String.class),null);
+		} catch(NoSuchMethodException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
 	private static void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException {
 		t.put( method, new LuanJavaFunction(PackageLuan.class.getMethod(method,parameterTypes),null) );
 	}
diff -r 5f50dba8ac7d -r cf939124461a web/src/luan/modules/web/Web_server.luan
--- a/web/src/luan/modules/web/Web_server.luan	Wed Jun 25 07:06:16 2014 +0000
+++ b/web/src/luan/modules/web/Web_server.luan	Thu Jun 26 00:36:50 2014 +0000
@@ -1,4 +1,6 @@
 import "Java"
+import "Package"
+import "web/Http"
 
 import "org.eclipse.jetty.server.Server"
 import "org.eclipse.jetty.server.NCSARequestLog"
@@ -11,7 +13,6 @@
 import "org.eclipse.jetty.server.handler.GzipHandler"
 import "org.eclipse.jetty.server.handler.HandlerWrapper"
 import "org.eclipse.jetty.server.session.SessionHandler"
-import "web/Http"
 
 
 port = 8080