[SLC] fix modality for methods and property accessors

^KTIJ-23783
This commit is contained in:
Dmitrii Gridin
2022-12-01 12:16:31 +01:00
committed by Space Team
parent 00ab33bbf9
commit 7bfa900ce6
24 changed files with 62 additions and 64 deletions
@@ -160,7 +160,7 @@ internal class SymbolLightAccessorMethod private constructor(
propertySymbol.computeModalityForMethod(
isTopLevel = isTopLevel,
suppressFinal = containingClass.isInterface || propertySymbol.isOverride,
suppressFinal = containingClass.isInterface,
result = modifiers,
)
@@ -12,7 +12,6 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.light.classes.symbol.*
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasAnnotation
@@ -90,13 +89,10 @@ internal class SymbolLightSimpleMethod(
private fun computeModifiers(functionSymbol: KtFunctionSymbol): Set<String> {
if (functionSymbol.hasInlineOnlyAnnotation()) return setOf(PsiModifier.FINAL, PsiModifier.PRIVATE)
val finalModifier = kotlinOrigin?.hasModifier(KtTokens.FINAL_KEYWORD) == true
val modifiers = mutableSetOf<String>()
functionSymbol.computeModalityForMethod(
isTopLevel = isTopLevel,
suppressFinal = containingClass.isInterface || (!finalModifier && functionSymbol.isOverride),
suppressFinal = containingClass.isInterface,
result = modifiers
)
@@ -109,9 +105,11 @@ internal class SymbolLightSimpleMethod(
if (!suppressStatic && functionSymbol.hasJvmStaticAnnotation()) {
modifiers.add(PsiModifier.STATIC)
}
if (functionSymbol.hasAnnotation(STRICTFP_ANNOTATION_CLASS_ID, null)) {
modifiers.add(PsiModifier.STRICTFP)
}
if (functionSymbol.hasAnnotation(SYNCHRONIZED_ANNOTATION_CLASS_ID, null)) {
modifiers.add(PsiModifier.SYNCHRONIZED)
}