From 9fc310dc16812871adb461b27d93fd91102eea66 Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Fri, 25 Jun 2010 15:18:33 +0000 Subject: [PATCH] mark vararg expressions --- src/jse/org/luaj/vm2/ast/Exp.java | 19 ++++++++++++++++--- src/jse/org/luaj/vm2/ast/Visitor.java | 5 +++-- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/jse/org/luaj/vm2/ast/Exp.java b/src/jse/org/luaj/vm2/ast/Exp.java index afc90118..5eeb36e9 100644 --- a/src/jse/org/luaj/vm2/ast/Exp.java +++ b/src/jse/org/luaj/vm2/ast/Exp.java @@ -89,6 +89,10 @@ public class Exp { return false; } + public boolean isvarargexp() { + return false; + } + abstract public static class PrimaryExp extends Exp { public boolean isvarexp() { return false; @@ -168,6 +172,10 @@ public class Exp { public void accept(Visitor visitor) { visitor.visit(this); } + + public boolean isvarargexp() { + return true; + } } public static class MethodCall extends FuncCall { @@ -202,7 +210,11 @@ public class Exp { public void accept(Visitor visitor) { visitor.visit(this); - } + } + + public boolean isvarargexp() { + return true; + } } public static class UnopExp extends Exp { @@ -233,13 +245,14 @@ public class Exp { } public static class AnonFuncDef extends Exp { - public final FuncBody funcbody; + public final FuncBody body; public AnonFuncDef(FuncBody funcbody) { - this.funcbody = funcbody; + this.body = funcbody; } public void accept(Visitor visitor) { visitor.visit(this); } } + } diff --git a/src/jse/org/luaj/vm2/ast/Visitor.java b/src/jse/org/luaj/vm2/ast/Visitor.java index 626ee900..4b1b676a 100644 --- a/src/jse/org/luaj/vm2/ast/Visitor.java +++ b/src/jse/org/luaj/vm2/ast/Visitor.java @@ -48,8 +48,9 @@ abstract public class Visitor { public void visit(Stat.NumericFor stat) { visit(stat.name); stat.initial.accept(this); - stat.step.accept(this); stat.limit.accept(this); + if ( stat.step != null ) + stat.step.accept(this); stat.block.accept(this); } public void visit(Stat.RepeatUntil stat) { @@ -78,7 +79,7 @@ abstract public class Visitor { field.rhs.accept(this); } public void visit(Exp.AnonFuncDef exp) { - exp.funcbody.accept(this); + exp.body.accept(this); } public void visit(Exp.BinopExp exp) { exp.lhs.accept(this);