mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
IJPL-182721: Fix RubyMine indexing degradation and remove custom processing for global libraries and SDKs
GitOrigin-RevId: f99fc02200f9a3ef065c5f20d4744aaba449226e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f84c9164c0
commit
cbd1a11c19
@@ -151,7 +151,7 @@ public class RootsChangedTest extends JavaModuleTestCase {
|
||||
sdkModificator.commitChanges();
|
||||
});
|
||||
|
||||
myModuleRootListener.assertEventsCount(1);
|
||||
myModuleRootListener.assertEventsCount(2);
|
||||
}
|
||||
|
||||
public void testModuleJdkEditing() {
|
||||
@@ -177,7 +177,7 @@ public class RootsChangedTest extends JavaModuleTestCase {
|
||||
final SdkModificator sdkModificator = jdk.getSdkModificator();
|
||||
sdkModificator.addRoot(getTempDir().createVirtualDir(), OrderRootType.CLASSES);
|
||||
sdkModificator.commitChanges();
|
||||
myModuleRootListener.assertEventsCount(1);
|
||||
myModuleRootListener.assertEventsCount(2);
|
||||
|
||||
final SdkModificator sdkModificator2 = unused.getSdkModificator();
|
||||
sdkModificator2.addRoot(getTempDir().createVirtualDir(), OrderRootType.CLASSES);
|
||||
@@ -201,12 +201,12 @@ public class RootsChangedTest extends JavaModuleTestCase {
|
||||
|
||||
Sdk jdk = ProjectJdkTable.getInstance().createSdk("new-jdk", JavaSdk.getInstance());
|
||||
ProjectJdkTable.getInstance().addJdk(jdk, getTestRootDisposable());
|
||||
myModuleRootListener.assertEventsCount(1);
|
||||
myModuleRootListener.assertEventsCount(2);
|
||||
|
||||
final SdkModificator sdkModificator = jdk.getSdkModificator();
|
||||
sdkModificator.addRoot(getTempDir().createVirtualDir(), OrderRootType.CLASSES);
|
||||
sdkModificator.commitChanges();
|
||||
myModuleRootListener.assertEventsCount(1);
|
||||
myModuleRootListener.assertEventsCount(2);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ public class RootsChangedTest extends JavaModuleTestCase {
|
||||
final SdkModificator sdkModificator = jdk.getSdkModificator();
|
||||
sdkModificator.addRoot(getTempDir().createVirtualDir(), OrderRootType.CLASSES);
|
||||
sdkModificator.commitChanges();
|
||||
myModuleRootListener.assertEventsCount(1);
|
||||
myModuleRootListener.assertEventsCount(2);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.RootsChangeRescanningInfo
|
||||
import com.intellij.openapi.roots.AdditionalLibraryRootsProvider
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.VfsUtilCore
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
@@ -412,7 +413,8 @@ class ProjectEntityIndexingService(
|
||||
|
||||
private fun <E : WorkspaceEntity> isLibraryIgnoredByLibraryRootFileIndexContributor(newEntity: E): Boolean {
|
||||
return newEntity is LibraryEntity &&
|
||||
(newEntity as LibraryEntity).symbolicId.tableId is GlobalLibraryTableId
|
||||
(newEntity as LibraryEntity).symbolicId.tableId is GlobalLibraryTableId &&
|
||||
!Registry.`is`("ide.workspace.model.sdk.remove.custom.processing")
|
||||
}
|
||||
|
||||
private fun <E : WorkspaceEntity, C : WorkspaceEntity> handleDependencies(
|
||||
|
||||
@@ -118,18 +118,18 @@ public final class IndexableFilesIndexImpl implements IndexableFilesIndex {
|
||||
ProgressManager.checkCanceled();
|
||||
iterators.addAll(IndexableEntityProviderMethods.INSTANCE.createIterators(sdk));
|
||||
}
|
||||
}
|
||||
|
||||
LibraryTablesRegistrar tablesRegistrar = LibraryTablesRegistrar.getInstance();
|
||||
Sequence<LibraryTable> libs = SequencesKt.asSequence(tablesRegistrar.getCustomLibraryTables().iterator());
|
||||
libs = SequencesKt.plus(libs, tablesRegistrar.getLibraryTable());
|
||||
for (LibraryTable libraryTable : SequencesKt.asIterable(libs)) {
|
||||
for (Library library : libraryTable.getLibraries()) {
|
||||
ProgressManager.checkCanceled();
|
||||
if (moduleDependencyIndex.hasDependencyOn(library)) {
|
||||
for (IndexableFilesIterator iterator : Companion.createIteratorList(library)) {
|
||||
if (libraryOrigins.add(iterator.getOrigin())) {
|
||||
iterators.add(iterator);
|
||||
LibraryTablesRegistrar tablesRegistrar = LibraryTablesRegistrar.getInstance();
|
||||
Sequence<LibraryTable> libs = SequencesKt.asSequence(tablesRegistrar.getCustomLibraryTables().iterator());
|
||||
libs = SequencesKt.plus(libs, tablesRegistrar.getLibraryTable());
|
||||
for (LibraryTable libraryTable : SequencesKt.asIterable(libs)) {
|
||||
for (Library library : libraryTable.getLibraries()) {
|
||||
ProgressManager.checkCanceled();
|
||||
if (moduleDependencyIndex.hasDependencyOn(library)) {
|
||||
for (IndexableFilesIterator iterator : Companion.createIteratorList(library)) {
|
||||
if (libraryOrigins.add(iterator.getOrigin())) {
|
||||
iterators.add(iterator);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -300,8 +300,29 @@ internal class WorkspaceIndexingRootsBuilder(private val ignoreModuleRoots: Bool
|
||||
builders.addAll(forModuleRootsFileBased((entry.key as ModuleBridge).moduleEntityId, entry.value))
|
||||
}
|
||||
|
||||
val moduleDependencyIndex = ModuleDependencyIndex.getInstance(project)
|
||||
|
||||
for (description in descriptions) {
|
||||
builders.addAll(description.createBuilders())
|
||||
when (description) {
|
||||
is LibraryRootsDescription -> {
|
||||
if (moduleDependencyIndex.hasDependencyOn(description.library.symbolicId)) {
|
||||
builders.addAll(description.createBuilders())
|
||||
}
|
||||
}
|
||||
is LibraryUrlRootsDescription -> {
|
||||
if (moduleDependencyIndex.hasDependencyOn(description.library.symbolicId)) {
|
||||
builders.addAll(description.createBuilders())
|
||||
}
|
||||
}
|
||||
is SdkRootsDescription -> {
|
||||
if (moduleDependencyIndex.hasDependencyOn(description.sdk.symbolicId)) {
|
||||
builders.addAll(description.createBuilders())
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
builders.addAll(description.createBuilders())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
builders.addAll(ReincludedRootsUtil.createBuildersForReincludedFiles(project, reincludedRoots))
|
||||
@@ -327,16 +348,20 @@ internal class WorkspaceIndexingRootsBuilder(private val ignoreModuleRoots: Bool
|
||||
is EntityContentRootsCustomizedModuleAwareDescription<*> -> contentIterators.addAll(description.createIterators())
|
||||
is EntityGenericContentRootsDescription<*> -> contentIterators.addAll(description.createIterators())
|
||||
is LibraryRootsDescription -> {
|
||||
description.createIterators(storage).forEach { iterator ->
|
||||
if (libraryOriginsToFilterDuplicates.add(iterator.origin)) {
|
||||
externalIterators.add(iterator)
|
||||
if (moduleDependencyIndex.hasDependencyOn(description.library.symbolicId)) {
|
||||
description.createIterators(storage).forEach { iterator ->
|
||||
if (libraryOriginsToFilterDuplicates.add(iterator.origin)) {
|
||||
externalIterators.add(iterator)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
is LibraryUrlRootsDescription -> {
|
||||
description.createIterators(storage).forEach { iterator ->
|
||||
if (libraryOriginsToFilterDuplicates.add(iterator.origin)) {
|
||||
externalIterators.add(iterator)
|
||||
if (moduleDependencyIndex.hasDependencyOn(description.library.symbolicId)) {
|
||||
description.createIterators(storage).forEach { iterator ->
|
||||
if (libraryOriginsToFilterDuplicates.add(iterator.origin)) {
|
||||
externalIterators.add(iterator)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
description="Enable workspace model checking for listeners that execute more than 200ms"/>
|
||||
<registryKey key="ide.workspace.model.assertions.bridges.usage" defaultValue="false" restartRequired="true"
|
||||
description="Enable workspace model checking for accessing bridges from WSM listeners"/>
|
||||
<registryKey key="ide.workspace.model.sdk.remove.custom.processing" defaultValue="false" restartRequired="true"
|
||||
<registryKey key="ide.workspace.model.sdk.remove.custom.processing" defaultValue="true" restartRequired="true"
|
||||
description="Removes custom processing of Global Libraries and SDKs in the Workspace Model"/>
|
||||
<registryKey key="ide.workspace.model.per.environment.model.separation" defaultValue="false" restartRequired="true"
|
||||
description="Enable existence of multiple workspace models, one per each isolated environment"/>
|
||||
|
||||
Reference in New Issue
Block a user