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.analysis.api.symbols.markers.KtSymbolWithTypeParameters
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.elements.FirLightTypeParameter
|
import org.jetbrains.kotlin.light.classes.symbol.elements.FirLightTypeParameter
|
||||||
|
|
||||||
|
|
||||||
internal class FirLightTypeParameterListForSymbol(
|
internal class FirLightTypeParameterListForSymbol(
|
||||||
internal val owner: PsiTypeParameterListOwner,
|
internal val owner: PsiTypeParameterListOwner,
|
||||||
private val symbolWithTypeParameterList: KtSymbolWithTypeParameters,
|
private val symbolWithTypeParameterList: KtSymbolWithTypeParameters,
|
||||||
private val innerShiftCount: Int
|
|
||||||
) : LightElement(owner.manager, KotlinLanguage.INSTANCE), PsiTypeParameterList {
|
) : LightElement(owner.manager, KotlinLanguage.INSTANCE), PsiTypeParameterList {
|
||||||
|
|
||||||
override fun accept(visitor: PsiElementVisitor) {
|
override fun accept(visitor: PsiElementVisitor) {
|
||||||
@@ -38,16 +36,13 @@ internal class FirLightTypeParameterListForSymbol(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val _typeParameters: Array<PsiTypeParameter> by lazyPub {
|
private val _typeParameters: Array<PsiTypeParameter> by lazyPub {
|
||||||
symbolWithTypeParameterList.typeParameters.let { list ->
|
symbolWithTypeParameterList.typeParameters.mapIndexed { index, parameter ->
|
||||||
list.take(list.count() - innerShiftCount).mapIndexed { index, parameter ->
|
FirLightTypeParameter(
|
||||||
FirLightTypeParameter(
|
parent = this@FirLightTypeParameterListForSymbol,
|
||||||
parent = this@FirLightTypeParameterListForSymbol,
|
index = index,
|
||||||
index = index,
|
typeParameterSymbol = parameter
|
||||||
typeParameterSymbol = parameter
|
)
|
||||||
)
|
}.toTypedArray()
|
||||||
}.toTypedArray()
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameters
|
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.IStubElementType
|
||||||
import com.intellij.psi.stubs.StubElement
|
import com.intellij.psi.stubs.StubElement
|
||||||
import org.jetbrains.annotations.NonNls
|
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.getOutermostClassOrObject
|
||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
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.createInnerClasses
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass
|
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass
|
||||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||||
@@ -59,14 +56,9 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
|||||||
|
|
||||||
private val _typeParameterList: PsiTypeParameterList? by lazyPub {
|
private val _typeParameterList: PsiTypeParameterList? by lazyPub {
|
||||||
hasTypeParameters().ifTrue {
|
hasTypeParameters().ifTrue {
|
||||||
val shiftCount = classOrObjectSymbol.isInner.ifTrue {
|
|
||||||
(parent as? FirLightClassForClassOrObjectSymbol)?.classOrObjectSymbol?.typeParameters?.count()
|
|
||||||
} ?: 0
|
|
||||||
|
|
||||||
FirLightTypeParameterListForSymbol(
|
FirLightTypeParameterListForSymbol(
|
||||||
owner = this,
|
owner = this,
|
||||||
symbolWithTypeParameterList = classOrObjectSymbol,
|
symbolWithTypeParameterList = classOrObjectSymbol,
|
||||||
innerShiftCount = shiftCount
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -44,7 +44,6 @@ internal class FirLightSimpleMethodForSymbol(
|
|||||||
FirLightTypeParameterListForSymbol(
|
FirLightTypeParameterListForSymbol(
|
||||||
owner = this,
|
owner = this,
|
||||||
symbolWithTypeParameterList = functionSymbol,
|
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