[LL FIR, Java] fix resolve contract violation from java symbol provider from permits
To create a smart psi type pointer, IJ Platform uses resolve We cannot use resolve from JavaSymbolProvider, as it may lead to resolve contract violation ^KT-59243 Fixed
This commit is contained in:
committed by
Space Team
parent
5af8b9e819
commit
7631e90f12
+8
-1
@@ -48,7 +48,6 @@ internal class JavaElementDelegatingExpressionTypeSourceWithSmartPointer<TYPE :
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
internal class JavaElementDelegatingTypeParameterBoundTypeSourceWithSmartPointer<TYPE : PsiType>(
|
||||
override val psiPointer: SmartPsiElementPointer<out PsiTypeParameter>,
|
||||
private val boundIndex: Int,
|
||||
@@ -68,3 +67,11 @@ internal class JavaElementDelegatingSuperTypeSourceWithSmartPointer(
|
||||
) : JavaElementDelegatingTypeSourceWithSmartPointer<PsiClass, PsiClassType>() {
|
||||
override fun getType(psi: PsiClass): PsiClassType = psi.superTypes[superTypeIndex]
|
||||
}
|
||||
|
||||
internal class JavaElementDelegatingPermittedTypeSourceWithSmartPointer(
|
||||
override val psiPointer: SmartPsiElementPointer<out PsiClass>,
|
||||
private val permittedTypeIndex: Int,
|
||||
override val factory: JavaElementSourceFactory,
|
||||
) : JavaElementDelegatingTypeSourceWithSmartPointer<PsiClass, PsiClassType>() {
|
||||
override fun getType(psi: PsiClass): PsiClassType = psi.permitsListTypes[permittedTypeIndex]
|
||||
}
|
||||
|
||||
+12
@@ -61,4 +61,16 @@ class JavaElementSourceWithSmartPointerFactory(project: Project) : JavaElementSo
|
||||
require(psiExpressionSource is JavaElementPsiSourceWithSmartPointer)
|
||||
return JavaElementDelegatingExpressionTypeSourceWithSmartPointer(psiExpressionSource.pointer, psiExpressionSource.factory)
|
||||
}
|
||||
|
||||
override fun createPermittedTypeSource(
|
||||
psiTypeParameterSource: JavaElementPsiSource<out PsiClass>,
|
||||
permittedTypeIndex: Int
|
||||
): JavaElementTypeSource<PsiClassType> {
|
||||
require(psiTypeParameterSource is JavaElementPsiSourceWithSmartPointer)
|
||||
return JavaElementDelegatingPermittedTypeSourceWithSmartPointer(
|
||||
psiTypeParameterSource.pointer,
|
||||
permittedTypeIndex,
|
||||
psiTypeParameterSource.factory,
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user