New J2K: Fix incorrect imports collecting
This commit is contained in:
committed by
Ilya Kirillov
parent
8caf45820c
commit
40f5ebb77e
@@ -12,8 +12,10 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import com.intellij.psi.CommonClassNames
|
import com.intellij.psi.CommonClassNames
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKClassSymbol
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKImportStatementImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKImportStatementImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKNameIdentifierImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKNameIdentifierImpl
|
||||||
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKUniverseClassSymbol
|
||||||
import org.jetbrains.kotlin.nj2k.tree.visitors.JKVisitorVoid
|
import org.jetbrains.kotlin.nj2k.tree.visitors.JKVisitorVoid
|
||||||
|
|
||||||
|
|
||||||
@@ -84,18 +86,28 @@ class ImportStatementConversion : RecursiveApplicableConversionBase() {
|
|||||||
it.substringBeforeLast(".") !in defaultImports && it.contains(".")
|
it.substringBeforeLast(".") !in defaultImports && it.contains(".")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun addClassSymbol(symbol: JKClassSymbol) {
|
||||||
|
if (symbol !is JKUniverseClassSymbol) {
|
||||||
|
unfilteredCollectedFqNames += symbol.fqName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitTreeElement(treeElement: JKTreeElement) {
|
override fun visitTreeElement(treeElement: JKTreeElement) {
|
||||||
treeElement.acceptChildren(this)
|
treeElement.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitClassAccessExpression(classAccessExpression: JKClassAccessExpression) {
|
||||||
|
addClassSymbol(classAccessExpression.identifier)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitJavaNewExpression(javaNewExpression: JKJavaNewExpression) {
|
override fun visitJavaNewExpression(javaNewExpression: JKJavaNewExpression) {
|
||||||
unfilteredCollectedFqNames += javaNewExpression.classSymbol.fqName!!
|
addClassSymbol(javaNewExpression.classSymbol)
|
||||||
javaNewExpression.acceptChildren(this)
|
javaNewExpression.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitTypeElement(typeElement: JKTypeElement, data: Nothing?) {
|
override fun visitTypeElement(typeElement: JKTypeElement, data: Nothing?) {
|
||||||
val classType = typeElement.type as? JKClassType ?: return
|
val classType = typeElement.type as? JKClassType ?: return
|
||||||
unfilteredCollectedFqNames += classType.classReference.fqName!!
|
addClassSymbol(classType.classReference)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression) {
|
override fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression) {
|
||||||
@@ -104,12 +116,13 @@ class ImportStatementConversion : RecursiveApplicableConversionBase() {
|
|||||||
|
|
||||||
override fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression) {
|
override fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression) {
|
||||||
unfilteredCollectedFqNames += methodCallExpression.identifier.fqName
|
unfilteredCollectedFqNames += methodCallExpression.identifier.fqName
|
||||||
|
methodCallExpression.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitClassLiteralExpression(classLiteralExpression: JKClassLiteralExpression) {
|
override fun visitClassLiteralExpression(classLiteralExpression: JKClassLiteralExpression) {
|
||||||
val type = classLiteralExpression.classType.type
|
val type = classLiteralExpression.classType.type
|
||||||
if (type is JKClassType) {
|
if (type is JKClassType) {
|
||||||
unfilteredCollectedFqNames += type.classReference.fqName!!
|
addClassSymbol(type.classReference)
|
||||||
}
|
}
|
||||||
classLiteralExpression.acceptChildren(this)
|
classLiteralExpression.acceptChildren(this)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user