[SLC] Fix modifiers for @JvmStatic methods in interfaces

This commit is contained in:
Pavel Mikhailovskii
2023-02-23 17:04:22 +00:00
committed by Space Team
parent 253cdb1b8f
commit 9204f8162e
5 changed files with 41 additions and 10 deletions
@@ -13,5 +13,5 @@ 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
return this == PsiModifier.FINAL && (containingClass.isEnum && symbol.origin == KtSymbolOrigin.SOURCE_MEMBER_GENERATED || containingClass.isInterface)
}
@@ -23,7 +23,7 @@ internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
override fun hasModifierProperty(name: String): Boolean = when {
name == PsiModifier.ABSTRACT && isImplementationInInterface() -> false
// Pretend this method behaves like a `default` method
name == PsiModifier.DEFAULT && isImplementationInInterface() -> true
name == PsiModifier.DEFAULT && isImplementationInInterface() && !hasModifierProperty(PsiModifier.STATIC) -> true
// TODO: FINAL && isPossiblyAffectedByAllOpen
else -> super.hasModifierProperty(name)
}