New J2K: do not require module to be present on converting

It may not be present when performing conversion inside repl
This commit is contained in:
Ilya Kirillov
2019-09-29 11:49:12 +03:00
parent f77825b85a
commit 9deb7dc8d6
3 changed files with 6 additions and 5 deletions
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.nj2k.types.JKTypeFactory
import org.jetbrains.kotlin.psi.*
class JKSymbolProvider(project: Project, module: Module, contextElement: PsiElement) {
class JKSymbolProvider(project: Project, module: Module?, contextElement: PsiElement) {
private val symbolsByFqName = mutableMapOf<String, JKSymbol>()
val symbolsByPsi = mutableMapOf<PsiElement, JKSymbol>()
private val symbolsByJK = mutableMapOf<JKDeclaration, JKSymbol>()
@@ -97,9 +97,8 @@ class NewJavaToKotlinConverter(
override fun elementsToKotlin(inputElements: List<PsiElement>, processor: WithProgressProcessor): Result {
val phaseDescription = "Converting Java code to Kotlin code"
val module = targetModule ?: error("Module should not be null for new J2K")
val contextElement = inputElements.firstOrNull() ?: return Result(emptyList(), null, null)
val symbolProvider = JKSymbolProvider(project, module, contextElement)
val symbolProvider = JKSymbolProvider(project, targetModule, contextElement)
val typeFactory = JKTypeFactory(symbolProvider)
symbolProvider.typeFactory = typeFactory
symbolProvider.preBuildTree(inputElements)
@@ -22,8 +22,10 @@ import org.jetbrains.kotlin.psi.psiUtil.getChildOfType
import org.jetbrains.kotlin.resolve.ImportPath
class JKResolver(private val project: Project, module: Module, private val contextElement: PsiElement) {
private val scope = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)
class JKResolver(private val project: Project, module: Module?, private val contextElement: PsiElement) {
private val scope = module?.let {
GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(it)
} ?: GlobalSearchScope.allScope(project)
fun resolveDeclaration(fqName: FqName): PsiElement? =
resolveFqNameOfKtClassByIndex(fqName)