mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
[kotlin] k2 override/implement: take care of enum entries
^KTIJ-25970 fixed GitOrigin-RevId: dbea6ce1ed3e5c48e1df6c548a175f8862ae22fc
This commit is contained in:
committed by
intellij-monorepo-bot
parent
28345d51c0
commit
e9124d5314
@@ -25,22 +25,24 @@ open class KtOverrideMembersHandler : KtGenerateMembersHandler(false) {
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
private fun collectMembers(classOrObject: KtClassOrObject): List<KtClassMember> =
|
||||
classOrObject.classSymbol?.let { getOverridableMembers(it) }.orEmpty().map { (symbol, bodyType, containingSymbol) ->
|
||||
@NlsSafe
|
||||
val fqName = containingSymbol?.classId?.asSingleFqName()?.toString() ?: containingSymbol?.name?.asString()
|
||||
KtClassMember(
|
||||
KtClassMemberInfo.create(
|
||||
symbol,
|
||||
symbol.render(renderer),
|
||||
getIcon(symbol),
|
||||
fqName,
|
||||
containingSymbol?.let { getIcon(it) },
|
||||
),
|
||||
bodyType,
|
||||
preferConstructorParameter = false,
|
||||
)
|
||||
}
|
||||
private fun collectMembers(classOrObject: KtClassOrObject): List<KtClassMember> {
|
||||
val classSymbol = (classOrObject.symbol as? KaEnumEntrySymbol)?.enumEntryInitializer as? KaClassSymbol ?: classOrObject.classSymbol ?: return emptyList()
|
||||
return getOverridableMembers(classSymbol).map { (symbol, bodyType, containingSymbol) ->
|
||||
@NlsSafe
|
||||
val fqName = containingSymbol?.classId?.asSingleFqName()?.toString() ?: containingSymbol?.name?.asString()
|
||||
KtClassMember(
|
||||
KtClassMemberInfo.create(
|
||||
symbol,
|
||||
symbol.render(renderer),
|
||||
getIcon(symbol),
|
||||
fqName,
|
||||
containingSymbol?.let { getIcon(it) },
|
||||
),
|
||||
bodyType,
|
||||
preferConstructorParameter = false,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
context(KaSession)
|
||||
@OptIn(KaExperimentalApi::class)
|
||||
|
||||
@@ -396,6 +396,10 @@ internal class FirOverrideImplementTest : OverrideImplementTest<KtClassMember>()
|
||||
super.testEnumClass4()
|
||||
}
|
||||
|
||||
override fun testEnumEntry() {
|
||||
super.testEnumEntry()
|
||||
}
|
||||
|
||||
override fun testOverrideExternalFunction() {
|
||||
super.testOverrideExternalFunction()
|
||||
}
|
||||
|
||||
@@ -401,6 +401,10 @@ abstract class OverrideImplementTest<T : ClassMember> : AbstractOverrideImplemen
|
||||
doOverrideFileTest("toString")
|
||||
}
|
||||
|
||||
open fun testEnumEntry() {
|
||||
doOverrideFileTest("foo")
|
||||
}
|
||||
|
||||
open fun testOverrideExternalFunction() {
|
||||
doOverrideFileTest()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
// FIR_IDENTICAL
|
||||
enum class EnumIssue {
|
||||
|
||||
A {
|
||||
<caret>
|
||||
};
|
||||
|
||||
abstract fun foo()
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// FIR_IDENTICAL
|
||||
enum class EnumIssue {
|
||||
|
||||
A {
|
||||
override fun foo() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
};
|
||||
|
||||
abstract fun foo()
|
||||
}
|
||||
Reference in New Issue
Block a user