diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/Modifier.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/Modifier.kt index 24ae47162ec..8c327654392 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/Modifier.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/Modifier.kt @@ -42,23 +42,25 @@ class Modifier( return } val upperCasedModifier = modifier.toString().uppercase() - when { - INLINE_MODIFIER.contains(tokenType) -> { + when (ModifierSets.ModifierKinds[tokenType]) { + ModifierKind.INLINE -> { if (isInClass) this.classModifiers += ClassModifier.valueOf(upperCasedModifier) else this.functionModifiers += FunctionModifier.valueOf(upperCasedModifier) } - CLASS_MODIFIER.contains(tokenType) -> this.classModifiers += ClassModifier.valueOf(upperCasedModifier) - MEMBER_MODIFIER.contains(tokenType) -> this.memberModifiers += MemberModifier.valueOf(upperCasedModifier) - VISIBILITY_MODIFIER.contains(tokenType) -> this.visibilityModifiers += + ModifierKind.CLASS -> this.classModifiers += ClassModifier.valueOf(upperCasedModifier) + ModifierKind.MEMBER -> this.memberModifiers += MemberModifier.valueOf(upperCasedModifier) + ModifierKind.VISIBILITY -> this.visibilityModifiers += VisibilityModifier.valueOf(upperCasedModifier) - FUNCTION_MODIFIER.contains(tokenType) -> this.functionModifiers += FunctionModifier.valueOf(upperCasedModifier) - PROPERTY_MODIFIER.contains(tokenType) -> this.propertyModifier = PropertyModifier.valueOf(upperCasedModifier) - INHERITANCE_MODIFIER.contains(tokenType) -> this.inheritanceModifiers += + ModifierKind.FUNCTION -> this.functionModifiers += FunctionModifier.valueOf(upperCasedModifier) + ModifierKind.PROPERTY -> this.propertyModifier = PropertyModifier.valueOf(upperCasedModifier) + ModifierKind.INHERITANCE -> this.inheritanceModifiers += InheritanceModifier.valueOf(upperCasedModifier) - PARAMETER_MODIFIER.contains(tokenType) -> this.parameterModifiers += ParameterModifier.valueOf(upperCasedModifier) - PLATFORM_MODIFIER.contains(tokenType) -> this.platformModifiers += PlatformModifier.valueOf(upperCasedModifier) + ModifierKind.PARAMETER -> this.parameterModifiers += ParameterModifier.valueOf(upperCasedModifier) + ModifierKind.PLATFORM -> this.platformModifiers += PlatformModifier.valueOf(upperCasedModifier) + else -> { + } } } diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierKind.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierKind.kt new file mode 100644 index 00000000000..2b9e649d0f5 --- /dev/null +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierKind.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.lightTree.fir.modifier + +enum class ModifierKind { + INLINE, + CLASS, + MEMBER, + VISIBILITY, + FUNCTION, + PROPERTY, + INHERITANCE, + PARAMETER, + PLATFORM, + VARIANCE, + REIFICATION +} \ No newline at end of file diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierSets.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierSets.kt index d172773c12e..048f3e7a6e5 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierSets.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/modifier/ModifierSets.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.lightTree.fir.modifier +import com.intellij.psi.tree.IElementType import com.intellij.psi.tree.TokenSet import org.jetbrains.kotlin.lexer.KtTokens.* @@ -43,4 +44,28 @@ object ModifierSets { val VARIANCE_MODIFIER = TokenSet.create(IN_KEYWORD, OUT_KEYWORD) val REIFICATION_MODIFIER = TokenSet.create(REIFIED_KEYWORD) val INLINE_MODIFIER = TokenSet.create(INLINE_KEYWORD) + + val ModifierKinds: Map = let { + val result = mutableMapOf() + + fun initTokenSet(tokenSet: TokenSet, modifierKind: ModifierKind) { + for (modifier in tokenSet.types) { + result[modifier] = modifierKind + } + } + + initTokenSet(CLASS_MODIFIER, ModifierKind.CLASS) + initTokenSet(MEMBER_MODIFIER, ModifierKind.MEMBER) + initTokenSet(VISIBILITY_MODIFIER, ModifierKind.VISIBILITY) + initTokenSet(FUNCTION_MODIFIER, ModifierKind.FUNCTION) + initTokenSet(PROPERTY_MODIFIER, ModifierKind.PROPERTY) + initTokenSet(INHERITANCE_MODIFIER, ModifierKind.INHERITANCE) + initTokenSet(PARAMETER_MODIFIER, ModifierKind.PARAMETER) + initTokenSet(PLATFORM_MODIFIER, ModifierKind.PLATFORM) + initTokenSet(VARIANCE_MODIFIER, ModifierKind.VARIANCE) + initTokenSet(REIFICATION_MODIFIER, ModifierKind.REIFICATION) + initTokenSet(INLINE_MODIFIER, ModifierKind.INLINE) + + result + } } \ No newline at end of file