New J2K: Assume parameters when prebuilding symbol provider symbols fro converting declarations
This commit is contained in:
committed by
Ilya Kirillov
parent
67a8f445b0
commit
fb6560c1f1
@@ -75,14 +75,15 @@ class JKSymbolProvider {
|
|||||||
symbolsByJK[jk] = it
|
symbolsByJK[jk] = it
|
||||||
}
|
}
|
||||||
|
|
||||||
fun provideUniverseSymbol(psi: PsiElement): JKSymbol = symbolsByPsi.getOrPut(psi) {
|
fun provideUniverseSymbol(psi: PsiElement): JKSymbol =
|
||||||
when (psi) {
|
symbolsByPsi.getOrPut(psi) {
|
||||||
is PsiField, is PsiParameter, is PsiLocalVariable -> JKUniverseFieldSymbol()
|
when (psi) {
|
||||||
is PsiMethod -> JKUniverseMethodSymbol(this)
|
is PsiVariable -> JKUniverseFieldSymbol(this)
|
||||||
is PsiClass -> JKUniverseClassSymbol()
|
is PsiMethod -> JKUniverseMethodSymbol(this)
|
||||||
else -> TODO()
|
is PsiClass -> JKUniverseClassSymbol(this)
|
||||||
|
else -> TODO()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
fun transferSymbol(to: JKDeclaration, from: JKDeclaration) = symbolsByJK[from]!!.let {
|
fun transferSymbol(to: JKDeclaration, from: JKDeclaration) = symbolsByJK[from]!!.let {
|
||||||
it as JKUniverseSymbol<*>
|
it as JKUniverseSymbol<*>
|
||||||
@@ -91,11 +92,11 @@ class JKSymbolProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun provideUniverseSymbol(jk: JKClass): JKClassSymbol = symbolsByJK.getOrPut(jk) {
|
fun provideUniverseSymbol(jk: JKClass): JKClassSymbol = symbolsByJK.getOrPut(jk) {
|
||||||
JKUniverseClassSymbol().also { it.target = jk }
|
JKUniverseClassSymbol(this).also { it.target = jk }
|
||||||
} as JKClassSymbol
|
} as JKClassSymbol
|
||||||
|
|
||||||
fun provideUniverseSymbol(jk: JKVariable): JKFieldSymbol = symbolsByJK.getOrPut(jk) {
|
fun provideUniverseSymbol(jk: JKVariable): JKFieldSymbol = symbolsByJK.getOrPut(jk) {
|
||||||
JKUniverseFieldSymbol().also { it.target = jk }
|
JKUniverseFieldSymbol(this).also { it.target = jk }
|
||||||
} as JKFieldSymbol
|
} as JKFieldSymbol
|
||||||
|
|
||||||
fun provideUniverseSymbol(jk: JKMethod): JKMethodSymbol = symbolsByJK.getOrPut(jk) {
|
fun provideUniverseSymbol(jk: JKMethod): JKMethodSymbol = symbolsByJK.getOrPut(jk) {
|
||||||
@@ -149,6 +150,10 @@ class JKSymbolProvider {
|
|||||||
|
|
||||||
|
|
||||||
private inner class ElementVisitor : JavaElementVisitor() {
|
private inner class ElementVisitor : JavaElementVisitor() {
|
||||||
|
override fun visitElement(element: PsiElement) {
|
||||||
|
element.acceptChildren(this)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitClass(aClass: PsiClass) {
|
override fun visitClass(aClass: PsiClass) {
|
||||||
provideUniverseSymbol(aClass)
|
provideUniverseSymbol(aClass)
|
||||||
aClass.acceptChildren(this)
|
aClass.acceptChildren(this)
|
||||||
@@ -158,12 +163,18 @@ class JKSymbolProvider {
|
|||||||
provideUniverseSymbol(field)
|
provideUniverseSymbol(field)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitParameter(parameter: PsiParameter) {
|
||||||
|
provideUniverseSymbol(parameter)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitMethod(method: PsiMethod) {
|
override fun visitMethod(method: PsiMethod) {
|
||||||
provideUniverseSymbol(method)
|
provideUniverseSymbol(method)
|
||||||
|
method.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitEnumConstant(enumConstant: PsiEnumConstant) {
|
override fun visitEnumConstant(enumConstant: PsiEnumConstant) {
|
||||||
provideUniverseSymbol(enumConstant)
|
provideUniverseSymbol(enumConstant)
|
||||||
|
enumConstant.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitFile(file: PsiFile) {
|
override fun visitFile(file: PsiFile) {
|
||||||
|
|||||||
Reference in New Issue
Block a user