diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt index c94e11a3fe7..5025fa38a94 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.j2k import com.intellij.psi.* +import org.jetbrains.kotlin.j2k.tree.JKLocalVariable import org.jetbrains.kotlin.j2k.tree.impl.* import org.jetbrains.kotlin.psi.KtClassOrObject @@ -30,6 +31,10 @@ class JKSymbolProvider { } } + fun provideLocalVarSymbol(psi: PsiLocalVariable, variable: JKLocalVariable): JKSymbol { + return symbols.getOrPut(psi) { JKUniverseFieldSymbol(variable) } + } + private inner class ElementVisitor : JavaElementVisitor() { override fun visitClass(aClass: PsiClass) { symbols[aClass] = JKUniverseClassSymbol() diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 05e7503296b..9ce03db9dd5 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -113,8 +113,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { fun PsiMethodCallExpression.toJK(): JKExpression { val method = methodExpression as PsiReferenceExpressionImpl - val identifier = JKMultiverseMethodSymbol(method.reference?.resolve() as PsiMethod) - val call = JKJavaMethodCallExpressionImpl(identifier as JKMethodSymbol, argumentList.toJK()) + val call = JKJavaMethodCallExpressionImpl( + symbolProvider.provideSymbol(method.reference?.resolve() ?: TODO()) as JKMethodSymbol, argumentList.toJK() + ) return if (method.findChildByRole(ChildRole.DOT) != null) { JKQualifiedExpressionImpl((method.qualifier as PsiExpression).toJK(), JKJavaQualifierImpl.DOT, call) } else { @@ -269,7 +270,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { with(expressionTreeMapper) { it.typeElement.toJK() }, JKNameIdentifierImpl(it.name ?: TODO()), with(expressionTreeMapper) { it.initializer.toJK() } - ).also { i -> symbolProvider.symbols[it] = JKUniverseFieldSymbol(i) } + ).also { i -> symbolProvider.provideLocalVarSymbol(it, i) } } else TODO() } }