LAB-31 add rename API to PythonAnalysisTool (wip). Move several EPs from lang to analysis

GitOrigin-RevId: e66c50404670eeca27358f942153f146d8c742b3
This commit is contained in:
Sergey Stupin
2020-01-07 10:02:06 +00:00
committed by intellij-monorepo-bot
parent 12924fa8e7
commit fbe47de0c5
14 changed files with 46 additions and 28 deletions
@@ -11,6 +11,13 @@
<extensionPoint name="weigher" beanClass="com.intellij.psi.WeigherExtensionPoint" dynamic="true">
<with attribute="implementationClass" implements="com.intellij.psi.Weigher"/>
</extensionPoint>
<extensionPoint name="codeInsight.containerProvider"
interface="com.intellij.codeInsight.ContainerProvider"
dynamic="true"/>
<extensionPoint name="referencesSearch" interface="com.intellij.util.QueryExecutor" dynamic="true"/>
</extensionPoints>
<extensions defaultExtensionNs="com.intellij">
<projectService serviceImplementation="com.intellij.psi.search.scope.packageSet.NamedScopeManager"/>
@@ -6,6 +6,9 @@
beanClass="com.intellij.codeInsight.completion.CompletionDataEP">
<with attribute="className" implements="com.intellij.codeInsight.completion.CompletionData"/>
</extensionPoint>
<extensionPoint name="useScopeEnlarger" interface="com.intellij.psi.search.UseScopeEnlarger" dynamic="true"/>
<extensionPoint name="useScopeOptimizer" interface="com.intellij.psi.search.ScopeOptimizer" dynamic="true"/>
</extensionPoints>
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceImplementation="com.intellij.codeInspection.ex.InspectionToolRegistrar"/>
@@ -19,6 +22,13 @@
<applicationService serviceImplementation="com.intellij.codeInsight.CodeInsightSettings"/>
<applicationService serviceInterface="com.intellij.codeInsight.completion.CompletionService"
serviceImplementation="com.intellij.codeInsight.completion.BaseCompletionService"/>
<applicationService serviceInterface="com.intellij.ide.plugins.PluginUtil"
serviceImplementation="com.intellij.ide.plugins.PluginUtilImpl"/>
<projectService serviceInterface="com.intellij.psi.impl.ResolveScopeManager"
serviceImplementation="com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl"/>
<projectService serviceInterface="com.intellij.psi.search.PsiSearchHelper"
serviceImplementation="com.intellij.psi.impl.search.PsiSearchHelperImpl"/>
<weigher key="completion" implementationClass="com.intellij.codeInsight.completion.PriorityWeigher" id="priority" order="first"/>
<weigher key="completion" implementationClass="com.intellij.codeInsight.completion.PrefixMatchingWeigher" id="prefix"
@@ -4,13 +4,16 @@ package com.intellij.refactoring.rename;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiNamedElement;
import com.intellij.psi.PsiPolyVariantReference;
import com.intellij.psi.PsiReference;
import com.intellij.psi.meta.PsiMetaData;
import com.intellij.psi.meta.PsiMetaOwner;
import com.intellij.psi.meta.PsiWritableMetaData;
import com.intellij.refactoring.listeners.RefactoringElementListener;
import com.intellij.refactoring.util.MoveRenameUsageInfo;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -22,10 +25,10 @@ public final class RenameUtilBase {
}
static void doRenameGenericNamedElement(@NotNull PsiElement namedElement,
String newName,
UsageInfo[] usages,
@Nullable RefactoringElementListener listener) {
public static void doRenameGenericNamedElement(@NotNull PsiElement namedElement,
String newName,
UsageInfo[] usages,
@Nullable RefactoringElementListener listener) {
PsiWritableMetaData writableMetaData = null;
if (namedElement instanceof PsiMetaOwner) {
final PsiMetaData metaData = ((PsiMetaOwner)namedElement).getMetaData();
@@ -41,7 +44,8 @@ public final class RenameUtilBase {
for (UsageInfo usage : usages) {
if (!(usage.getReference() instanceof BindablePsiReference)) {
rename(usage, newName);
} else {
}
else {
hasBindables = true;
}
}
@@ -85,4 +89,17 @@ public final class RenameUtilBase {
if (ref == null) return;
ref.handleElementRename(newName);
}
@ApiStatus.Internal
public static UsageInfo createMoveRenameUsageInfo(@NotNull PsiElement element,
@NotNull PsiReference ref,
@NotNull PsiElement referenceElement) {
return new MoveRenameUsageInfo(referenceElement, ref,
ref.getRangeInElement().getStartOffset(),
ref.getRangeInElement().getEndOffset(),
element,
ref.resolve() == null &&
!(ref instanceof PsiPolyVariantReference &&
((PsiPolyVariantReference)ref).multiResolve(true).length > 0));
}
}
@@ -8,14 +8,16 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.Pass;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileSystemItem;
import com.intellij.psi.PsiReference;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.refactoring.RefactoringSettings;
import com.intellij.refactoring.listeners.RefactoringElementListener;
import com.intellij.refactoring.util.MoveRenameUsageInfo;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.MultiMap;
@@ -250,11 +252,7 @@ public abstract class RenamePsiElementProcessor {
@NotNull
public UsageInfo createUsageInfo(@NotNull PsiElement element, @NotNull PsiReference ref, @NotNull PsiElement referenceElement) {
return new MoveRenameUsageInfo(referenceElement, ref,
ref.getRangeInElement().getStartOffset(),
ref.getRangeInElement().getEndOffset(),
element,
ref.resolve() == null && !(ref instanceof PsiPolyVariantReference && ((PsiPolyVariantReference)ref).multiResolve(true).length > 0));
return RenameUtilBase.createMoveRenameUsageInfo(element, ref, referenceElement);
}
final boolean myOldFindMethodsImplemented;
@@ -154,7 +154,6 @@
<with attribute="wordsScannerClass" implements="com.intellij.lang.cacheBuilder.WordsScanner"/>
</extensionPoint>
<extensionPoint name="referencesSearch" interface="com.intellij.util.QueryExecutor" dynamic="true"/>
<extensionPoint name="searcher" beanClass="com.intellij.openapi.util.ClassExtensionPoint" dynamic="true">
<with attribute="forClass" implements="com.intellij.model.search.SearchParameters"/>
<with attribute="implementationClass" implements="com.intellij.model.search.Searcher"/>
@@ -164,10 +163,8 @@
<extensionPoint name="indexPatternSearch" interface="com.intellij.util.QueryExecutor" dynamic="true"/>
<extensionPoint name="searchScopesProvider" interface="com.intellij.psi.search.SearchScopeProvider"/>
<extensionPoint name="useScopeEnlarger" interface="com.intellij.psi.search.UseScopeEnlarger" dynamic="true"/>
<extensionPoint name="resolveScopeEnlarger" interface="com.intellij.psi.ResolveScopeEnlarger"/>
<extensionPoint name="resolveScopeProvider" interface="com.intellij.psi.ResolveScopeProvider"/>
<extensionPoint name="useScopeOptimizer" interface="com.intellij.psi.search.ScopeOptimizer" dynamic="true"/>
<extensionPoint name="codeUsageScopeOptimizer" interface="com.intellij.psi.search.ScopeOptimizer" dynamic="true"/>
<extensionPoint name="generatedSourcesFilter" interface="com.intellij.openapi.roots.GeneratedSourcesFilter" dynamic="true"/>
@@ -108,9 +108,6 @@
<projectService serviceInterface="com.intellij.pom.references.PomService"
serviceImplementation="com.intellij.pom.references.PomServiceImpl"/>
<projectService serviceInterface="com.intellij.psi.search.PsiSearchHelper"
serviceImplementation="com.intellij.psi.impl.search.PsiSearchHelperImpl"/>
<projectService serviceInterface="com.intellij.psi.search.PsiTodoSearchHelper"
serviceImplementation="com.intellij.psi.impl.search.PsiTodoSearchHelperImpl"/>
@@ -325,8 +322,6 @@
serviceImplementation="com.intellij.psi.impl.cache.impl.IndexCacheManagerImpl"/>
<projectService serviceInterface="com.intellij.psi.impl.cache.TodoCacheManager"
serviceImplementation="com.intellij.psi.impl.cache.impl.IndexTodoCacheManagerImpl"/>
<projectService serviceInterface="com.intellij.psi.impl.ResolveScopeManager"
serviceImplementation="com.intellij.psi.impl.file.impl.ResolveScopeManagerImpl"/>
<testSourcesFilter implementation="com.intellij.openapi.roots.ProjectRootTestSourcesFilter"/>
<moduleService serviceInterface="com.intellij.openapi.roots.ModuleFileIndex"
serviceImplementation="com.intellij.openapi.roots.impl.ModuleFileIndexImpl"/>
@@ -14,10 +14,6 @@
<extensionPoint name="jps.plugin"
beanClass="com.intellij.jps.impl.JpsPluginBean"/>
<extensionPoint name="codeInsight.containerProvider"
interface="com.intellij.codeInsight.ContainerProvider"
dynamic="true"/>
<extensionPoint name="preloadingActivity"
interface="com.intellij.openapi.application.PreloadingActivity"
dynamic="true"/>
@@ -340,9 +340,6 @@
<toolWindow id="Events Watcher" anchor="bottom" canCloseContents="false" doNotActivateOnStart="true"
factoryClass="com.intellij.diagnostic.ui.EventsWatcherToolWindowFactory"/>
<applicationService serviceInterface="com.intellij.ide.plugins.PluginUtil"
serviceImplementation="com.intellij.ide.plugins.PluginUtilImpl"/>
<projectService serviceInterface="com.intellij.openapi.vfs.ReadonlyStatusHandler"
serviceImplementation="com.intellij.openapi.vcs.readOnlyHandler.ReadonlyStatusHandlerImpl"/>
<projectService serviceInterface="com.intellij.openapi.startup.StartupManager"
@@ -35,6 +35,7 @@
<referencesSearch implementation="com.jetbrains.python.psi.search.PyInitReferenceSearchExecutor"/>
<referencesSearch implementation="com.jetbrains.python.psi.search.PyClassReferenceSearchExecutor"/>
<referencesSearch implementation="com.jetbrains.python.psi.search.PyKeywordArgumentSearchExecutor"/>
<referencesSearch implementation="com.jetbrains.python.psi.search.PyStringReferenceSearch"/>
<lang.elementManipulator forClass="com.jetbrains.python.psi.PyStringLiteralExpression"
implementationClass="com.jetbrains.python.psi.impl.PyStringLiteralExpressionManipulator"/>
+1 -1
View File
@@ -457,7 +457,7 @@
order="first, before completionAutoPopup"/>
<referencesSearch implementation="com.jetbrains.python.magicLiteral.PyMagicLiteralReferenceSearcher"/>
<referencesSearch implementation="com.jetbrains.python.psi.search.PyStringReferenceSearch"/>
<findUsagesHandlerFactory implementation="com.jetbrains.python.findUsages.PyFindUsagesHandlerFactory" id="Python"
order="last, before default"/>
<readWriteAccessDetector implementation="com.jetbrains.python.findUsages.PyReadWriteAccessDetector"/>