diff src/luan/LuanJavaFunction.java @ 1563:8fbcc4747091

remove LuanFunction.luan
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 09 Nov 2020 01:37:57 -0700
parents 71f067287642
children 8dd8c556c449
line wrap: on
line diff
--- a/src/luan/LuanJavaFunction.java	Sun Nov 08 16:50:59 2020 -0700
+++ b/src/luan/LuanJavaFunction.java	Mon Nov 09 01:37:57 2020 -0700
@@ -21,16 +21,15 @@
 	private final ArgConverter[] argConverters;
 	private final Class varArgCls;
 
-	public LuanJavaFunction(Luan luan,Method method,Object obj) {
-		this( luan, JavaMethod.of(method), obj );
+	public LuanJavaFunction(Method method,Object obj) {
+		this( JavaMethod.of(method), obj );
 	}
 
-	public LuanJavaFunction(Luan luan,Constructor constr,Object obj) {
-		this( luan, JavaMethod.of(constr), obj );
+	public LuanJavaFunction(Constructor constr,Object obj) {
+		this( JavaMethod.of(constr), obj );
 	}
 
-	private LuanJavaFunction(Luan luan,JavaMethod method,Object obj) {
-		super(luan);
+	private LuanJavaFunction(JavaMethod method,Object obj) {
 		this.method = method;
 		this.obj = obj;
 		this.rtnConverter = getRtnConverter(method);
@@ -42,8 +41,6 @@
 		} else {
 			this.varArgCls = null;
 		}
-		if( !takesLuan )
-			dontClone();
 	}
 
 	@Override public String toString() {
@@ -58,9 +55,9 @@
 		return method.isVarArgs();
 	}
 
-	@Override public Object call(Object[] args) throws LuanException {
+	@Override public Object call(Luan luan,Object[] args) throws LuanException {
 		try {
-			args = fixArgs(args);
+			args = fixArgs(luan,args);
 			return doCall(args);
 		} catch(IllegalArgumentException e) {
 			checkArgs(args);
@@ -68,8 +65,8 @@
 		}
 	}
 
-	public Object rawCall(Object[] args) throws LuanException {
-		args = fixArgs(args);
+	public Object rawCall(Luan luan,Object[] args) throws LuanException {
+		args = fixArgs(luan,args);
 		return doCall(args);
 	}
 
@@ -156,7 +153,7 @@
 		return type;
 	}
 
-	private Object[] fixArgs(Object[] args) throws LuanException {
+	private Object[] fixArgs(Luan luan,Object[] args) throws LuanException {
 		int n = argConverters.length;
 		Object[] rtn;
 		int start = 0;
@@ -167,7 +164,7 @@
 				n++;
 			rtn = new Object[n];
 			if( takesLuan ) {
-				rtn[start++] = luan();
+				rtn[start++] = luan;
 			}
 			n = argConverters.length;
 			if( varArgCls == null ) {