[SLC] drop redundant 'final' modifier from synthetic enum members

^KT-55502 Fixed
This commit is contained in:
Dmitrii Gridin
2022-12-15 22:29:11 +01:00
committed by Space Team
parent 8bbe60e96c
commit c77401d823
8 changed files with 62 additions and 35 deletions
@@ -165,30 +165,33 @@ internal class SymbolLightAccessorMethod private constructor(
annotationsFromProperty + annotationsFromAccessor
}
private fun computeModifiers(modifier: String): Map<String, Boolean>? {
return when (modifier) {
in LazyModifiersBox.VISIBILITY_MODIFIERS -> LazyModifiersBox.computeVisibilityForMember(ktModule, propertyAccessorSymbolPointer)
private fun computeModifiers(modifier: String): Map<String, Boolean>? = when (modifier) {
in LazyModifiersBox.VISIBILITY_MODIFIERS -> LazyModifiersBox.computeVisibilityForMember(ktModule, propertyAccessorSymbolPointer)
in LazyModifiersBox.MODALITY_MODIFIERS -> {
if (containingClass.isInterface) {
return LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(PsiModifier.ABSTRACT)
in LazyModifiersBox.MODALITY_MODIFIERS -> {
val modality = if (containingClass.isInterface) {
PsiModifier.ABSTRACT
} else {
analyzeForLightClasses(ktModule) {
val propertySymbol = propertySymbol()
propertySymbol.computeSimpleModality()?.takeUnless { it.isSuppressedFinalModifier(containingClass, propertySymbol) }
}
LazyModifiersBox.computeSimpleModality(ktModule, containingPropertySymbolPointer)
}
PsiModifier.STATIC -> {
val isStatic = if (suppressStatic) {
false
} else {
isTopLevel || isStatic()
}
mapOf(modifier to isStatic)
}
else -> null
LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
}
PsiModifier.STATIC -> {
val isStatic = if (suppressStatic) {
false
} else {
isTopLevel || isStatic()
}
mapOf(modifier to isStatic)
}
else -> null
}
private fun isStatic(): Boolean = analyzeForLightClasses(ktModule) {
@@ -93,7 +93,14 @@ internal class SymbolLightSimpleMethod(
private fun computeModifiers(modifier: String): Map<String, Boolean>? = when (modifier) {
in LazyModifiersBox.MODALITY_MODIFIERS -> {
ifInlineOnly { return modifiersForInlineOnlyCase() }
val modality = if (isTopLevel) PsiModifier.FINAL else withFunctionSymbol { it.computeSimpleModality() }
val modality = if (isTopLevel) {
PsiModifier.FINAL
} else {
withFunctionSymbol { functionSymbol ->
functionSymbol.computeSimpleModality()?.takeUnless { it.isSuppressedFinalModifier(containingClass, functionSymbol) }
}
}
LazyModifiersBox.MODALITY_MODIFIERS_MAP.with(modality)
}
@@ -0,0 +1,17 @@
/*
* Copyright 2010-2022 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.light.classes.symbol.methods
import com.intellij.psi.PsiModifier
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
context(KtAnalysisSession)
internal fun String.isSuppressedFinalModifier(containingClass: SymbolLightClassBase, symbol: KtCallableSymbol): Boolean {
return this == PsiModifier.FINAL && containingClass.isEnum && symbol.origin == KtSymbolOrigin.SOURCE_MEMBER_GENERATED
}