Using JetClsMethod interface to recognize method compiled from kotlin
This commit is contained in:
committed by
Natalia.Ukhorskaya
parent
461e83a5d1
commit
7e9ced290d
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user