diff --git a/src/main/java/liqp/Template.java b/src/main/java/liqp/Template.java index bdbd6f23..c6f979b7 100644 --- a/src/main/java/liqp/Template.java +++ b/src/main/java/liqp/Template.java @@ -154,7 +154,7 @@ private ParseTree parse(LiquidLexer lexer) { lexer.addErrorListener(new BaseErrorListener(){ @Override public void syntaxError(Recognizer recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { - throw new LiquidException(String.format("lexer error on line %s, index %s", line, charPositionInLine), line, charPositionInLine); + throw new LiquidException(String.format("lexer error \"%s\" on line %s, index %s", msg, line, charPositionInLine), line, charPositionInLine, e); } }); @@ -166,7 +166,7 @@ public void syntaxError(Recognizer recognizer, Object offendingSymbol, int parser.addErrorListener(new BaseErrorListener(){ @Override public void syntaxError(Recognizer recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) { - throw new LiquidException(String.format("parser error on line %s, index %s", line, charPositionInLine), line, charPositionInLine); + throw new LiquidException(String.format("parser error \"%s\" on line %s, index %s", msg, line, charPositionInLine), line, charPositionInLine, e); } }); @@ -403,7 +403,11 @@ public String renderUnguarded(final Map variables) { return rendered == null ? "" : String.valueOf(rendered); } catch (Exception e) { - throw new RuntimeException(e); + if (e instanceof RuntimeException) { + throw e; + } else { + throw new RuntimeException(e); + } } } diff --git a/src/main/java/liqp/exceptions/LiquidException.java b/src/main/java/liqp/exceptions/LiquidException.java index a9487b26..b9a0e8aa 100644 --- a/src/main/java/liqp/exceptions/LiquidException.java +++ b/src/main/java/liqp/exceptions/LiquidException.java @@ -27,8 +27,8 @@ public LiquidException(String message, ParserRuleContext ctx) { this.charPositionInLine = ctx.start.getCharPositionInLine(); } - public LiquidException(String message, int line, int charPositionInLine) { - super(message); + public LiquidException(String message, int line, int charPositionInLine, Throwable cause) { + super(message, cause); this.line = line; this.charPositionInLine = charPositionInLine; } diff --git a/src/test/java/liqp/tags/IncludeTest.java b/src/test/java/liqp/tags/IncludeTest.java index 7a028db4..d5eac32d 100644 --- a/src/test/java/liqp/tags/IncludeTest.java +++ b/src/test/java/liqp/tags/IncludeTest.java @@ -134,7 +134,7 @@ public void renderTestWithIncludeSubdirectorySpecifiedInLiquidFlavorWithStrictVa @Test public void renderTestWithIncludeSubdirectorySpecifiedInLiquidFlavorWithStrictVariablesException() throws Exception { - thrown.expectCause(new NestedCauseMatcher<>(isA(VariableNotExistException.class))); + thrown.expectCause(isA(VariableNotExistException.class)); File index = new File("src/test/jekyll/index_with_variables.html"); Template template = Template.parse(