[kotlin] KTIJ-33966 multiple inner classes case supported

(cherry picked from commit 604e8d6330da7de1639e34ffcdbd82adfd4d0190)

IJ-CR-168804

GitOrigin-RevId: 4560d04dc66e8ce5cc285e337837b8336d7ab923
This commit is contained in:
Andrew Kozlov
2025-07-11 13:19:27 +02:00
committed by intellij-monorepo-bot
parent c87323b58e
commit 1aac63743a
2 changed files with 10 additions and 9 deletions

View File

@@ -261,13 +261,11 @@ internal object CallableMetadataProvider {
context(KaSession)
@OptIn(KaExperimentalApi::class)
private fun buildClassType(symbol: KaClassLikeSymbol): KaType = buildClassType(symbol) {
val containingSymbol = if (symbol is KaNamedClassSymbol && symbol.isInner)
symbol.containingDeclaration as? KaClassSymbol
else
null
val times = when (val defaultType = symbol.defaultType) {
is KaClassType -> defaultType.qualifiers.sumOf { it.typeArguments.size }
else -> 0
}
val times = (containingSymbol?.typeParameters?.size ?: 0) +
symbol.typeParameters.size
@OptIn(KaExperimentalApi::class)
repeat(times) {
argument(buildStarTypeProjection())

View File

@@ -1,9 +1,12 @@
class Foo<T> {
inner class Bar<U, V>(private val foo: T) {
inner class Bar<U> {
init {
fo<caret>
inner class Baz<V>(private val foo: T) {
init {
fo<caret>
}
}
}
}