From 897cfc534e95b5b1faf3c75d0ee459e1ade772fa Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 11 Jan 2013 17:07:27 +0400 Subject: [PATCH] Got rid of two methods of MemberNavigationStrategy. --- .../libraries/JetSourceNavigationHelper.java | 27 +++++++++++----- .../libraries/MemberNavigationStrategy.java | 31 ------------------- 2 files changed, 19 insertions(+), 39 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java index 228643eefd2..724265f1702 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/JetSourceNavigationHelper.java @@ -46,6 +46,8 @@ import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.plugin.stubindex.JetFullClassNameIndex; +import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionsFqnNameIndex; +import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertiesFqnNameIndex; import java.util.Collection; import java.util.Collections; @@ -161,7 +163,7 @@ public class JetSourceNavigationHelper { Collection candidates; if (decompiledContainer instanceof JetFile) { - candidates = getInitialTopLevelCandidates(decompiledDeclaration, navigationStrategy); + candidates = getInitialTopLevelCandidates(decompiledDeclaration); } else if (decompiledContainer instanceof JetClassBody) { JetClassOrObject decompiledClassOrObject = (JetClassOrObject) decompiledContainer.getParent(); @@ -169,8 +171,7 @@ public class JetSourceNavigationHelper { candidates = sourceClassOrObject == null ? Collections.emptyList() - : getInitialMemberCandidates(sourceClassOrObject, memberName, - navigationStrategy.getDeclarationClass()); + : getInitialMemberCandidates(sourceClassOrObject, memberName, (Class) decompiledDeclaration.getClass()); if (candidates.isEmpty()) { if (decompiledDeclaration instanceof JetProperty && sourceClassOrObject instanceof JetClass) { @@ -245,10 +246,7 @@ public class JetSourceNavigationHelper { } @NotNull - private static Collection getInitialTopLevelCandidates( - @NotNull Decl decompiledDeclaration, - @NotNull MemberNavigationStrategy navigationStrategy - ) { + private static Collection getInitialTopLevelCandidates(@NotNull Decl decompiledDeclaration) { FqName memberFqName = JetPsiUtil.getFQName(decompiledDeclaration); assert memberFqName != null; @@ -256,10 +254,23 @@ public class JetSourceNavigationHelper { if (librarySourcesScope == GlobalSearchScope.EMPTY_SCOPE) { // .getProject() == null for EMPTY_SCOPE, and this breaks code return Collections.emptyList(); } - StringStubIndexExtension index = navigationStrategy.getIndexForTopLevelMembers(); + StringStubIndexExtension index = + (StringStubIndexExtension) getIndexForTopLevelPropertyOrFunction(decompiledDeclaration); return index.get(memberFqName.getFqName(), decompiledDeclaration.getProject(), librarySourcesScope); } + private static StringStubIndexExtension getIndexForTopLevelPropertyOrFunction( + @NotNull JetNamedDeclaration decompiledDeclaration + ) { + if (decompiledDeclaration instanceof JetNamedFunction) { + return JetTopLevelFunctionsFqnNameIndex.getInstance(); + } + if (decompiledDeclaration instanceof JetProperty) { + return JetTopLevelPropertiesFqnNameIndex.getInstance(); + } + throw new IllegalArgumentException("Neither function nor declaration: " + decompiledDeclaration.getClass().getName()); + } + @NotNull private static List getInitialMemberCandidates( @NotNull JetClassOrObject sourceClassOrObject, diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java b/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java index 9dd96862d80..d159f22e33e 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java @@ -16,7 +16,6 @@ package org.jetbrains.jet.plugin.libraries; -import com.intellij.psi.stubs.StringStubIndexExtension; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; @@ -24,16 +23,11 @@ import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.*; -import org.jetbrains.jet.plugin.stubindex.JetTopLevelFunctionsFqnNameIndex; -import org.jetbrains.jet.plugin.stubindex.JetTopLevelPropertiesFqnNameIndex; import java.util.Collections; import java.util.List; interface MemberNavigationStrategy { - @NotNull - Class getDeclarationClass(); - @NotNull List getValueParameters(@NotNull Decl declaration); @@ -43,15 +37,7 @@ interface MemberNavigationStrategy getIndexForTopLevelMembers(); - class FunctionStrategy implements MemberNavigationStrategy { - @NotNull - @Override - public Class getDeclarationClass() { - return JetNamedFunction.class; - } @NotNull @Override @@ -70,20 +56,9 @@ interface MemberNavigationStrategy getIndexForTopLevelMembers() { - return JetTopLevelFunctionsFqnNameIndex.getInstance(); - } } class PropertyStrategy implements MemberNavigationStrategy { - @NotNull - @Override - public Class getDeclarationClass() { - return JetProperty.class; - } @NotNull @Override @@ -102,11 +77,5 @@ interface MemberNavigationStrategy getIndexForTopLevelMembers() { - return JetTopLevelPropertiesFqnNameIndex.getInstance(); - } } }