diff --git a/java/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java b/java/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java index 40dd4ede399d..b7ec834bfe09 100644 --- a/java/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java +++ b/java/java.lexer/src/org/netbeans/lib/java/lexer/JavaLexer.java @@ -19,9 +19,7 @@ package org.netbeans.lib.java.lexer; -import java.util.ArrayList; import java.util.EnumSet; -import java.util.List; import java.util.Objects; import java.util.Set; import java.util.function.Supplier; @@ -1212,8 +1210,8 @@ else if ('0' <= c && c <= '9') { // float literal // For surrogate 2 chars must be backed up backup((c >= Character.MIN_SUPPLEMENTARY_CODE_POINT) ? 2 : 1); } + c = nextChar(); } - c = nextChar(); break; case 'o': switch (c = nextChar()) { diff --git a/java/java.lexer/test/unit/data/testfiles/testInput.java.txt b/java/java.lexer/test/unit/data/testfiles/testInput.java.txt index c37435989857..6ad691ca6eea 100644 --- a/java/java.lexer/test/unit/data/testfiles/testInput.java.txt +++ b/java/java.lexer/test/unit/data/testfiles/testInput.java.txt @@ -48,3 +48,20 @@ null true false .t.e.s.t. Non-keywords abstracta assertx b br car dou doubl finall im i ifa inti throwsx +.e.o.f. + +.t.e.s.t. Var +int v = 2; +int va = 2; +int var = 2; +int vari = 2; +int variable = 2; +var v = 2; +var va = 2; +var var = 2; +var vari = 2; +var variable = 2; +vari x = 2; +variable x = 2; +for (var i = 0; i < 10; i++) {} +for (int var = 0; var < 10; var++) {} diff --git a/java/java.lexer/test/unit/data/testfiles/testInput.java.txt.tokens.txt b/java/java.lexer/test/unit/data/testfiles/testInput.java.txt.tokens.txt index 2908ee29cc0d..77dd35883717 100644 --- a/java/java.lexer/test/unit/data/testfiles/testInput.java.txt.tokens.txt +++ b/java/java.lexer/test/unit/data/testfiles/testInput.java.txt.tokens.txt @@ -256,3 +256,165 @@ WHITESPACE " ", la=1 IDENTIFIER "throwsx", la=1 ----- EOF ----- +.t.e.s.t. Var +INT "int", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "v", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +INT "int", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "va", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +INT "int", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "var", la=3 +WHITESPACE " ", la=2 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +INT "int", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "vari", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +INT "int", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "variable", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +VAR "var", la=3 +WHITESPACE " ", la=2 +IDENTIFIER "v", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +VAR "var", la=4 +WHITESPACE " ", la=3 +IDENTIFIER "va", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +VAR "var", la=7 +WHITESPACE " ", la=6 +IDENTIFIER "var", la=3 +WHITESPACE " ", la=2 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +VAR "var", la=6 +WHITESPACE " ", la=5 +IDENTIFIER "vari", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +VAR "var", la=10 +WHITESPACE " ", la=9 +IDENTIFIER "variable", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +IDENTIFIER "vari", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "x", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +IDENTIFIER "variable", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "x", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "2", la=1 +SEMICOLON ";" +WHITESPACE "\n", la=1 +FOR "for", la=1 +WHITESPACE " ", la=1 +LPAREN "(" +VAR "var", la=3 +WHITESPACE " ", la=2 +IDENTIFIER "i", la=1 +WHITESPACE " ", la=1 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "0", la=1 +SEMICOLON ";" +WHITESPACE " ", la=1 +IDENTIFIER "i", la=1 +WHITESPACE " ", la=1 +LT "<", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "10", la=1 +SEMICOLON ";" +WHITESPACE " ", la=1 +IDENTIFIER "i", la=1 +PLUSPLUS "++" +RPAREN ")" +WHITESPACE " ", la=1 +LBRACE "{" +RBRACE "}" +WHITESPACE "\n", la=1 +FOR "for", la=1 +WHITESPACE " ", la=1 +LPAREN "(" +INT "int", la=1 +WHITESPACE " ", la=1 +IDENTIFIER "var", la=3 +WHITESPACE " ", la=2 +EQ "=", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "0", la=1 +SEMICOLON ";" +WHITESPACE " ", la=1 +IDENTIFIER "var", la=3 +WHITESPACE " ", la=2 +LT "<", la=1 +WHITESPACE " ", la=1 +INT_LITERAL "10", la=1 +SEMICOLON ";" +WHITESPACE " ", la=1 +IDENTIFIER "var", la=2 +PLUSPLUS "++" +RPAREN ")" +WHITESPACE " ", la=1 +LBRACE "{" +RBRACE "}" +----- EOF ----- + diff --git a/java/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaStringLexerTest.java b/java/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaStringLexerTest.java index 8b4fa5bd9c6e..1a6c53c191a9 100644 --- a/java/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaStringLexerTest.java +++ b/java/java.lexer/test/unit/src/org/netbeans/lib/java/lexer/JavaStringLexerTest.java @@ -39,12 +39,12 @@ protected void setUp() throws Exception { public void testNextToken1() { String text = "t"; - + TokenHierarchy hi = TokenHierarchy.create(text, JavaStringTokenId.language()); TokenSequence ts = hi.tokenSequence(); LexerTestUtilities.assertNextTokenEquals(ts, JavaStringTokenId.TEXT, "t"); } - + public void testNextToken2() { String text = "\\t\\b\\b\\t \\tabc\\rsddfdsffffffffff\\uuuuAbcD\\377";