From 02b64ce1ed4592b5ee8c53e2673127fe30baa41c Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Mon, 21 Sep 2015 15:33:35 +0300 Subject: [PATCH] Parse `const` as soft modifier keyword --- .../org/jetbrains/kotlin/lexer/JetTokens.java | 7 ++- .../stubs/elements/JetFileElementType.java | 2 +- compiler/testData/psi/SoftKeywords.kt | 4 ++ compiler/testData/psi/SoftKeywords.txt | 43 +++++++++++++++++++ .../testData/keywords/AfterClassProperty.kt | 1 + .../testData/keywords/AfterClasses.kt | 1 + .../testData/keywords/AfterFuns.kt | 1 + .../keywords/GlobalPropertyAccessors.kt | 1 + .../testData/keywords/InClassBeforeFun.kt | 1 + .../testData/keywords/InClassScope.kt | 1 + .../keywords/InTopScopeAfterPackage.kt | 1 + .../testData/keywords/PropertyAccessors.kt | 1 + .../testData/keywords/PropertyAccessors2.kt | 1 + .../testData/keywords/PropertySetter.kt | 1 + .../testData/keywords/TopScope.kt | 1 + 15 files changed, 64 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/lexer/JetTokens.java b/compiler/frontend/src/org/jetbrains/kotlin/lexer/JetTokens.java index c6834a0f59d..7d14f62400c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/lexer/JetTokens.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/lexer/JetTokens.java @@ -177,6 +177,8 @@ public interface JetTokens { JetModifierKeywordToken ANNOTATION_KEYWORD = JetModifierKeywordToken.softKeywordModifier("annotation"); JetModifierKeywordToken CROSSINLINE_KEYWORD = JetModifierKeywordToken.softKeywordModifier("crossinline"); + JetModifierKeywordToken CONST_KEYWORD = JetModifierKeywordToken.softKeywordModifier("const"); + TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, INTERFACE_KEYWORD, THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, @@ -194,7 +196,7 @@ public interface JetTokens { FIELD_KEYWORD, PROPERTY_KEYWORD, RECEIVER_KEYWORD, PARAM_KEYWORD, SPARAM_KEYWORD, LATE_INIT_KEYWORD, DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, - ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD + ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, CONST_KEYWORD ); /* @@ -207,7 +209,8 @@ public interface JetTokens { ABSTRACT_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, INNER_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD, REIFIED_KEYWORD, COMPANION_KEYWORD, SEALED_KEYWORD, LATE_INIT_KEYWORD, - DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD + DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, + CONST_KEYWORD }; // Please synchronize this array with org.jetbrains.kotlin.descriptors.annotations.ANNOTATION_MODIFIERS_FQ_NAMES diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java index d199002387c..b2d9a34ea9e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/stubs/elements/JetFileElementType.java @@ -34,7 +34,7 @@ import org.jetbrains.kotlin.psi.stubs.KotlinFileStub; import java.io.IOException; public class JetFileElementType extends IStubFileElementType { - public static final int STUB_VERSION = 57; + public static final int STUB_VERSION = 58; private static final String NAME = "kotlin.FILE"; diff --git a/compiler/testData/psi/SoftKeywords.kt b/compiler/testData/psi/SoftKeywords.kt index af88fcd315b..0fe62fb028d 100644 --- a/compiler/testData/psi/SoftKeywords.kt +++ b/compiler/testData/psi/SoftKeywords.kt @@ -60,6 +60,7 @@ ref val param val sparam val lateinit + val const get() = a set(S : s) {} @@ -94,6 +95,7 @@ ref fun param () : param fun sparam () : sparam fun lateinit () : lateinit + fun const () : const fun test( abstract : t, @@ -125,6 +127,7 @@ ref param : t, sparam : t, lateinit : t, + const : t, public protected private internal abstract open enum @@ -173,6 +176,7 @@ class F(val foo : bar, param : t, sparam : t, lateinit : t, + const : t, public protected private internal abstract open enum diff --git a/compiler/testData/psi/SoftKeywords.txt b/compiler/testData/psi/SoftKeywords.txt index bbc1598b5ac..852bdbd2e64 100644 --- a/compiler/testData/psi/SoftKeywords.txt +++ b/compiler/testData/psi/SoftKeywords.txt @@ -317,6 +317,11 @@ JetFile: SoftKeywords.kt PsiElement(val)('val') PsiWhiteSpace(' ') PsiElement(IDENTIFIER)('lateinit') + PsiWhiteSpace('\n ') + PROPERTY + PsiElement(val)('val') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('const') PsiWhiteSpace('\n ') PROPERTY_ACCESSOR PsiElement(get)('get') @@ -819,6 +824,22 @@ JetFile: SoftKeywords.kt USER_TYPE REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('lateinit') + PsiWhiteSpace('\n ') + FUN + PsiElement(fun)('fun') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('const') + PsiWhiteSpace(' ') + VALUE_PARAMETER_LIST + PsiElement(LPAR)('(') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + PsiElement(COLON)(':') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('const') PsiWhiteSpace('\n\n ') FUN PsiElement(fun)('fun') @@ -1145,6 +1166,17 @@ JetFile: SoftKeywords.kt REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('t') PsiElement(COMMA)(',') + PsiWhiteSpace('\n ') + VALUE_PARAMETER + PsiElement(IDENTIFIER)('const') + PsiWhiteSpace(' ') + PsiElement(COLON)(':') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('t') + PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER MODIFIER_LIST @@ -1531,6 +1563,17 @@ JetFile: SoftKeywords.kt REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('t') PsiElement(COMMA)(',') + PsiWhiteSpace('\n ') + VALUE_PARAMETER + PsiElement(IDENTIFIER)('const') + PsiWhiteSpace(' ') + PsiElement(COLON)(':') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('t') + PsiElement(COMMA)(',') PsiWhiteSpace('\n ') VALUE_PARAMETER MODIFIER_LIST diff --git a/idea/idea-completion/testData/keywords/AfterClassProperty.kt b/idea/idea-completion/testData/keywords/AfterClassProperty.kt index 3d674ef612f..ebb65160a2b 100644 --- a/idea/idea-completion/testData/keywords/AfterClassProperty.kt +++ b/idea/idea-completion/testData/keywords/AfterClassProperty.kt @@ -43,4 +43,5 @@ class MouseMovedEventArgs // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/AfterClasses.kt b/idea/idea-completion/testData/keywords/AfterClasses.kt index 23404ab5401..ee9591a3fd0 100644 --- a/idea/idea-completion/testData/keywords/AfterClasses.kt +++ b/idea/idea-completion/testData/keywords/AfterClasses.kt @@ -46,5 +46,6 @@ class B { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const /*TODO*/ // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/AfterFuns.kt b/idea/idea-completion/testData/keywords/AfterFuns.kt index b46e976a6bc..fbe8425ac02 100644 --- a/idea/idea-completion/testData/keywords/AfterFuns.kt +++ b/idea/idea-completion/testData/keywords/AfterFuns.kt @@ -46,4 +46,5 @@ class A { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/GlobalPropertyAccessors.kt b/idea/idea-completion/testData/keywords/GlobalPropertyAccessors.kt index 4c7c8926c0e..f2e5733c631 100644 --- a/idea/idea-completion/testData/keywords/GlobalPropertyAccessors.kt +++ b/idea/idea-completion/testData/keywords/GlobalPropertyAccessors.kt @@ -46,5 +46,6 @@ var a : Int // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const /*TODO*/ // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/InClassBeforeFun.kt b/idea/idea-completion/testData/keywords/InClassBeforeFun.kt index 610dc0ce94d..fc57c7586cf 100644 --- a/idea/idea-completion/testData/keywords/InClassBeforeFun.kt +++ b/idea/idea-completion/testData/keywords/InClassBeforeFun.kt @@ -44,4 +44,5 @@ public class Test { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/InClassScope.kt b/idea/idea-completion/testData/keywords/InClassScope.kt index 52b7b4426d3..326e08dada9 100644 --- a/idea/idea-completion/testData/keywords/InClassScope.kt +++ b/idea/idea-completion/testData/keywords/InClassScope.kt @@ -38,4 +38,5 @@ class TestClass { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/InTopScopeAfterPackage.kt b/idea/idea-completion/testData/keywords/InTopScopeAfterPackage.kt index 3515f13b8d8..afd1ddbdddd 100644 --- a/idea/idea-completion/testData/keywords/InTopScopeAfterPackage.kt +++ b/idea/idea-completion/testData/keywords/InTopScopeAfterPackage.kt @@ -37,5 +37,6 @@ package Test // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const /*TODO*/ // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/PropertyAccessors.kt b/idea/idea-completion/testData/keywords/PropertyAccessors.kt index 7b8a80bb6f5..62f28d3f622 100644 --- a/idea/idea-completion/testData/keywords/PropertyAccessors.kt +++ b/idea/idea-completion/testData/keywords/PropertyAccessors.kt @@ -42,4 +42,5 @@ class Some { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/PropertyAccessors2.kt b/idea/idea-completion/testData/keywords/PropertyAccessors2.kt index 90569a72a91..9f36f4ef0ba 100644 --- a/idea/idea-completion/testData/keywords/PropertyAccessors2.kt +++ b/idea/idea-completion/testData/keywords/PropertyAccessors2.kt @@ -42,4 +42,5 @@ class Some { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/PropertySetter.kt b/idea/idea-completion/testData/keywords/PropertySetter.kt index e1fe084e67e..ad421490ba6 100644 --- a/idea/idea-completion/testData/keywords/PropertySetter.kt +++ b/idea/idea-completion/testData/keywords/PropertySetter.kt @@ -44,4 +44,5 @@ class Some { // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const // NOTHING_ELSE diff --git a/idea/idea-completion/testData/keywords/TopScope.kt b/idea/idea-completion/testData/keywords/TopScope.kt index 8284dff4837..93b72a4e8e6 100644 --- a/idea/idea-completion/testData/keywords/TopScope.kt +++ b/idea/idea-completion/testData/keywords/TopScope.kt @@ -36,5 +36,6 @@ // EXIST: external // EXIST: annotation // EXIST: crossinline +// EXIST: const /*TODO*/ // NOTHING_ELSE