From 645f193d451cfcea81247c8cecb1841cc3383b2e Mon Sep 17 00:00:00 2001 From: Ilia Malakhov Date: Tue, 17 Feb 2026 14:37:47 +0100 Subject: [PATCH] IJPL-219909 add method getWorkspaceContentFileSetRoot to ProjectFileIndex Method calculating relative path for FilePatternPackageSet is static and has only ProjectFileIndex. Having this method will allow calculating relative path from any content file set root GitOrigin-RevId: 84273a6b50c512ba52ab421e69bbf400155fb486 --- .../ide/lightEdit/project/LightEditProjectFileIndex.java | 3 +++ .../src/com/intellij/openapi/roots/ProjectFileIndex.java | 6 ++++++ .../intellij/openapi/roots/impl/ProjectFileIndexImpl.java | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/lightEdit/project/LightEditProjectFileIndex.java b/platform/platform-impl/src/com/intellij/ide/lightEdit/project/LightEditProjectFileIndex.java index 87034c923ee5..90f61bea5cab 100644 --- a/platform/platform-impl/src/com/intellij/ide/lightEdit/project/LightEditProjectFileIndex.java +++ b/platform/platform-impl/src/com/intellij/ide/lightEdit/project/LightEditProjectFileIndex.java @@ -176,4 +176,7 @@ final class LightEditProjectFileIndex implements ProjectFileIndex { public @Nullable String getUnloadedModuleNameForFile(@NotNull VirtualFile fileOrDir) { return null; } + + @Override + public @Nullable VirtualFile getWorkspaceContentFileSetRoot(@NotNull VirtualFile fileOrDir) { return null; } } diff --git a/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectFileIndex.java b/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectFileIndex.java index dc44adb91dfc..5b7f1a2c68c2 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectFileIndex.java +++ b/platform/projectModel-api/src/com/intellij/openapi/roots/ProjectFileIndex.java @@ -4,6 +4,7 @@ package com.intellij.openapi.roots; import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.IntellijInternalApi; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.platform.workspace.jps.entities.LibraryEntity; import com.intellij.platform.workspace.jps.entities.SdkEntity; @@ -227,4 +228,9 @@ public interface ProjectFileIndex extends FileIndex { * to an unloaded module. */ @Nullable String getUnloadedModuleNameForFile(@NotNull VirtualFile fileOrDir); + + /// Use [com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndex.getContentFileSetRoot] instead + @ApiStatus.Internal + @IntellijInternalApi + @Nullable VirtualFile getWorkspaceContentFileSetRoot(@NotNull VirtualFile fileOrDir); } diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java index d8a4d2b42a9d..151942feacde 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ProjectFileIndexImpl.java @@ -18,6 +18,7 @@ import com.intellij.platform.workspace.jps.entities.SdkEntity; import com.intellij.platform.workspace.storage.ImmutableEntityStorage; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; +import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileIndex; import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileKind; import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileSet; import com.intellij.workspaceModel.core.fileIndex.WorkspaceFileSetWithCustomData; @@ -317,6 +318,11 @@ public class ProjectFileIndexImpl extends FileIndexBase implements ProjectFileIn return fileSet != null ? fileSet.getData().getModuleName() : null; } + @Override + public @Nullable VirtualFile getWorkspaceContentFileSetRoot(@NotNull VirtualFile fileOrDir) { + return WorkspaceFileIndex.getInstance(myProject).getContentFileSetRoot(fileOrDir, true); + } + @Override protected boolean isScopeDisposed() { return myProject.isDisposed();