less garbage in ReferenceListWeigher

This commit is contained in:
peter
2013-08-19 20:30:12 +02:00
parent 810869bf6d
commit ffb32f5029
2 changed files with 10 additions and 2 deletions
@@ -18,6 +18,7 @@ package com.intellij.psi.util.proximity;
import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.patterns.PsiElementPattern;
import com.intellij.psi.*;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.psi.util.ProximityLocation;
@@ -29,6 +30,9 @@ import org.jetbrains.annotations.Nullable;
*/
public class ReferenceListWeigher extends ProximityWeigher {
private static final PsiElementPattern.Capture<PsiElement> INSIDE_REFERENCE_LIST =
PlatformPatterns.psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiReferenceList.class);
protected enum Preference {
Interfaces, Classes, Exceptions
}
@@ -36,7 +40,7 @@ public class ReferenceListWeigher extends ProximityWeigher {
@Nullable
protected Preference getPreferredCondition(@NotNull ProximityLocation location) {
PsiElement position = location.getPosition();
if (PlatformPatterns.psiElement().withParents(PsiJavaCodeReferenceElement.class, PsiReferenceList.class).accepts(position)) {
if (INSIDE_REFERENCE_LIST.accepts(position)) {
assert position != null;
PsiReferenceList list = (PsiReferenceList)position.getParent().getParent();
PsiReferenceList.Role role = list.getRole();
@@ -16,6 +16,7 @@
package org.jetbrains.plugins.groovy.lang.completion.weighers;
import com.intellij.patterns.PlatformPatterns;
import com.intellij.patterns.PsiElementPattern;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.ProximityLocation;
import com.intellij.psi.util.proximity.ReferenceListWeigher;
@@ -29,10 +30,13 @@ import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement;
* @author peter
*/
public class GrReferenceListWeigher extends ReferenceListWeigher {
private static final PsiElementPattern.Capture<PsiElement> INSIDE_REFERENCE_LIST =
PlatformPatterns.psiElement().withParents(GrCodeReferenceElement.class, GrReferenceList.class);
@Override
protected Preference getPreferredCondition(@NotNull ProximityLocation location) {
PsiElement position = location.getPosition();
if (PlatformPatterns.psiElement().withParents(GrCodeReferenceElement.class, GrReferenceList.class).accepts(position)) {
if (INSIDE_REFERENCE_LIST.accepts(position)) {
assert position != null;
GrReferenceList list = (GrReferenceList)position.getParent().getParent();
PsiElement parent = list.getParent();