FIR LC: remove unnecessary type parameter shift for inner class
U/LC don't do anything like that, and it rather skips necessary type paraemters to render.
This commit is contained in:
committed by
Ilya Kirillov
parent
49ba3d239c
commit
62fb8446dc
+7
-12
@@ -13,11 +13,9 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParameters
|
||||
import org.jetbrains.kotlin.light.classes.symbol.elements.FirLightTypeParameter
|
||||
|
||||
|
||||
internal class FirLightTypeParameterListForSymbol(
|
||||
internal val owner: PsiTypeParameterListOwner,
|
||||
private val symbolWithTypeParameterList: KtSymbolWithTypeParameters,
|
||||
private val innerShiftCount: Int
|
||||
) : LightElement(owner.manager, KotlinLanguage.INSTANCE), PsiTypeParameterList {
|
||||
|
||||
override fun accept(visitor: PsiElementVisitor) {
|
||||
@@ -38,16 +36,13 @@ internal class FirLightTypeParameterListForSymbol(
|
||||
}
|
||||
|
||||
private val _typeParameters: Array<PsiTypeParameter> by lazyPub {
|
||||
symbolWithTypeParameterList.typeParameters.let { list ->
|
||||
list.take(list.count() - innerShiftCount).mapIndexed { index, parameter ->
|
||||
FirLightTypeParameter(
|
||||
parent = this@FirLightTypeParameterListForSymbol,
|
||||
index = index,
|
||||
typeParameterSymbol = parameter
|
||||
)
|
||||
}.toTypedArray()
|
||||
|
||||
}
|
||||
symbolWithTypeParameterList.typeParameters.mapIndexed { index, parameter ->
|
||||
FirLightTypeParameter(
|
||||
parent = this@FirLightTypeParameterListForSymbol,
|
||||
index = index,
|
||||
typeParameterSymbol = parameter
|
||||
)
|
||||
}.toTypedArray()
|
||||
}
|
||||
|
||||
override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameters
|
||||
|
||||
-8
@@ -12,14 +12,11 @@ import com.intellij.psi.search.SearchScope
|
||||
import com.intellij.psi.stubs.IStubElementType
|
||||
import com.intellij.psi.stubs.StubElement
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.LightClassInheritanceHelper
|
||||
import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.checkIsInheritor
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.createInnerClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
@@ -59,14 +56,9 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
|
||||
private val _typeParameterList: PsiTypeParameterList? by lazyPub {
|
||||
hasTypeParameters().ifTrue {
|
||||
val shiftCount = classOrObjectSymbol.isInner.ifTrue {
|
||||
(parent as? FirLightClassForClassOrObjectSymbol)?.classOrObjectSymbol?.typeParameters?.count()
|
||||
} ?: 0
|
||||
|
||||
FirLightTypeParameterListForSymbol(
|
||||
owner = this,
|
||||
symbolWithTypeParameterList = classOrObjectSymbol,
|
||||
innerShiftCount = shiftCount
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -44,7 +44,6 @@ internal class FirLightSimpleMethodForSymbol(
|
||||
FirLightTypeParameterListForSymbol(
|
||||
owner = this,
|
||||
symbolWithTypeParameterList = functionSymbol,
|
||||
innerShiftCount = 0
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
public abstract class A /* A*/<T extends A<T>> extends B<java.util.Collection<? extends T>> implements C<T> {
|
||||
public A();// .ctor()
|
||||
|
||||
|
||||
|
||||
public class Inner /* A.Inner*/ extends B<java.util.Collection<? extends T>> implements C<D> {
|
||||
public Inner();// .ctor()
|
||||
|
||||
}public final class Inner2 /* A.Inner2*/ extends A.Inner<X> implements C<X> {
|
||||
public Inner2();// .ctor()
|
||||
|
||||
}}
|
||||
Reference in New Issue
Block a user