let groovy's getOriginalElement reuse java's functionality (it's a duplicate anyway)

This commit is contained in:
peter
2014-10-09 16:40:59 +02:00
parent db5b5d7598
commit a80f1e7c44
3 changed files with 2 additions and 51 deletions
@@ -19,18 +19,12 @@ package org.jetbrains.plugins.groovy.lang.psi.impl;
import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator;
import com.intellij.lang.ASTNode;
import com.intellij.openapi.diagnostic.Logger;
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.util.Key;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.AstBufferUtil;
import com.intellij.psi.impl.source.tree.Factory;
import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.tree.TokenSet;
import com.intellij.psi.util.MethodSignature;
@@ -395,48 +389,6 @@ public class PsiImplUtil {
return MethodSignatureUtil.isSubsignature(superSignatureCandidate, subSignature);
}
@Nullable
public static PsiElement getOriginalElement(PsiClass clazz, PsiFile containingFile) {
VirtualFile vFile = containingFile.getVirtualFile();
final JavaPsiFacade facade = JavaPsiFacade.getInstance(clazz.getProject());
final ProjectFileIndex idx = ProjectRootManager.getInstance(facade.getProject()).getFileIndex();
if (vFile == null || !idx.isInLibrarySource(vFile)) return clazz;
final String qName = clazz.getQualifiedName();
if (qName == null) return null;
final List<OrderEntry> orderEntries = idx.getOrderEntriesForFile(vFile);
PsiClass original = facade.findClass(qName, new GlobalSearchScope(facade.getProject()) {
@Override
public int compare(@NotNull VirtualFile file1, @NotNull VirtualFile file2) {
return 0;
}
@Override
public boolean contains(@NotNull VirtualFile file) {
// order for file and vFile has non empty intersection.
List<OrderEntry> entries = idx.getOrderEntriesForFile(file);
//noinspection ForLoopReplaceableByForEach
for (int i = 0; i < entries.size(); i++) {
final OrderEntry entry = entries.get(i);
if (orderEntries.contains(entry)) return true;
}
return false;
}
@Override
public boolean isSearchInModuleContent(@NotNull Module aModule) {
return false;
}
@Override
public boolean isSearchInLibraries() {
return true;
}
});
return original != null ? original : clazz;
}
@Nullable
public static PsiMethod extractUniqueElement(@NotNull GroovyResolveResult[] results) {
if (results.length != 1) return null;
@@ -674,7 +674,7 @@ public abstract class GrTypeDefinitionImpl extends GrStubElementBase<GrTypeDefin
@Nullable
@Override
public PsiElement getOriginalElement() {
return org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil.getOriginalElement(this, getContainingFile());
return JavaPsiImplementationHelper.getInstance(getProject()).getOriginalClass(this);
}
@Override
@@ -42,7 +42,6 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor;
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierList;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration;
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement;
import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil;
import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.TypesUtil;
import org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames;
@@ -557,7 +556,7 @@ public class GroovyScriptClass extends LightElement implements PsiClass, Synthet
@Override
@Nullable
public PsiElement getOriginalElement() {
return PsiImplUtil.getOriginalElement(this, myFile);
return JavaPsiImplementationHelper.getInstance(getProject()).getOriginalClass(this);
}
@Override