Mercurial Hosting > luan
changeset 91:1f8b6edc2b08
better error message
git-svn-id: https://luan-java.googlecode.com/svn/trunk@92 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 07 Mar 2013 22:52:53 +0000 |
parents | b1e87f1bcc13 |
children | d03022acea47 |
files | src/luan/LuanElement.java src/luan/LuanSource.java src/luan/LuanState.java src/luan/interp/LuanCompiler.java src/luan/lib/PackageLib.java |
diffstat | 5 files changed, 20 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/LuanElement.java Sat Mar 02 05:02:56 2013 +0000 +++ b/src/luan/LuanElement.java Thu Mar 07 22:52:53 2013 +0000 @@ -14,10 +14,4 @@ return "Java"; } }; - - public static final LuanElement COMPILER = new LuanElement(){ - @Override String location() { - return "Compiler"; - } - }; }
--- a/src/luan/LuanSource.java Sat Mar 02 05:02:56 2013 +0000 +++ b/src/luan/LuanSource.java Thu Mar 07 22:52:53 2013 +0000 @@ -10,6 +10,20 @@ this.text = text; } + public static final class CompilerElement extends LuanElement { + public final LuanSource source; + + public CompilerElement(LuanSource source) { + if( source==null ) + throw new NullPointerException("source is null"); + this.source = source; + } + + @Override String location() { + return "Compiling " + source.name; + } + } + public static final class Element extends LuanElement { public final LuanSource source; public final int start;
--- a/src/luan/LuanState.java Sat Mar 02 05:02:56 2013 +0000 +++ b/src/luan/LuanState.java Thu Mar 07 22:52:53 2013 +0000 @@ -20,7 +20,6 @@ public static final String _G = "_G"; public final LuanBit JAVA = bit(LuanElement.JAVA); - public final LuanBit COMPILER = bit(LuanElement.COMPILER); private LuanTable loaded; private LuanTable preload;
--- a/src/luan/interp/LuanCompiler.java Sat Mar 02 05:02:56 2013 +0000 +++ b/src/luan/interp/LuanCompiler.java Thu Mar 07 22:52:53 2013 +0000 @@ -21,8 +21,11 @@ LuanParser parser = Parboiled.createParser(LuanParser.class,src,envGetter); ParsingResult<?> result = new ReportingParseRunner(parser.Target()).run(src.text); // ParsingResult<?> result = new TracingParseRunner(parser.Target()).run(src); - if( result.hasErrors() ) - throw luan.COMPILER.exception( ErrorUtils.printParseErrors(result) ); + if( result.hasErrors() ) { +// throw luan.COMPILER.exception( ErrorUtils.printParseErrors(result) ); + LuanElement le = new LuanSource.CompilerElement(src); + throw luan.bit(le).exception( ErrorUtils.printParseErrors(result) ); + } FnDef fnDef = (FnDef)result.resultValue; return new Closure((LuanStateImpl)luan,fnDef); }
--- a/src/luan/lib/PackageLib.java Sat Mar 02 05:02:56 2013 +0000 +++ b/src/luan/lib/PackageLib.java Thu Mar 07 22:52:53 2013 +0000 @@ -64,7 +64,7 @@ Object[] a = luan.JAVA.call(searcher,"<searcher>",modName); if( a.length >= 1 && a[0] instanceof LuanFunction ) { LuanFunction loader = (LuanFunction)a[0]; - luan.JAVA.call(loader,"<loader>"); + luan.JAVA.call(loader,"<require \""+modName+"\">"); mod = (LuanTable)luan.loaded().get(modName); if( mod==null ) throw luan.JAVA.exception( "module '"+modName+"' didn't define its module" );