From 10d971bc7a5966ea037f651efb019fbba925463c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Sat, 19 Jan 2013 15:16:49 -0800 Subject: [PATCH] Extract methods --- .../KotlinSignatureInJavaMarkerProvider.java | 78 ++++++++++++------- 1 file changed, 51 insertions(+), 27 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/KotlinSignatureInJavaMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/KotlinSignatureInJavaMarkerProvider.java index 350c3160923..ec594ac272d 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/KotlinSignatureInJavaMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/KotlinSignatureInJavaMarkerProvider.java @@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; +import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.plugin.JetIcons; import java.awt.event.MouseEvent; @@ -92,35 +93,10 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { continue; } - PsiClass containingClass = member.getContainingClass(); - if (containingClass == null) { // e.g., type parameter - continue; - } + DeclarationDescriptor memberDescriptor = getDescriptorForMember(javaDescriptorResolver, member, bindingContext); - String qualifiedName = containingClass.getQualifiedName(); - assert qualifiedName != null; + if (memberDescriptor == null) continue; - FqName classFqName = new FqName(qualifiedName); - ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName); - assert klass != null : " Couldn't find class " + classFqName; - - String memberNameAsString = member.getName(); - assert memberNameAsString != null; - - Name name = Name.identifier(memberNameAsString); - if (element instanceof PsiMethod) { - klass.getDefaultType().getMemberScope().getFunctions(name); - } - else if (element instanceof PsiField) { - klass.getDefaultType().getMemberScope().getProperties(name); - } - else { - continue; - } - - PsiModifierListOwner annotationOwner = getAnnotationOwner(element); - DeclarationDescriptor memberDescriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, annotationOwner); - assert memberDescriptor != null : "Couldn't find descriptor for " + annotationOwner; List errors = bindingContext.get(BindingContext.LOAD_FROM_JAVA_SIGNATURE_ERRORS, memberDescriptor); boolean hasSignatureAnnotation = findKotlinSignatureAnnotation(element) != null; @@ -130,6 +106,54 @@ public class KotlinSignatureInJavaMarkerProvider implements LineMarkerProvider { } } + @Nullable + private static DeclarationDescriptor getDescriptorForMember( + @NotNull JavaDescriptorResolver javaDescriptorResolver, + @NotNull PsiMember member, + @NotNull BindingContext bindingContext + ) { + PsiClass containingClass = member.getContainingClass(); + if (containingClass == null) { // e.g., type parameter + return null; + } + + String qualifiedName = containingClass.getQualifiedName(); + assert qualifiedName != null : "Trying to get line markers for anonymous or local class " + containingClass.getText(); + + FqName classFqName = new FqName(qualifiedName); + + ClassDescriptor klass = javaDescriptorResolver.resolveClass(classFqName); + assert klass != null : " Couldn't find class " + classFqName; + + return getDescriptorForMember(member, klass.getDefaultType().getMemberScope(), bindingContext); + } + + @Nullable + private static DeclarationDescriptor getDescriptorForMember( + @NotNull PsiMember member, + @NotNull JetScope memberScope, + @NotNull BindingContext bindingContext + ) { + String memberNameAsString = member.getName(); + assert memberNameAsString != null; + + Name name = Name.identifier(memberNameAsString); + if (member instanceof PsiMethod) { + memberScope.getFunctions(name); + } + else if (member instanceof PsiField) { + memberScope.getProperties(name); + } + else { + return null; + } + + PsiModifierListOwner annotationOwner = getAnnotationOwner(member); + DeclarationDescriptor memberDescriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, annotationOwner); + assert memberDescriptor != null : "Couldn't find descriptor for " + annotationOwner; + return memberDescriptor; + } + public static boolean isMarkersEnabled(@NotNull Project project) { return PropertiesComponent.getInstance(project).getBoolean(SHOW_MARKERS_PROPERTY, true); }