Utility method moved to util class
This commit is contained in:
@@ -25,11 +25,9 @@ import com.intellij.openapi.util.Key;
|
|||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.impl.PsiClassImplUtil;
|
import com.intellij.psi.impl.PsiClassImplUtil;
|
||||||
import com.intellij.psi.impl.java.stubs.PsiClassStub;
|
|
||||||
import com.intellij.psi.impl.java.stubs.PsiJavaFileStub;
|
import com.intellij.psi.impl.java.stubs.PsiJavaFileStub;
|
||||||
import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl;
|
import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl;
|
||||||
import com.intellij.psi.impl.light.AbstractLightClass;
|
import com.intellij.psi.impl.light.AbstractLightClass;
|
||||||
import com.intellij.psi.stubs.PsiFileStub;
|
|
||||||
import com.intellij.psi.stubs.StubElement;
|
import com.intellij.psi.stubs.StubElement;
|
||||||
import com.intellij.psi.util.*;
|
import com.intellij.psi.util.*;
|
||||||
import com.intellij.util.containers.Stack;
|
import com.intellij.util.containers.Stack;
|
||||||
@@ -108,7 +106,7 @@ public class JetLightClass extends AbstractLightClass implements JetJavaMirrorMa
|
|||||||
@Override
|
@Override
|
||||||
public PsiClass getDelegate() {
|
public PsiClass getDelegate() {
|
||||||
if (delegate == null) {
|
if (delegate == null) {
|
||||||
delegate = findClass(qualifiedName, getStub());
|
delegate = LightClassUtil.findClass(qualifiedName, getStub());
|
||||||
if (delegate == null) {
|
if (delegate == null) {
|
||||||
throw new IllegalStateException("Class not found for qualified name: " + qualifiedName);
|
throw new IllegalStateException("Class not found for qualified name: " + qualifiedName);
|
||||||
}
|
}
|
||||||
@@ -121,21 +119,6 @@ public class JetLightClass extends AbstractLightClass implements JetJavaMirrorMa
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PsiClass findClass(FqName fqn, StubElement<?> stub) {
|
|
||||||
if (stub instanceof PsiClassStub && Comparing.equal(fqn.getFqName(), ((PsiClassStub)stub).getQualifiedName())) {
|
|
||||||
return (PsiClass)stub.getPsi();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stub instanceof PsiClassStub || stub instanceof PsiFileStub) {
|
|
||||||
for (StubElement child : stub.getChildrenStubs()) {
|
|
||||||
PsiClass answer = findClass(fqn, child);
|
|
||||||
if (answer != null) return answer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getQualifiedName() {
|
public String getQualifiedName() {
|
||||||
return qualifiedName.getFqName();
|
return qualifiedName.getFqName();
|
||||||
|
|||||||
@@ -17,8 +17,13 @@
|
|||||||
package org.jetbrains.jet.asJava;
|
package org.jetbrains.jet.asJava;
|
||||||
|
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
|
import com.intellij.openapi.util.Comparing;
|
||||||
import com.intellij.openapi.util.SystemInfo;
|
import com.intellij.openapi.util.SystemInfo;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
|
import com.intellij.psi.PsiClass;
|
||||||
|
import com.intellij.psi.impl.java.stubs.PsiClassStub;
|
||||||
|
import com.intellij.psi.stubs.PsiFileStub;
|
||||||
|
import com.intellij.psi.stubs.StubElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
@@ -81,4 +86,20 @@ public class LightClassUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private LightClassUtil() {}
|
private LightClassUtil() {}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
/*package*/ static PsiClass findClass(@NotNull FqName fqn, @NotNull StubElement<?> stub) {
|
||||||
|
if (stub instanceof PsiClassStub && Comparing.equal(fqn.getFqName(), ((PsiClassStub) stub).getQualifiedName())) {
|
||||||
|
return (PsiClass)stub.getPsi();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stub instanceof PsiClassStub || stub instanceof PsiFileStub) {
|
||||||
|
for (StubElement child : stub.getChildrenStubs()) {
|
||||||
|
PsiClass answer = findClass(fqn, child);
|
||||||
|
if (answer != null) return answer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user