mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
remove java-psi->projectModel dependency to minimize kotlinc (IDEA-CR-7075)
This commit is contained in:
@@ -8,6 +8,5 @@
|
||||
<orderEntry type="jdk" jdkName="IDEA jdk" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="core-api" exported="" />
|
||||
<orderEntry type="module" module-name="projectModel-api" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -16,24 +16,9 @@
|
||||
|
||||
package com.intellij.psi.util;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiAnonymousClass;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
@@ -57,31 +42,4 @@ public class PsiClassUtil {
|
||||
if (mustNotBeAbstract && aClass.hasModifierProperty(PsiModifier.ABSTRACT)) return false;
|
||||
return aClass.getContainingClass() == null || aClass.hasModifierProperty(PsiModifier.STATIC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches the project for modules that contain the class with the specified full-qualified name within
|
||||
* the module dependencies or libraries.
|
||||
*
|
||||
* @param qualifiedName the full-qualified name of the class to find.
|
||||
* @return the modules that contain the given class in dependencies or libraries.
|
||||
*/
|
||||
@NotNull
|
||||
public static Collection<Module> findModulesWithClass(@NotNull Project project, @NonNls @NotNull String qualifiedName) {
|
||||
GlobalSearchScope allScope = GlobalSearchScope.allScope(project);
|
||||
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||
PsiClass[] possibleClasses = facade.findClasses(qualifiedName, allScope);
|
||||
if (possibleClasses.length == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Set<Module> relevantModules = ContainerUtil.newLinkedHashSet();
|
||||
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
|
||||
for (PsiClass aClass : possibleClasses) {
|
||||
VirtualFile classFile = aClass.getContainingFile().getVirtualFile();
|
||||
for (OrderEntry orderEntry : fileIndex.getOrderEntriesForFile(classFile)) {
|
||||
relevantModules.add(orderEntry.getOwnerModule());
|
||||
}
|
||||
}
|
||||
return relevantModules;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+3
-3
@@ -34,7 +34,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.PsiClassUtil;
|
||||
import com.intellij.psi.util.FindClassUtil;
|
||||
import com.intellij.testFramework.PsiTestCase;
|
||||
import com.intellij.testFramework.PsiTestUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -182,12 +182,12 @@ public class FindClassTest extends PsiTestCase {
|
||||
assertNotNull(psiClass);
|
||||
PsiClass psiClass2 = myJavaFacade.findClass("p.A", otherModules.get(0).getModuleWithDependenciesAndLibrariesScope(true));
|
||||
assertNotNull(psiClass2);
|
||||
Collection<Module> modules = PsiClassUtil.findModulesWithClass(myProject, "p.A");
|
||||
Collection<Module> modules = FindClassUtil.findModulesWithClass(myProject, "p.A");
|
||||
assertSameElements(modules, getModule(), otherModules.get(0));
|
||||
|
||||
PsiClass packClass = myJavaFacade.findClass("pack.MyClass", otherModules.get(0).getModuleWithDependenciesAndLibrariesScope(true));
|
||||
assertNotNull(packClass);
|
||||
Collection<Module> packModules = PsiClassUtil.findModulesWithClass(myProject, "pack.MyClass");
|
||||
Collection<Module> packModules = FindClassUtil.findModulesWithClass(myProject, "pack.MyClass");
|
||||
assertSameElements(packModules, otherModules.get(0));
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.psi.util;
|
||||
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
public class FindClassUtil {
|
||||
/**
|
||||
* Searches the project for modules that contain the class with the specified full-qualified name within
|
||||
* the module dependencies or libraries.
|
||||
*
|
||||
* @param qualifiedName the full-qualified name of the class to find.
|
||||
* @return the modules that contain the given class in dependencies or libraries.
|
||||
*/
|
||||
@NotNull
|
||||
public static Collection<Module> findModulesWithClass(@NotNull Project project, @NonNls @NotNull String qualifiedName) {
|
||||
GlobalSearchScope allScope = GlobalSearchScope.allScope(project);
|
||||
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||
PsiClass[] possibleClasses = facade.findClasses(qualifiedName, allScope);
|
||||
if (possibleClasses.length == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Set<Module> relevantModules = ContainerUtil.newLinkedHashSet();
|
||||
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
|
||||
for (PsiClass aClass : possibleClasses) {
|
||||
VirtualFile classFile = aClass.getContainingFile().getVirtualFile();
|
||||
for (OrderEntry orderEntry : fileIndex.getOrderEntriesForFile(classFile)) {
|
||||
relevantModules.add(orderEntry.getOwnerModule());
|
||||
}
|
||||
}
|
||||
return relevantModules;
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.PsiClassUtil;
|
||||
import com.intellij.psi.util.FindClassUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.config.AbstractConfigUtils;
|
||||
@@ -97,7 +97,7 @@ public class DefaultGroovyShellRunner extends GroovyShellConfig {
|
||||
public Collection<Module> getPossiblySuitableModules(Project project) {
|
||||
Set<Module> results = null;
|
||||
for (String className : REQUIRED_GROOVY_CLASSES) {
|
||||
Collection<Module> someModules = PsiClassUtil.findModulesWithClass(project, className);
|
||||
Collection<Module> someModules = FindClassUtil.findModulesWithClass(project, className);
|
||||
if (results == null) {
|
||||
results = ContainerUtil.newLinkedHashSet(someModules);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user