changeset 533:8e51d6071b67

restore LuanTable.hasJava
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 27 May 2015 23:40:09 -0600
parents 9bf9ad733827
children 115cae4ac8fd
files core/src/luan/LuanTable.java core/src/luan/impl/LuanParser.java core/src/luan/impl/LuanStateImpl.java
diffstat 3 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/core/src/luan/LuanTable.java	Wed May 27 22:19:46 2015 -0600
+++ b/core/src/luan/LuanTable.java	Wed May 27 23:40:09 2015 -0600
@@ -22,6 +22,7 @@
 	private Map map = null;
 	private List list = null;
 	private LuanTable metatable = null;
+	public boolean hasJava = false;
 
 	public LuanTable() {}
 
@@ -80,6 +81,7 @@
 		}
 		if( metatable != null )
 			clone.metatable = (LuanTable)cloner.get(metatable);
+		clone.hasJava = hasJava;
 	}
 
 	public boolean isList() {
--- a/core/src/luan/impl/LuanParser.java	Wed May 27 22:19:46 2015 -0600
+++ b/core/src/luan/impl/LuanParser.java	Wed May 27 23:40:09 2015 -0600
@@ -25,10 +25,10 @@
 		final List<String> upValueSymbols = new ArrayList<String>();
 		final List<UpValue.Getter> upValueGetters = new ArrayList<UpValue.Getter>();
 
-		Frame() {
+		Frame(LuanTable java) {
 			this.parent = null;
 			upValueSymbols.add(JAVA);
-			upValueGetters.add(new UpValue.ValueGetter(false));
+			upValueGetters.add(new UpValue.ValueGetter(java));
 		}
 
 		Frame(Frame parent) {
@@ -103,7 +103,7 @@
 
 	LuanParser(LuanSource source,LuanTable env) {
 		this.source = source;
-		this.frame = new Frame();
+		this.frame = new Frame( env!=null ? env : new LuanTable() );
 		this.parser = new Parser(source);
 		if( env != null )
 			addVar(_ENV,env);
--- a/core/src/luan/impl/LuanStateImpl.java	Wed May 27 22:19:46 2015 -0600
+++ b/core/src/luan/impl/LuanStateImpl.java	Wed May 27 23:40:09 2015 -0600
@@ -111,11 +111,11 @@
 	@Override public boolean hasJava() {
 		if( frame==null )
 			return false;
-		return (Boolean)frame.closure.upValues()[0].get();
+		return ((LuanTable)frame.closure.upValues()[0].get()).hasJava;
 	}
 
 	@Override public void setJava() {
-		frame.closure.upValues()[0].set(true);
+		((LuanTable)frame.closure.upValues()[0].get()).hasJava = true;
 	}
 
 	@Override public LuanSource currentSource(){