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:
Jinseong Jeon
2022-01-05 11:46:33 -08:00
committed by Ilya Kirillov
parent 49ba3d239c
commit 62fb8446dc
4 changed files with 7 additions and 33 deletions
@@ -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
@@ -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
)
}
}
@@ -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()
}}