Mercurial Hosting > luan
diff src/luan/interp/ExpList.java @ 40:e3624b7cd603
implement stack trace
git-svn-id: https://luan-java.googlecode.com/svn/trunk@41 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 21 Dec 2012 10:45:54 +0000 |
parents | 5cf15507d77e |
children | 64ecb7a3aad7 |
line wrap: on
line diff
--- a/src/luan/interp/ExpList.java Thu Dec 20 02:54:06 2012 +0000 +++ b/src/luan/interp/ExpList.java Fri Dec 21 10:45:54 2012 +0000 @@ -4,12 +4,14 @@ import java.util.ArrayList; import java.util.Collections; import luan.LuaException; +import luan.LuaSource; final class ExpList implements Expressions { private interface Adder { public void addTo(LuaStateImpl lua,List<Object> list) throws LuaException; + public Code code(); } private static class ExprAdder implements Adder { @@ -23,6 +25,10 @@ list.add( expr.eval(lua) ); } + public Code code() { + return expr; + } + } private static class ExpressionsAdder implements Adder { @@ -38,6 +44,10 @@ } } + public Code code() { + return expressions; + } + } static class Builder { @@ -70,9 +80,14 @@ private static final Object[] EMPTY = new Object[0]; static final Expressions emptyExpList = new Expressions() { + @Override public Object[] eval(LuaStateImpl lua) { return EMPTY; } + + @Override public LuaSource.Element se() { + return null; + } }; static class SingleExpList implements Expressions { @@ -85,6 +100,10 @@ @Override public Object[] eval(LuaStateImpl lua) throws LuaException { return new Object[]{expr.eval(lua)}; } + + @Override public LuaSource.Element se() { + return expr.se(); + } } private final Adder[] adders; @@ -100,4 +119,8 @@ } return list.toArray(); } + + @Override public LuaSource.Element se() { + return new LuaSource.Element(adders[0].code().se().source,adders[0].code().se().start,adders[adders.length-1].code().se().end); + } }