Refactoring: move JavaDescriptorResolver extensions to idea-analysis module
This commit is contained in:
-27
@@ -30,30 +30,3 @@ public class JavaDescriptorResolver(public val packageFragmentProvider: LazyJava
|
|||||||
return packageFragmentProvider.getClass(javaClass)
|
return packageFragmentProvider.getClass(javaClass)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun JavaDescriptorResolver.resolveMethod(method: JavaMethod): FunctionDescriptor? {
|
|
||||||
return getContainingScope(method)?.getFunctions(method.getName())?.findByJavaElement(method)
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun JavaDescriptorResolver.resolveConstructor(constructor: JavaConstructor): ConstructorDescriptor? {
|
|
||||||
return resolveClass(constructor.getContainingClass())?.getConstructors()?.findByJavaElement(constructor)
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun JavaDescriptorResolver.resolveField(field: JavaField): PropertyDescriptor? {
|
|
||||||
return getContainingScope(field)?.getProperties(field.getName())?.findByJavaElement(field) as? PropertyDescriptor
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun JavaDescriptorResolver.getContainingScope(member: JavaMember): JetScope? {
|
|
||||||
val containingClass = resolveClass(member.getContainingClass())
|
|
||||||
return if (member.isStatic())
|
|
||||||
containingClass?.getStaticScope()
|
|
||||||
else
|
|
||||||
containingClass?.getDefaultType()?.getMemberScope()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun <T : DeclarationDescriptorWithSource> Collection<T>.findByJavaElement(javaElement: JavaElement): T? {
|
|
||||||
return firstOrNull {
|
|
||||||
member ->
|
|
||||||
(member.getSource() as? JavaSourceElement)?.javaElement == javaElement
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
+33
-13
@@ -18,26 +18,19 @@ package org.jetbrains.kotlin.idea.caches.resolve
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatform
|
import org.jetbrains.kotlin.idea.project.TargetPlatform
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModule
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.asJava.KotlinLightMethod
|
import org.jetbrains.kotlin.asJava.KotlinLightMethod
|
||||||
import org.jetbrains.kotlin.resolve.jvm.resolveMethod
|
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaMethodImpl
|
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaConstructorImpl
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.resolveConstructor
|
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
|
||||||
import com.intellij.psi.PsiField
|
import com.intellij.psi.PsiField
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.resolveField
|
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaFieldImpl
|
|
||||||
import com.intellij.psi.PsiMember
|
import com.intellij.psi.PsiMember
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
|
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
|
||||||
|
import org.jetbrains.kotlin.load.java.structure.*
|
||||||
|
import org.jetbrains.kotlin.load.java.structure.impl.*
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.*
|
||||||
|
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||||
|
|
||||||
public object JavaResolveExtension : CacheExtension<(PsiElement) -> Pair<JavaDescriptorResolver, BindingContext>> {
|
public object JavaResolveExtension : CacheExtension<(PsiElement) -> Pair<JavaDescriptorResolver, BindingContext>> {
|
||||||
override val platform: TargetPlatform = TargetPlatform.JVM
|
override val platform: TargetPlatform = TargetPlatform.JVM
|
||||||
@@ -91,3 +84,30 @@ fun PsiMember.getJavaMemberDescriptor(): DeclarationDescriptor? {
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun JavaDescriptorResolver.resolveMethod(method: JavaMethod): FunctionDescriptor? {
|
||||||
|
return getContainingScope(method)?.getFunctions(method.getName())?.findByJavaElement(method)
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun JavaDescriptorResolver.resolveConstructor(constructor: JavaConstructor): ConstructorDescriptor? {
|
||||||
|
return resolveClass(constructor.getContainingClass())?.getConstructors()?.findByJavaElement(constructor)
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun JavaDescriptorResolver.resolveField(field: JavaField): PropertyDescriptor? {
|
||||||
|
return getContainingScope(field)?.getProperties(field.getName())?.findByJavaElement(field) as? PropertyDescriptor
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun JavaDescriptorResolver.getContainingScope(member: JavaMember): JetScope? {
|
||||||
|
val containingClass = resolveClass(member.getContainingClass())
|
||||||
|
return if (member.isStatic())
|
||||||
|
containingClass?.getStaticScope()
|
||||||
|
else
|
||||||
|
containingClass?.getDefaultType()?.getMemberScope()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun <T : DeclarationDescriptorWithSource> Collection<T>.findByJavaElement(javaElement: JavaElement): T? {
|
||||||
|
return firstOrNull {
|
||||||
|
member ->
|
||||||
|
(member.getSource() as? JavaSourceElement)?.javaElement == javaElement
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+4
-4
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.descriptors.VariableDescriptor;
|
|||||||
import org.jetbrains.kotlin.idea.JetBundle;
|
import org.jetbrains.kotlin.idea.JetBundle;
|
||||||
import org.jetbrains.kotlin.idea.JetIcons;
|
import org.jetbrains.kotlin.idea.JetIcons;
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.JavaResolveExtension;
|
import org.jetbrains.kotlin.idea.caches.resolve.JavaResolveExtension;
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers;
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaConstructorImpl;
|
import org.jetbrains.kotlin.load.java.structure.impl.JavaConstructorImpl;
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaFieldImpl;
|
import org.jetbrains.kotlin.load.java.structure.impl.JavaFieldImpl;
|
||||||
@@ -47,7 +48,6 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer;
|
|||||||
import org.jetbrains.kotlin.renderer.DescriptorRendererBuilder;
|
import org.jetbrains.kotlin.renderer.DescriptorRendererBuilder;
|
||||||
import org.jetbrains.kotlin.renderer.NameShortness;
|
import org.jetbrains.kotlin.renderer.NameShortness;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver;
|
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPackage;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
|
||||||
@@ -155,12 +155,12 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
|
|||||||
PsiMethod psiMethod = (PsiMethod) analyzableAnnotationOwner;
|
PsiMethod psiMethod = (PsiMethod) analyzableAnnotationOwner;
|
||||||
if (psiMethod.isConstructor()) {
|
if (psiMethod.isConstructor()) {
|
||||||
ConstructorDescriptor constructorDescriptor =
|
ConstructorDescriptor constructorDescriptor =
|
||||||
JvmPackage.resolveConstructor(javaDescriptorResolver, new JavaConstructorImpl(psiMethod));
|
ResolvePackage.resolveConstructor(javaDescriptorResolver, new JavaConstructorImpl(psiMethod));
|
||||||
assert constructorDescriptor != null: "Couldn't find constructor descriptor for " + renderMember(psiMethod);
|
assert constructorDescriptor != null: "Couldn't find constructor descriptor for " + renderMember(psiMethod);
|
||||||
return getDefaultConstructorAnnotation(constructorDescriptor);
|
return getDefaultConstructorAnnotation(constructorDescriptor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
FunctionDescriptor functionDescriptor = JvmPackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(psiMethod));
|
FunctionDescriptor functionDescriptor = ResolvePackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(psiMethod));
|
||||||
assert functionDescriptor != null: "Couldn't find function descriptor for " + renderMember(psiMethod);
|
assert functionDescriptor != null: "Couldn't find function descriptor for " + renderMember(psiMethod);
|
||||||
return RENDERER.render(functionDescriptor);
|
return RENDERER.render(functionDescriptor);
|
||||||
}
|
}
|
||||||
@@ -168,7 +168,7 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
|
|||||||
|
|
||||||
if (analyzableAnnotationOwner instanceof PsiField) {
|
if (analyzableAnnotationOwner instanceof PsiField) {
|
||||||
VariableDescriptor variableDescriptor =
|
VariableDescriptor variableDescriptor =
|
||||||
JvmPackage.resolveField(javaDescriptorResolver, new JavaFieldImpl((PsiField) analyzableAnnotationOwner));
|
ResolvePackage.resolveField(javaDescriptorResolver, new JavaFieldImpl((PsiField) analyzableAnnotationOwner));
|
||||||
assert variableDescriptor != null : "Couldn't find variable descriptor for field " + renderMember(analyzableAnnotationOwner);
|
assert variableDescriptor != null : "Couldn't find variable descriptor for field " + renderMember(analyzableAnnotationOwner);
|
||||||
return RENDERER.render(variableDescriptor);
|
return RENDERER.render(variableDescriptor);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -41,6 +41,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.kotlin.idea.JetIcons;
|
import org.jetbrains.kotlin.idea.JetIcons;
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.JavaResolveExtension;
|
import org.jetbrains.kotlin.idea.caches.resolve.JavaResolveExtension;
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage;
|
||||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil;
|
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil;
|
||||||
import org.jetbrains.kotlin.idea.util.attachment.AttachmentPackage;
|
import org.jetbrains.kotlin.idea.util.attachment.AttachmentPackage;
|
||||||
import org.jetbrains.kotlin.load.java.JavaBindingContext;
|
import org.jetbrains.kotlin.load.java.JavaBindingContext;
|
||||||
@@ -49,7 +50,6 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaFieldImpl;
|
|||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaMethodImpl;
|
import org.jetbrains.kotlin.load.java.structure.impl.JavaMethodImpl;
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver;
|
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPackage;
|
|
||||||
|
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -148,14 +148,14 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
|||||||
if (member instanceof PsiMethod) {
|
if (member instanceof PsiMethod) {
|
||||||
PsiMethod method = (PsiMethod) member;
|
PsiMethod method = (PsiMethod) member;
|
||||||
if (method.isConstructor()) {
|
if (method.isConstructor()) {
|
||||||
return JvmPackage.resolveConstructor(javaDescriptorResolver, new JavaConstructorImpl(method));
|
return ResolvePackage.resolveConstructor(javaDescriptorResolver, new JavaConstructorImpl(method));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return JvmPackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(method));
|
return ResolvePackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(method));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (member instanceof PsiField) {
|
else if (member instanceof PsiField) {
|
||||||
return JvmPackage.resolveField(javaDescriptorResolver, new JavaFieldImpl((PsiField) member));
|
return ResolvePackage.resolveField(javaDescriptorResolver, new JavaFieldImpl((PsiField) member));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user