diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java index 649f4d84aa04ea9937d99cfd4e68f2924c6b3321..7ce8e04ceca2b00fc0b215b48d84ab9dc7f8e423 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java @@ -289,7 +289,7 @@ final class REngine implements Engine, Engine.Timings { } catch (RecognitionException e) { String line = e.line <= source.getLineCount() ? source.getCode(e.line) : ""; String substring = line.substring(0, Math.min(line.length(), e.charPositionInLine + 1)); - String token = e.token == null ? substring.substring(substring.length() - 1) : e.token.getText(); + String token = e.token == null ? (substring.length() == 0 ? "" : substring.substring(substring.length() - 1)) : e.token.getText(); if (e.token != null && e.token.getType() == Token.EOF && (e instanceof NoViableAltException || e instanceof MismatchedTokenException)) { // the parser got stuck at the eof, request another line throw new IncompleteSourceException(e, source, token, substring, e.line);