Using JetClsMethod interface to recognize method compiled from kotlin

This commit is contained in:
Nikolay Krasko
2013-05-20 13:23:46 +04:00
committed by Natalia.Ukhorskaya
parent 461e83a5d1
commit 7e9ced290d
2 changed files with 6 additions and 9 deletions
@@ -23,7 +23,6 @@ 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.PsiClass;
import com.intellij.psi.PsiCompiledElement;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiMethod;
import com.intellij.psi.impl.java.stubs.PsiClassStub; import com.intellij.psi.impl.java.stubs.PsiClassStub;
@@ -161,12 +160,10 @@ public class LightClassUtil {
List<PsiMethod> methods = new SmartList<PsiMethod>(); List<PsiMethod> methods = new SmartList<PsiMethod>();
for (PsiMethod method : psiClass.getMethods()) { for (PsiMethod method : psiClass.getMethods()) {
try { try {
if (method instanceof JetClsMethod) { if (method instanceof JetClsMethod && ((JetClsMethod) method).getOrigin() == declaration) {
if (method instanceof PsiCompiledElement && ((PsiCompiledElement) method).getMirror() == declaration) { methods.add(method);
methods.add(method); if (!collectAll) {
if (!collectAll) { return methods;
return methods;
}
} }
} }
} }
@@ -21,7 +21,6 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.QueryExecutorBase; import com.intellij.openapi.application.QueryExecutorBase;
import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Computable;
import com.intellij.psi.PsiClass; import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiCompiledElement;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiMethod;
import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.search.searches.ClassInheritorsSearch;
@@ -30,6 +29,7 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.asJava.LightClassUtil; import org.jetbrains.jet.asJava.LightClassUtil;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.java.JetClsMethod;
public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, PsiElement> { public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, PsiElement> {
@Override @Override
@@ -107,7 +107,7 @@ public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, Psi
for (PsiMethod method : accessors) { for (PsiMethod method : accessors) {
PsiMethod[] implementations = MethodImplementationsSearch.getMethodImplementations(method); PsiMethod[] implementations = MethodImplementationsSearch.getMethodImplementations(method);
for (PsiMethod implementation : implementations) { for (PsiMethod implementation : implementations) {
PsiElement mirrorElement = implementation instanceof PsiCompiledElement ? ((PsiCompiledElement) implementation).getMirror() : null; PsiElement mirrorElement = implementation instanceof JetClsMethod ? ((JetClsMethod) implementation).getOrigin() : null;
if (mirrorElement instanceof JetProperty || mirrorElement instanceof JetParameter) { if (mirrorElement instanceof JetProperty || mirrorElement instanceof JetParameter) {
consumer.process(mirrorElement); consumer.process(mirrorElement);
} }