From bedab246b8866bbd6d0381f5a8c1914e5659299a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Tue, 22 Jun 2021 17:52:30 +0200 Subject: [PATCH] IDEA-271874 Devkit: add main plugin as implicit dependency for module.xml GitOrigin-RevId: 5d65e4b51aa6564b6a90fe5baed203022196800b --- .../dom/index/PluginIdDependenciesIndex.java | 32 ++++++++++++++++--- .../ExtensionsDependencies-content.xml | 8 +++++ .../ExtensionsDependencies-module.xml | 1 - .../codeInsight/ExtensionsDependencies.xml | 8 +++++ .../PluginXmlFunctionalTest.groovy | 22 +++++++++---- 5 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-content.xml diff --git a/plugins/devkit/devkit-core/src/dom/index/PluginIdDependenciesIndex.java b/plugins/devkit/devkit-core/src/dom/index/PluginIdDependenciesIndex.java index 1a9a10aedc52..477744af3681 100644 --- a/plugins/devkit/devkit-core/src/dom/index/PluginIdDependenciesIndex.java +++ b/plugins/devkit/devkit-core/src/dom/index/PluginIdDependenciesIndex.java @@ -34,6 +34,9 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase getKeyDescriptor() { @@ -72,7 +75,7 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase getPluginAndDependsIds(Project project, Set files) { @@ -117,11 +128,24 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase findDependsTo(Project project, VirtualFile file) { - return FileBasedIndex.getInstance().getContainingFiles(NAME, getDependsIndexingKey(file.getName()), - GlobalSearchScopesCore.projectProductionScope(project)); + final Collection dependsFiles = + FileBasedIndex.getInstance().getContainingFiles(NAME, getDependsIndexingKey(file.getName()), + GlobalSearchScopesCore.projectProductionScope(project)); + + final Collection contentFiles = + FileBasedIndex.getInstance().getContainingFiles(NAME, getContentIndexingKey(file.getNameWithoutExtension()), + GlobalSearchScopesCore.projectProductionScope(project)); + + Collection allFiles = new ArrayList<>(dependsFiles); + allFiles.addAll(contentFiles); + return allFiles; } private static String getDependsIndexingKey(@NotNull String filename) { return FILENAME_KEY_PREFIX + filename; } + + private static String getContentIndexingKey(@NotNull String value) { + return CONTENT_KEY_PREFIX + value; + } } diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-content.xml b/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-content.xml new file mode 100644 index 000000000000..920485d75ddc --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-content.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-module.xml b/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-module.xml index d5549e7f8419..96bfcab2abe3 100644 --- a/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-module.xml +++ b/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies-module.xml @@ -1,5 +1,4 @@ - diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies.xml b/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies.xml index ba8c9e0684d1..889f4e46552d 100644 --- a/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies.xml +++ b/plugins/devkit/devkit-java-tests/testData/codeInsight/ExtensionsDependencies.xml @@ -3,6 +3,10 @@ JetBrains 1.0 + + + + @@ -11,6 +15,10 @@ + + + + diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy index c373d9c3ac3d..2493e8a7189f 100644 --- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy +++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy @@ -29,6 +29,7 @@ import com.intellij.psi.ElementDescriptionUtil import com.intellij.psi.PsiElement import com.intellij.psi.PsiField import com.intellij.psi.PsiReference +import com.intellij.testFramework.IdeaTestUtil import com.intellij.testFramework.PsiTestUtil import com.intellij.testFramework.TestDataPath import com.intellij.testFramework.builders.JavaModuleFixtureBuilder @@ -196,15 +197,24 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase { } void testExtensionsDependencies() { - String moduleName = "ExtensionsDependencies-module" - String moduleDescriptorFilename = "ExtensionsDependencies-module.xml" - VirtualFile moduleRoot = myFixture.tempDirFixture.findOrCreateDir(moduleName) - myFixture.copyFileToProject(moduleDescriptorFilename, "/"+ moduleName+ "/" + moduleDescriptorFilename) - Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, moduleName, moduleRoot); - ModuleRootModificationUtil.addDependency(getModule(), dependencyModule); + addExtensionsModule("ExtensionsDependencies-module") + VirtualFile contentFile = addExtensionsModule("ExtensionsDependencies-content") doHighlightingTest("ExtensionsDependencies.xml", "ExtensionsDependencies-plugin.xml") + + myFixture.configureFromExistingVirtualFile(contentFile) + doHighlightingTest() + } + + private VirtualFile addExtensionsModule(String name) { + String moduleDescriptorFilename = name+ ".xml" + VirtualFile moduleRoot = myFixture.tempDirFixture.findOrCreateDir(name) + VirtualFile file = myFixture.copyFileToProject(moduleDescriptorFilename, "/" + name + "/" + moduleDescriptorFilename) + Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, name, moduleRoot); + ModuleRootModificationUtil.setModuleSdk(dependencyModule, IdeaTestUtil.getMockJdk17()); + ModuleRootModificationUtil.addDependency(getModule(), dependencyModule); + return file } void testDependsHighlighting() {