Extract JavaConstructor out of JavaMethod
Will be useful in reflection-backed implementation of Java structure, where Constructor is not a Method and doesn't even inherit from it
This commit is contained in:
+12
-5
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaPackage;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaConstructorImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
||||
import org.jetbrains.jet.plugin.JetBundle;
|
||||
@@ -149,11 +150,17 @@ public class KotlinSignatureAnnotationIntention extends BaseIntentionAction impl
|
||||
|
||||
if (analyzableAnnotationOwner instanceof PsiMethod) {
|
||||
PsiMethod psiMethod = (PsiMethod) analyzableAnnotationOwner;
|
||||
FunctionDescriptor functionDescriptor = JavaPackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(psiMethod));
|
||||
assert functionDescriptor != null : "Couldn't find function descriptor for " + renderMember(analyzableAnnotationOwner);
|
||||
return functionDescriptor instanceof ConstructorDescriptor
|
||||
? getDefaultConstructorAnnotation((ConstructorDescriptor) functionDescriptor)
|
||||
: RENDERER.render(functionDescriptor);
|
||||
if (psiMethod.isConstructor()) {
|
||||
ConstructorDescriptor constructorDescriptor =
|
||||
JavaPackage.resolveConstructor(javaDescriptorResolver, new JavaConstructorImpl(psiMethod));
|
||||
assert constructorDescriptor != null: "Couldn't find constructor descriptor for " + renderMember(psiMethod);
|
||||
return getDefaultConstructorAnnotation(constructorDescriptor);
|
||||
}
|
||||
else {
|
||||
FunctionDescriptor functionDescriptor = JavaPackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(psiMethod));
|
||||
assert functionDescriptor != null: "Couldn't find function descriptor for " + renderMember(psiMethod);
|
||||
return RENDERER.render(functionDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
if (analyzableAnnotationOwner instanceof PsiField) {
|
||||
|
||||
+8
-1
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaBindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaPackage;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaConstructorImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
||||
import org.jetbrains.jet.plugin.JetIcons;
|
||||
@@ -118,7 +119,13 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider {
|
||||
@NotNull PsiModifierListOwner member
|
||||
) {
|
||||
if (member instanceof PsiMethod) {
|
||||
return JavaPackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl((PsiMethod) member));
|
||||
PsiMethod method = (PsiMethod) member;
|
||||
if (method.isConstructor()) {
|
||||
return JavaPackage.resolveConstructor(javaDescriptorResolver, new JavaConstructorImpl(method));
|
||||
}
|
||||
else {
|
||||
return JavaPackage.resolveMethod(javaDescriptorResolver, new JavaMethodImpl(method));
|
||||
}
|
||||
}
|
||||
else if (member instanceof PsiField) {
|
||||
return JavaPackage.resolveField(javaDescriptorResolver, new JavaFieldImpl((PsiField) member));
|
||||
|
||||
Reference in New Issue
Block a user