Mercurial Hosting > luan
diff core/src/luan/impl/LuanParser.java @ 688:f99f51bc5bea
fix up-values
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 18 Apr 2016 15:46:05 -0600 |
parents | fc08c3b42010 |
children | ca169567ce07 |
line wrap: on
line diff
--- a/core/src/luan/impl/LuanParser.java Mon Apr 18 01:08:35 2016 -0600 +++ b/core/src/luan/impl/LuanParser.java Mon Apr 18 15:46:05 2016 -0600 @@ -148,12 +148,16 @@ if( upSym.name.equals(name) ) return upSym; } - for( Frame f=parent; f!=null; f=f.parent ) { - LocalSym sym = f.getLocalSym(name); + if( parent != null ) { + LocalSym sym = parent.getLocalSym(name); if( sym != null ) { sym.isPointer = true; return addUpSym(name,sym.javaName); } + UpSym upSym = parent.getUpSym(name); + if( upSym != null ) { + return addUpSym(name,"parentUpValues["+upSym.i+"]"); + } } return null; } @@ -1933,6 +1937,7 @@ +"} " +"@Override public Object doCall(LuanState luan,Object[] args) throws LuanException { " + +"final Pointer[] parentUpValues = upValues; " +"Object t; " +"Object[] a; " + stmts @@ -1961,6 +1966,7 @@ ); } exp.add( "" + +"final Pointer[] parentUpValues = upValues; " +"Object t; " +"Object[] a; " );