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 <[email protected]>
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
[email protected].
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists