Making an IDEA Plugin and stuck with this thing. Here is the class I have:
open class Class1<A, B : Class2> {
open var value1: Map<String, A>? = null
open var value2: Map<String, B> = emptyMap()
}
In my plugin I need to know somehow the real types of variables value1 and value2
Is that possible with PSI library?
So I have PsiClassReferenceType object, it's canonicalText method returns java.util.Map<java.lang.String,? extends B>.
psiType.reference.typeParameters returns two parameters:
PsiClassReferenceType- this is forStringparameterPsiWildcardType- this is for generic value parameter (havingcanonicalTextas? extends B)
Also tried to use PsiUtil.resolveGenericsClassInType(psiType).substitutor.substitutionMap, but this still brings me ? extends B and nothing more.
Any suggestions of how to get actual type parameter (which im my case is Class2)?
Had to admit that there is no way to achieve desired result by just a couple of utility methods. So the best way I can find is to get the type parameters of the field and then parse class name to extract real types by the names of generics.