From 4f3fced9329a95961410a53daf9ec835f8462123 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 24 Aug 2012 22:11:11 +0400 Subject: [PATCH] Passing real original element to EditSignatureBalloon to make external annotations work for compiled class files. --- .../KotlinSignatureInJavaMarkerProvider.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java index 7c7a5f6b8e4..bef3e4d1f60 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/KotlinSignatureInJavaMarkerProvider.java @@ -82,6 +82,15 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { @Nullable static PsiAnnotation findKotlinSignatureAnnotation(@NotNull PsiElement element) { if (!(element instanceof PsiMethod)) return null; + PsiMethod annotationOwner = getAnnotationOwner(element); + PsiAnnotation annotation = + JavaDescriptorResolver.findAnnotation(annotationOwner, KOTLIN_SIGNATURE_ANNOTATION); + if (annotation == null) return null; + if (annotation.getParameterList().getAttributes().length == 0) return null; + return annotation; + } + + private static PsiMethod getAnnotationOwner(PsiElement element) { PsiMethod annotationOwner = element.getOriginalElement() instanceof PsiMethod ? (PsiMethod) element.getOriginalElement() : (PsiMethod) element; @@ -94,11 +103,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { } } } - PsiAnnotation annotation = - JavaDescriptorResolver.findAnnotation(annotationOwner, KOTLIN_SIGNATURE_ANNOTATION); - if (annotation == null) return null; - if (annotation.getParameterList().getAttributes().length == 0) return null; - return annotation; + return annotationOwner; } @NotNull @@ -169,7 +174,7 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { else { // TODO check if annotations are editable - new EditSignatureBalloon(element, getKotlinSignature(annotation)).show(point, editor); + new EditSignatureBalloon(getAnnotationOwner(element), getKotlinSignature(annotation)).show(point, editor); } } }