Fix IDEA plugin behavior with classes in library sources
In case when some class was contained in sources of some library (in addition to classes of some library) we incorrectly assumed that its ModuleInfo is LibrarySourceInfo of that library, because we checked if the file was in library sources first. Now we check if the file is in library _classes_ first, and then sources #KT-5695 Fixed
This commit is contained in:
@@ -20,7 +20,6 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement
|
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement
|
||||||
import org.jetbrains.jet.lang.psi.*
|
import org.jetbrains.jet.lang.psi.*
|
||||||
import com.intellij.openapi.roots.ProjectFileIndex
|
import com.intellij.openapi.roots.ProjectFileIndex
|
||||||
import com.intellij.openapi.roots.LibraryOrSdkOrderEntry
|
|
||||||
import com.intellij.openapi.roots.LibraryOrderEntry
|
import com.intellij.openapi.roots.LibraryOrderEntry
|
||||||
import com.intellij.openapi.roots.JdkOrderEntry
|
import com.intellij.openapi.roots.JdkOrderEntry
|
||||||
import org.jetbrains.jet.asJava.FakeLightClassForFileOfPackage
|
import org.jetbrains.jet.asJava.FakeLightClassForFileOfPackage
|
||||||
@@ -70,20 +69,19 @@ private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFil
|
|||||||
|
|
||||||
val orderEntries = projectFileIndex.getOrderEntriesForFile(virtualFile)
|
val orderEntries = projectFileIndex.getOrderEntriesForFile(virtualFile)
|
||||||
|
|
||||||
val libraryOrSdkEntries = orderEntries.filterIsInstance(javaClass<LibraryOrSdkOrderEntry>())
|
@entries for (orderEntry in orderEntries) {
|
||||||
@entries for (libraryOrSdkOrderEntry in libraryOrSdkEntries) {
|
when (orderEntry) {
|
||||||
when (libraryOrSdkOrderEntry) {
|
|
||||||
is LibraryOrderEntry -> {
|
is LibraryOrderEntry -> {
|
||||||
val library = libraryOrSdkOrderEntry.getLibrary() ?: continue @entries
|
val library = orderEntry.getLibrary() ?: continue @entries
|
||||||
if (projectFileIndex.isInLibrarySource(virtualFile)) {
|
if (projectFileIndex.isInLibraryClasses(virtualFile)) {
|
||||||
return LibrarySourceInfo(project, library)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return LibraryInfo(project, library)
|
return LibraryInfo(project, library)
|
||||||
}
|
}
|
||||||
|
else if (projectFileIndex.isInLibrarySource(virtualFile)) {
|
||||||
|
return LibrarySourceInfo(project, library)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
is JdkOrderEntry -> {
|
is JdkOrderEntry -> {
|
||||||
val sdk = libraryOrSdkOrderEntry.getJdk() ?: continue @entries
|
val sdk = orderEntry.getJdk() ?: continue @entries
|
||||||
return SdkInfo(project, sdk)
|
return SdkInfo(project, sdk)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user