diff --git a/runtime/Java/src/org/antlr/v4/runtime/BufferedTokenStream.java b/runtime/Java/src/org/antlr/v4/runtime/BufferedTokenStream.java index 96f8d3754..ef5a3ffb3 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/BufferedTokenStream.java +++ b/runtime/Java/src/org/antlr/v4/runtime/BufferedTokenStream.java @@ -30,6 +30,7 @@ package org.antlr.v4.runtime; import org.antlr.v4.runtime.misc.Interval; +import org.antlr.v4.runtime.misc.NotNull; import java.util.ArrayList; import java.util.HashSet; @@ -342,12 +343,15 @@ public class BufferedTokenStream implements TokenStream { public String getSourceName() { return tokenSource.getSourceName(); } /** Get the text of all tokens in this buffer. */ + @NotNull + @Override public String getText() { if ( p == -1 ) setup(); fill(); return getText(Interval.of(0,size()-1)); } + @NotNull @Override public String getText(Interval interval) { int start = interval.a; @@ -365,15 +369,20 @@ public class BufferedTokenStream implements TokenStream { return buf.toString(); } + @NotNull @Override - public String getText(RuleContext ctx) { return getText(ctx.getSourceInterval()); } + public String getText(RuleContext ctx) { + return getText(ctx.getSourceInterval()); + } + @NotNull @Override public String getText(Token start, Token stop) { if ( start!=null && stop!=null ) { return getText(Interval.of(start.getTokenIndex(), stop.getTokenIndex())); } - return null; + + return ""; } /** Get all tokens from lexer until EOF */ diff --git a/runtime/Java/src/org/antlr/v4/runtime/UnbufferedTokenStream.java b/runtime/Java/src/org/antlr/v4/runtime/UnbufferedTokenStream.java index 69989b51d..7fc452e9a 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/UnbufferedTokenStream.java +++ b/runtime/Java/src/org/antlr/v4/runtime/UnbufferedTokenStream.java @@ -138,16 +138,19 @@ public class UnbufferedTokenStream implements TokenStream { return tokenSource; } + @NotNull @Override public String getText() { - return null; + return ""; } + @NotNull @Override public String getText(RuleContext ctx) { return getText(ctx.getSourceInterval()); } + @NotNull @Override public String getText(Token start, Token stop) { return getText(Interval.of(start.getTokenIndex(), stop.getTokenIndex())); @@ -302,6 +305,7 @@ public class UnbufferedTokenStream implements TokenStream { return tokenSource.getSourceName(); } + @NotNull @Override public String getText(Interval interval) { int bufferStartIndex = getBufferStartIndex(); diff --git a/tool/test/org/antlr/v4/test/BaseTest.java b/tool/test/org/antlr/v4/test/BaseTest.java index 1e9b2aae2..94db25f07 100644 --- a/tool/test/org/antlr/v4/test/BaseTest.java +++ b/tool/test/org/antlr/v4/test/BaseTest.java @@ -55,6 +55,7 @@ import org.antlr.v4.runtime.atn.LexerATNSimulator; import org.antlr.v4.runtime.dfa.DFA; import org.antlr.v4.runtime.misc.IntegerList; import org.antlr.v4.runtime.misc.Interval; +import org.antlr.v4.runtime.misc.NotNull; import org.antlr.v4.runtime.misc.Nullable; import org.antlr.v4.semantics.SemanticPipeline; import org.antlr.v4.tool.ANTLRMessage; @@ -1154,24 +1155,28 @@ public abstract class BaseTest { return null; } + @NotNull @Override public String getText() { throw new UnsupportedOperationException("can't give strings"); } + @NotNull @Override public String getText(Interval interval) { throw new UnsupportedOperationException("can't give strings"); } + @NotNull @Override public String getText(RuleContext ctx) { throw new UnsupportedOperationException("can't give strings"); } + @NotNull @Override public String getText(Token start, Token stop) { - return null; + throw new UnsupportedOperationException("can't give strings"); } }