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.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiCompiledElement;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.impl.java.stubs.PsiClassStub;
@@ -161,12 +160,10 @@ public class LightClassUtil {
List<PsiMethod> methods = new SmartList<PsiMethod>();
for (PsiMethod method : psiClass.getMethods()) {
try {
if (method instanceof JetClsMethod) {
if (method instanceof PsiCompiledElement && ((PsiCompiledElement) method).getMirror() == declaration) {
methods.add(method);
if (!collectAll) {
return methods;
}
if (method instanceof JetClsMethod && ((JetClsMethod) method).getOrigin() == declaration) {
methods.add(method);
if (!collectAll) {
return methods;
}
}
}
@@ -21,7 +21,6 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.QueryExecutorBase;
import com.intellij.openapi.util.Computable;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiCompiledElement;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
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.jet.asJava.LightClassUtil;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.java.JetClsMethod;
public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, PsiElement> {
@Override
@@ -107,7 +107,7 @@ public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, Psi
for (PsiMethod method : accessors) {
PsiMethod[] implementations = MethodImplementationsSearch.getMethodImplementations(method);
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) {
consumer.process(mirrorElement);
}