From 6d567750d1df90c8059dc6d98e2a0075ec179b56 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 11 Jan 2013 17:37:10 +0400 Subject: [PATCH] Got rid of methods of MemberNavigationStrategy. --- .../jet/plugin/libraries/MemberMatching.java | 47 ++++++++++++----- .../libraries/MemberNavigationStrategy.java | 51 ------------------- 2 files changed, 34 insertions(+), 64 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java b/idea/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java index c493cb54200..6d8e1003722 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/MemberMatching.java @@ -23,10 +23,8 @@ import com.google.common.collect.Sets; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.CallableDescriptor; -import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor; -import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; -import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.JetType; @@ -36,11 +34,34 @@ import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.util.CommonSuppliers; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Set; public class MemberMatching { /* DECLARATIONS ROUGH MATCHING */ + @Nullable + private static JetTypeReference getReceiverType(@NotNull JetNamedDeclaration propertyOrFunction) { + if (propertyOrFunction instanceof JetNamedFunction) { + return ((JetNamedFunction) propertyOrFunction).getReceiverTypeRef(); + } + if (propertyOrFunction instanceof JetProperty) { + return ((JetProperty) propertyOrFunction).getReceiverTypeRef(); + } + throw new IllegalArgumentException("Neither function nor declaration: " + propertyOrFunction.getClass().getName()); + } + + @NotNull + private static List getValueParameters(@NotNull JetNamedDeclaration propertyOrFunction) { + if (propertyOrFunction instanceof JetNamedFunction) { + return ((JetNamedFunction) propertyOrFunction).getValueParameters(); + } + if (propertyOrFunction instanceof JetProperty) { + return Collections.emptyList(); + } + throw new IllegalArgumentException("Neither function nor declaration: " + propertyOrFunction.getClass().getName()); + } + private static String getTypeShortName(@NotNull JetTypeReference typeReference) { JetTypeElement typeElement = typeReference.getTypeElement(); assert typeElement != null; @@ -86,8 +107,8 @@ public class MemberMatching { @NotNull Decl a, @NotNull Decl b ) { - boolean sameReceiverPresence = (navigationStrategy.getReceiverType(a) == null) == (navigationStrategy.getReceiverType(b) == null); - boolean sameParametersCount = navigationStrategy.getValueParameters(a).size() == navigationStrategy.getValueParameters(b).size(); + boolean sameReceiverPresence = (getReceiverType(a) == null) == (getReceiverType(b) == null); + boolean sameParametersCount = getValueParameters(a).size() == getValueParameters(b).size(); return sameReceiverPresence && sameParametersCount; } @@ -96,8 +117,8 @@ public class MemberMatching { @NotNull Decl a, @NotNull Decl b ) { - JetTypeReference aReceiver = navigationStrategy.getReceiverType(a); - JetTypeReference bReceiver = navigationStrategy.getReceiverType(b); + JetTypeReference aReceiver = getReceiverType(a); + JetTypeReference bReceiver = getReceiverType(b); if ((aReceiver == null) != (bReceiver == null)) { return false; } @@ -106,8 +127,8 @@ public class MemberMatching { return false; } - List aParameters = navigationStrategy.getValueParameters(a); - List bParameters = navigationStrategy.getValueParameters(b); + List aParameters = getValueParameters(a); + List bParameters = getValueParameters(b); if (aParameters.size() != bParameters.size()) { return false; } @@ -132,7 +153,7 @@ public class MemberMatching { @NotNull Decl declaration, @NotNull CallableDescriptor descriptor ) { - JetTypeReference declarationReceiver = navigationStrategy.getReceiverType(declaration); + JetTypeReference declarationReceiver = getReceiverType(declaration); ReceiverParameterDescriptor descriptorReceiver = descriptor.getReceiverParameter(); if (declarationReceiver == null && descriptorReceiver == null) { return true; @@ -148,8 +169,8 @@ public class MemberMatching { @NotNull Decl declaration, @NotNull Descr descriptor ) { - List declarationParameters = navigationStrategy.getValueParameters(declaration); - List descriptorParameters = navigationStrategy.getValueParameters(descriptor); + List declarationParameters = getValueParameters(declaration); + List descriptorParameters = descriptor.getValueParameters(); if (descriptorParameters.size() != declarationParameters.size()) { return false; } diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java b/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java index d159f22e33e..0c35541f1cf 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/MemberNavigationStrategy.java @@ -16,66 +16,15 @@ package org.jetbrains.jet.plugin.libraries; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; 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 java.util.Collections; -import java.util.List; - interface MemberNavigationStrategy { - @NotNull - List getValueParameters(@NotNull Decl declaration); - - @NotNull - List getValueParameters(@NotNull Descr descriptor); - - @Nullable - JetTypeReference getReceiverType(@NotNull Decl declaration); - class FunctionStrategy implements MemberNavigationStrategy { - - @NotNull - @Override - public List getValueParameters(@NotNull JetNamedFunction declaration) { - return declaration.getValueParameters(); - } - - @NotNull - @Override - public List getValueParameters(@NotNull FunctionDescriptor descriptor) { - return descriptor.getValueParameters(); - } - - @Nullable - @Override - public JetTypeReference getReceiverType(@NotNull JetNamedFunction declaration) { - return declaration.getReceiverTypeRef(); - } } class PropertyStrategy implements MemberNavigationStrategy { - - @NotNull - @Override - public List getValueParameters(@NotNull JetProperty declaration) { - return Collections.emptyList(); - } - - @NotNull - @Override - public List getValueParameters(@NotNull VariableDescriptor descriptor) { - return Collections.emptyList(); - } - - @Nullable - @Override - public JetTypeReference getReceiverType(@NotNull JetProperty declaration) { - return declaration.getReceiverTypeRef(); - } } }