This is an automated email from the ASF dual-hosted git repository. jlahoda pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/master by this push: new a60cbbb [NETBEANS-777] JDK10-LVTI: Fix for NPE on typing invalid block/javadoc comment just after var keyword a60cbbb is described below commit a60cbbbd300d11c46adc38cf1aef53ec24a6c3a6 Author: Arunava Sinha <arunava.si...@oracle.com> AuthorDate: Thu May 31 00:52:57 2018 +0530 [NETBEANS-777] JDK10-LVTI: Fix for NPE on typing invalid block/javadoc comment just after var keyword --- .../src/org/netbeans/lib/java/lexer/JavaLexer.java | 4 +- .../lib/java/lexer/JavaLexerBatchTest.java | 63 ++++++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java b/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java index 7aa0a6d..d0a598d 100644 --- a/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java +++ b/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java @@ -1052,9 +1052,9 @@ public class JavaLexer implements Lexer<JavaTokenId> { if (AFTER_VAR_TOKENS.contains(next.id())) { do { next = nextToken(); - } while (AFTER_VAR_TOKENS.contains(next.id())); + } while (next != null && AFTER_VAR_TOKENS.contains(next.id())); - varKeyword = next.id() == JavaTokenId.IDENTIFIER; + varKeyword = next != null && next.id() == JavaTokenId.IDENTIFIER; } input.backup(input.readLengthEOF()- len); diff --git a/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaLexerBatchTest.java b/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaLexerBatchTest.java index 927d2eb..b87cbdd 100644 --- a/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaLexerBatchTest.java +++ b/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaLexerBatchTest.java @@ -634,4 +634,67 @@ public class JavaLexerBatchTest extends TestCase { LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.INT_LITERAL, "0"); LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.SEMICOLON, ";"); } + + public void testVarWithIncompleteBlockComment() { + String text = "var /* i = 0;"; + InputAttributes attr = new InputAttributes(); + attr.setValue(JavaTokenId.language(), "version", (Supplier<String>) () -> { + return "10"; + }, true); + TokenHierarchy<?> hi = TokenHierarchy.create(text, false, JavaTokenId.language(), EnumSet.noneOf(JavaTokenId.class), attr); + TokenSequence<?> ts = hi.tokenSequence(); + + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.IDENTIFIER, "var"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.BLOCK_COMMENT, "/* i = 0;"); + } + + public void testVarWithIncompleteJavaDocComment() { + String text = "var /** i = 0;"; + InputAttributes attr = new InputAttributes(); + attr.setValue(JavaTokenId.language(), "version", (Supplier<String>) () -> { + return "10"; + }, true); + TokenHierarchy<?> hi = TokenHierarchy.create(text, false, JavaTokenId.language(), EnumSet.noneOf(JavaTokenId.class), attr); + TokenSequence<?> ts = hi.tokenSequence(); + + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.IDENTIFIER, "var"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.JAVADOC_COMMENT, "/** i = 0;"); + } + + public void testVarWithInvalidComment() { + String text = "var */ i = 0;"; + InputAttributes attr = new InputAttributes(); + attr.setValue(JavaTokenId.language(), "version", (Supplier<String>) () -> { + return "10"; + }, true); + TokenHierarchy<?> hi = TokenHierarchy.create(text, false, JavaTokenId.language(), EnumSet.noneOf(JavaTokenId.class), attr); + TokenSequence<?> ts = hi.tokenSequence(); + + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.IDENTIFIER, "var"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.INVALID_COMMENT_END, "*/"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.IDENTIFIER, "i"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.EQ, "="); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.INT_LITERAL, "0"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.SEMICOLON, ";"); + } + + public void testInvalidVarStatement() { + String text = "var "; + InputAttributes attr = new InputAttributes(); + attr.setValue(JavaTokenId.language(), "version", (Supplier<String>) () -> { + return "10"; + }, true); + TokenHierarchy<?> hi = TokenHierarchy.create(text, false, JavaTokenId.language(), EnumSet.noneOf(JavaTokenId.class), attr); + TokenSequence<?> ts = hi.tokenSequence(); + + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.IDENTIFIER, "var"); + LexerTestUtilities.assertNextTokenEquals(ts, JavaTokenId.WHITESPACE, " "); + } + } -- To stop receiving notification emails like this one, please contact jlah...@apache.org. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists