From 743e8af7c2580a66c5a0d86166c84f1b490ae870 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Mon, 3 Sep 2012 18:44:24 +0400 Subject: [PATCH] Annotating static methods. --- .../ktSignature/AddKotlinSignatureAnnotation.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java index 04d3cd5bdea..714d77f45d0 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java @@ -34,6 +34,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.di.InjectorForJavaSemanticServices; import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; +import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; @@ -131,9 +132,16 @@ public class AddKotlinSignatureAnnotation extends BaseIntentionAction implements InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(BuiltinsScopeExtensionMode.ALL, project); JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver(); FqName classFqName = new FqName(method.getContainingClass().getQualifiedName()); - ClassDescriptor classDescriptor = javaDescriptorResolver.resolveClass(classFqName); - if (classDescriptor == null) return null; - classDescriptor.getDefaultType().getMemberScope().getFunctions(Name.identifier(method.getName())); + if (method.getModifierList().hasModifierProperty(PsiModifier.STATIC)) { + NamespaceDescriptor namespaceDescriptor = javaDescriptorResolver.resolveNamespace(classFqName); + if (namespaceDescriptor == null) return null; + namespaceDescriptor.getMemberScope().getFunctions(Name.identifier(method.getName())); + } + else { + ClassDescriptor classDescriptor = javaDescriptorResolver.resolveClass(classFqName); + if (classDescriptor == null) return null; + classDescriptor.getDefaultType().getMemberScope().getFunctions(Name.identifier(method.getName())); + } SimpleFunctionDescriptor functionDescriptor = injector.getBindingTrace().getBindingContext().get(BindingContext.FUNCTION, method); assert functionDescriptor != null: "Couldn't find function descriptor for " + method.getName() + " in " + classFqName; return RENDERER.render(functionDescriptor);