mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Avoid PsiElementFilter and CollectFilteredElements; deprecate CollectFilteredElements
GitOrigin-RevId: 8ae4be6a3f4ce016d8a8b0d317d43da201a3d6d7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6254cd93bf
commit
022075be4b
@@ -20,18 +20,19 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.SyntaxTraverser;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.util.PsiElementFilter;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.SmartList;
|
||||
import org.intellij.lang.regexp.psi.RegExpBackref;
|
||||
import org.intellij.lang.regexp.psi.RegExpElement;
|
||||
import org.intellij.lang.regexp.psi.RegExpElementVisitor;
|
||||
import org.intellij.lang.regexp.psi.RegExpGroup;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.intellij.openapi.util.text.StringUtil.trimEnd;
|
||||
import static com.intellij.openapi.util.text.StringUtil.trimStart;
|
||||
|
||||
@@ -94,12 +95,9 @@ public class RegExpBackrefImpl extends RegExpElementImpl implements RegExpBackre
|
||||
|
||||
@Nullable
|
||||
private RegExpGroup resolveRelativeGroup(int index) {
|
||||
PsiElementProcessor.CollectFilteredElements<PsiElement> processor =
|
||||
new PsiElementProcessor.CollectFilteredElements<>(
|
||||
element -> element instanceof RegExpGroup && ((RegExpGroup)element).isCapturing());
|
||||
PsiTreeUtil.processElements(getContainingFile(), processor);
|
||||
SmartList<PsiElement> elements = new SmartList<>(processor.getCollection());
|
||||
return index <= elements.size() ? (RegExpGroup)elements.get(elements.size() - index) : null;
|
||||
List<RegExpGroup> groups = SyntaxTraverser.psiTraverser(getContainingFile()).filter(RegExpGroup.class)
|
||||
.filter(RegExpGroup::isCapturing).toList();
|
||||
return index <= groups.size() ? groups.get(groups.size() - index) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.SyntaxTraverser;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -122,11 +123,8 @@ public class RegExpNamedGroupRefImpl extends RegExpElementImpl implements RegExp
|
||||
|
||||
@Override
|
||||
public Object @NotNull [] getVariants() {
|
||||
final PsiElementProcessor.CollectFilteredElements<PsiElement> processor = new PsiElementProcessor.CollectFilteredElements<>(
|
||||
e -> e instanceof RegExpGroup && ((RegExpGroup)e).isAnyNamedGroup()
|
||||
);
|
||||
PsiTreeUtil.processElements(getContainingFile(), processor);
|
||||
return processor.toArray();
|
||||
return SyntaxTraverser.psiTraverser(getContainingFile()).filter(RegExpGroup.class)
|
||||
.filter(RegExpGroup::isAnyNamedGroup).toArray(new RegExpGroup[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -69,6 +69,11 @@ public interface PsiElementProcessor<T extends PsiElement> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use {@link com.intellij.psi.SyntaxTraverser} API instead. E.g.
|
||||
* {@code SyntaxTraverser.psiTraverser(root).filter(ElementType.class).filter(additionalFilter).toList()}
|
||||
*/
|
||||
@Deprecated
|
||||
class CollectFilteredElements<T extends PsiElement> extends CollectElements<T> {
|
||||
private final PsiElementFilter myFilter;
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.search.PsiElementProcessor.CollectElements;
|
||||
import com.intellij.psi.search.PsiElementProcessor.CollectFilteredElements;
|
||||
import com.intellij.psi.search.PsiElementProcessor.FindElement;
|
||||
import com.intellij.psi.stubs.StubElement;
|
||||
import com.intellij.psi.templateLanguages.OuterLanguageElement;
|
||||
@@ -851,9 +850,12 @@ public class PsiTreeUtil {
|
||||
|
||||
@Contract(pure=true)
|
||||
public static PsiElement @NotNull [] collectElements(@Nullable PsiElement element, @NotNull PsiElementFilter filter) {
|
||||
CollectFilteredElements<PsiElement> processor = new CollectFilteredElements<>(filter);
|
||||
processElements(element, processor);
|
||||
return processor.toArray();
|
||||
List<PsiElement> result = new ArrayList<>();
|
||||
processElements(element, e -> {
|
||||
if (filter.isAccepted(e)) result.add(e);
|
||||
return true;
|
||||
});
|
||||
return result.toArray(PsiElement.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
|
||||
+8
-7
@@ -7,10 +7,8 @@ import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.search.PsiElementProcessor.CollectFilteredElements;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
@@ -19,7 +17,9 @@ import com.siyeh.ig.psiutils.HighlightUtils;
|
||||
import com.siyeh.ig.psiutils.ParenthesesUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class ExtractParameterAsLocalVariableFix extends InspectionGadgetsFix {
|
||||
|
||||
@@ -77,29 +77,30 @@ public class ExtractParameterAsLocalVariableFix extends InspectionGadgetsFix {
|
||||
PsiDeclarationStatement newStatement = (PsiDeclarationStatement)
|
||||
JavaPsiFacade.getElementFactory(project).createStatementFromText(
|
||||
type.getCanonicalText() + ' ' + variableName + '=' + initializerText + ';', body);
|
||||
final CollectFilteredElements<PsiReferenceExpression> collector = new CollectFilteredElements<>(
|
||||
e -> e instanceof PsiReferenceExpression && ((PsiReferenceExpression)e).resolve() == parameter);
|
||||
final PsiCodeBlock codeBlock = (PsiCodeBlock)body;
|
||||
List<PsiReferenceExpression> refs = new ArrayList<>();
|
||||
PsiStatement anchor = null;
|
||||
for (PsiStatement statement : codeBlock.getStatements()) {
|
||||
if (anchor == null) {
|
||||
if (rhs == null && !JavaHighlightUtil.isSuperOrThisCall(statement, true, true)) {
|
||||
anchor = statement;
|
||||
PsiTreeUtil.processElements(statement, PsiReferenceExpression.class, collector);
|
||||
SyntaxTraverser.psiTraverser(statement).filter(PsiReferenceExpression.class)
|
||||
.filter(ref -> ref.isReferenceTo(parameter)).addAllTo(refs);
|
||||
}
|
||||
else if (statement.getTextRange().contains(parameterReference.getTextRange())) {
|
||||
anchor = statement;
|
||||
}
|
||||
}
|
||||
else {
|
||||
PsiTreeUtil.processElements(statement, PsiReferenceExpression.class, collector);
|
||||
SyntaxTraverser.psiTraverser(statement).filter(PsiReferenceExpression.class)
|
||||
.filter(ref -> ref.isReferenceTo(parameter)).addAllTo(refs);
|
||||
}
|
||||
}
|
||||
assert anchor != null;
|
||||
newStatement = (PsiDeclarationStatement)(rhs == null
|
||||
? codeBlock.addBefore(newStatement, anchor)
|
||||
: tracker.replaceAndRestoreComments(anchor, newStatement));
|
||||
replaceReferences(collector.getCollection(), variableName, body);
|
||||
replaceReferences(refs, variableName, body);
|
||||
if (isOnTheFly()) {
|
||||
final PsiLocalVariable variable = (PsiLocalVariable)newStatement.getDeclaredElements()[0];
|
||||
final PsiReference[] references = ReferencesSearch.search(variable, variable.getUseScope()).toArray(PsiReference.EMPTY_ARRAY);
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.search.searches.AllClassesSearch;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.PathUtil;
|
||||
@@ -380,17 +379,11 @@ public class TestNGUtil {
|
||||
}
|
||||
|
||||
public static PsiAnnotation[] getTestNGAnnotations(PsiElement element) {
|
||||
PsiElementProcessor.CollectFilteredElements<PsiAnnotation> processor = new PsiElementProcessor.CollectFilteredElements<>(e -> {
|
||||
if (e instanceof PsiAnnotation) {
|
||||
String name = ((PsiAnnotation)e).getQualifiedName();
|
||||
if (name != null && name.startsWith("org.testng.annotations")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
PsiTreeUtil.processElements(element, PsiAnnotation.class, processor);
|
||||
return processor.toArray(PsiAnnotation.EMPTY_ARRAY);
|
||||
return SyntaxTraverser.psiTraverser(element).filter(PsiAnnotation.class)
|
||||
.filter(anno -> {
|
||||
String name = anno.getQualifiedName();
|
||||
return name != null && name.startsWith("org.testng.annotations");
|
||||
}).toArray(PsiAnnotation.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
public static boolean isTestNGClass(PsiClass psiClass) {
|
||||
|
||||
Reference in New Issue
Block a user