Java 8: 'none' isn't a keyword yet

This commit is contained in:
Roman Shevchenko
2012-05-14 13:43:15 +04:00
parent c583fbbeb6
commit 70470e66f7
6 changed files with 517 additions and 536 deletions
@@ -86,7 +86,6 @@ public interface JavaTokenType extends TokenType {
IElementType TRY_KEYWORD = new IKeywordElementType("TRY_KEYWORD");
IElementType VOLATILE_KEYWORD = new IKeywordElementType("VOLATILE_KEYWORD");
IElementType THROWS_KEYWORD = new IKeywordElementType("THROWS_KEYWORD");
IElementType NONE_KEYWORD = new IKeywordElementType("NONE_KEYWORD");
IElementType LPARENTH = new IJavaElementType("LPARENTH");
IElementType RPARENTH = new IJavaElementType("RPARENTH");
@@ -160,8 +159,7 @@ public interface JavaTokenType extends TokenType {
PRIVATE_KEYWORD, PROTECTED_KEYWORD, PUBLIC_KEYWORD, RETURN_KEYWORD, SHORT_KEYWORD,
SUPER_KEYWORD, STATIC_KEYWORD, STRICTFP_KEYWORD, SWITCH_KEYWORD, SYNCHRONIZED_KEYWORD,
THIS_KEYWORD, THROW_KEYWORD, THROWS_KEYWORD, TRANSIENT_KEYWORD, TRY_KEYWORD,
VOID_KEYWORD, VOLATILE_KEYWORD, WHILE_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, NULL_KEYWORD,
NONE_KEYWORD
VOID_KEYWORD, VOLATILE_KEYWORD, WHILE_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, NULL_KEYWORD
);
/** @deprecated use {@linkplain com.intellij.psi.impl.source.tree.ElementType#MODIFIER_BIT_SET} (to remove in IDEA 13) */
@@ -30,7 +30,6 @@ import java.util.Set;
public class JavaLexer extends LexerBase {
private static final HashTable[] TABLES = new HashTable[]{
new HashTable(LanguageLevel.JDK_1_8),
new HashTable(LanguageLevel.JDK_1_5),
new HashTable(LanguageLevel.JDK_1_4),
new HashTable(LanguageLevel.JDK_1_3)
@@ -118,9 +117,6 @@ public class JavaLexer extends LexerBase {
add("assert", JavaTokenType.ASSERT_KEYWORD);
if (level.isAtLeast(LanguageLevel.JDK_1_5)) {
add("enum", JavaTokenType.ENUM_KEYWORD);
if (level.isAtLeast(LanguageLevel.JDK_1_8)) {
add("none", JavaTokenType.NONE_KEYWORD);
}
}
}
add("abstract", JavaTokenType.ABSTRACT_KEYWORD);
@@ -12,13 +12,11 @@ import com.intellij.psi.tree.IElementType;
%{
private boolean myAssertKeyword;
private boolean myEnumKeyword;
private boolean myNoneKeyword;
public _JavaLexer(LanguageLevel level) {
this((java.io.Reader)null);
myAssertKeyword = level.isAtLeast(LanguageLevel.JDK_1_4);
myEnumKeyword = level.isAtLeast(LanguageLevel.JDK_1_5);
myNoneKeyword = level.isAtLeast(LanguageLevel.JDK_1_8);
}
public void goTo(int offset) {
@@ -154,7 +152,6 @@ ESCAPE_SEQUENCE=\\[^\r\n]
<YYINITIAL> "try" { return JavaTokenType.TRY_KEYWORD; }
<YYINITIAL> "volatile" { return JavaTokenType.VOLATILE_KEYWORD; }
<YYINITIAL> "throws" { return JavaTokenType.THROWS_KEYWORD; }
<YYINITIAL> "none" { return myNoneKeyword ? JavaTokenType.NONE_KEYWORD : JavaTokenType.IDENTIFIER; }
<YYINITIAL> {IDENTIFIER} { return JavaTokenType.IDENTIFIER; }
File diff suppressed because it is too large Load Diff
@@ -38,7 +38,7 @@ public interface ElementType extends JavaTokenType, JavaDocTokenType,
INT_KEYWORD, INTERFACE_KEYWORD, LONG_KEYWORD, NATIVE_KEYWORD, NEW_KEYWORD, PACKAGE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD,
SHORT_KEYWORD, SUPER_KEYWORD, SWITCH_KEYWORD, STRICTFP_KEYWORD, SYNCHRONIZED_KEYWORD, THIS_KEYWORD, THROW_KEYWORD, PROTECTED_KEYWORD,
TRANSIENT_KEYWORD, RETURN_KEYWORD, VOID_KEYWORD, STATIC_KEYWORD, WHILE_KEYWORD, TRY_KEYWORD, VOLATILE_KEYWORD, THROWS_KEYWORD,
ENUM_KEYWORD, NONE_KEYWORD);
ENUM_KEYWORD);
TokenSet OPERATION_BIT_SET = TokenSet.create(
EQ, GT, LT, EXCL, TILDE, QUEST, COLON, PLUS, MINUS, ASTERISK, DIV, AND, OR, XOR,
@@ -136,7 +136,7 @@ public class JavaLexerTest extends LexerTestCase {
public void testJava8Tokens() {
doTest("none :: ->",
"NONE_KEYWORD ('none')\nWHITE_SPACE (' ')\nDOUBLE_COLON ('::')\nWHITE_SPACE (' ')\nARROW ('->')");
"IDENTIFIER ('none')\nWHITE_SPACE (' ')\nDOUBLE_COLON ('::')\nWHITE_SPACE (' ')\nARROW ('->')");
}
@Override