From c87c6b8c5141422abe1d78f2a6fc5e0903180e8e Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Wed, 28 Jul 2010 17:29:38 +0000 Subject: [PATCH] Refactor assignment statement code generation. --- src/jse/org/luaj/vm2/ast/NameResolver.java | 2 +- .../org/luaj/vm2/lua2java/JavaCodeGen.java | 123 ++++++++++++------ 2 files changed, 83 insertions(+), 42 deletions(-) diff --git a/src/jse/org/luaj/vm2/ast/NameResolver.java b/src/jse/org/luaj/vm2/ast/NameResolver.java index 51e513d5..166c187d 100644 --- a/src/jse/org/luaj/vm2/ast/NameResolver.java +++ b/src/jse/org/luaj/vm2/ast/NameResolver.java @@ -97,7 +97,7 @@ public class NameResolver extends Visitor { if ( stat.values.get(i) instanceof Constant ) stat.names.get(i).variable.initialValue = ((Constant) stat.values.get(i)).value; if ( !varlist ) - for ( int i=m+1; i0? evalLuaValue(stat.values.get(0)): "NIL"; - singleLocalDeclareAssign(name,value); - } else { - for ( Name name : stat.names ) - singleLocalDeclareAssign(name,null); - multiAssign(stat.names, stat.values); - } - } - public void visit(Assign stat) { multiAssign(stat.vars, stat.exps); } + public void visit(LocalAssign stat) { + List names = stat.names; + List values = stat.values; + int n = names.size(); + int m = values != null? values.size(): 0; + boolean isvarlist = m>0 && m0 && m tmpnames = new ArrayList(); + for ( int i=0; i