KtFile.getClasses() returns empty array for non-jvm files
This commit is contained in:
+9
-1
@@ -12,11 +12,13 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
|
||||
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.util.isInDumbMode
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtFileClassProvider
|
||||
import org.jetbrains.kotlin.psi.analysisContext
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
||||
|
||||
class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
||||
KtFileClassProvider {
|
||||
@@ -33,7 +35,13 @@ class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
||||
val result = arrayListOf<PsiClass>()
|
||||
file.declarations.filterIsInstance<KtClassOrObject>().map { it.toLightClass() }.filterNotNullTo(result)
|
||||
|
||||
val moduleInfo = file.getModuleInfoPreferringJvmPlatform()
|
||||
val moduleInfo = file.getModuleInfo()
|
||||
// prohibit obtaining light classes for non-jvm modules trough KtFiles
|
||||
// common files might be in fact compiled to jvm and thus correspond to a PsiClass
|
||||
// this API does not provide context (like GSS) to be able to determine if this file is in fact seen through a jvm module
|
||||
// this also fixes a problem where a Java JUnit run configuration producer would produce run configurations for a common file
|
||||
if (moduleInfo.platform !is JvmPlatform) return emptyArray()
|
||||
|
||||
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
|
||||
val fileClassFqName = file.javaFileFacadeFqName
|
||||
|
||||
|
||||
Reference in New Issue
Block a user