diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java index cbcc92b3058..08ea1d4c067 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java @@ -42,6 +42,7 @@ abstract public class JetFunction extends JetTypeParameterListOwner return (JetParameterList) findChildByType(JetNodeTypes.VALUE_PARAMETER_LIST); } + @Override @NotNull public List getValueParameters() { JetParameterList list = getValueParameterList(); diff --git a/idea/src/org/jetbrains/jet/plugin/caches/GotoSymbolContributor.java b/idea/src/org/jetbrains/jet/plugin/caches/GotoSymbolContributor.java index 7e94a0f6638..74f6b480202 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/GotoSymbolContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/caches/GotoSymbolContributor.java @@ -16,6 +16,8 @@ package org.jetbrains.jet.plugin.caches; +import com.google.common.base.Predicates; +import com.google.common.collect.Collections2; import com.intellij.navigation.ChooseByNameContributor; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.project.Project; @@ -48,7 +50,7 @@ public class GotoSymbolContributor implements ChooseByNameContributor { final Collection functions = StubIndex.getInstance().get( JetIndexKeys.FUNCTIONS_SHORT_NAME_KEY, name, project, scope); - final List items = new ArrayList(functions); + final List items = new ArrayList(Collections2.filter(functions, Predicates.notNull())); return ArrayUtil.toObjectArray(items, NavigationItem.class); } } diff --git a/idea/src/org/jetbrains/jet/plugin/presentation/JetFunctionPresenter.java b/idea/src/org/jetbrains/jet/plugin/presentation/JetFunctionPresenter.java index d4fee37b216..76231df8f24 100644 --- a/idea/src/org/jetbrains/jet/plugin/presentation/JetFunctionPresenter.java +++ b/idea/src/org/jetbrains/jet/plugin/presentation/JetFunctionPresenter.java @@ -16,11 +16,15 @@ package org.jetbrains.jet.plugin.presentation; +import com.google.common.base.Function; +import com.google.common.collect.Collections2; import com.intellij.navigation.ColoredItemPresentation; import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.ItemPresentationProvider; import com.intellij.openapi.editor.colors.TextAttributesKey; +import org.apache.commons.lang.StringUtils; import org.jetbrains.jet.lang.psi.JetNamedFunction; +import org.jetbrains.jet.lang.psi.JetParameter; import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.psi.JetTypeReference; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -28,6 +32,7 @@ import org.jetbrains.jet.plugin.JetIconProvider; import org.jetbrains.jet.util.QualifiedNamesUtil; import javax.swing.*; +import java.util.Collection; /** * @author Nikolay Krasko @@ -43,15 +48,35 @@ public class JetFunctionPresenter implements ItemPresentationProvider paramsStrings = Collections2.transform(function.getValueParameters(), new Function() { + @Override + public String apply(JetParameter parameter) { + if (parameter != null) { + JetTypeReference reference = parameter.getTypeReference(); + if (reference != null) { + String text = reference.getText(); + if (text != null) { + return text; + } + } + } + + return "?"; + } + }); + + presentation.append("(").append(StringUtils.join(paramsStrings, ",")).append(")"); + return presentation.toString(); } @Override public String getLocationString() { FqName name = JetPsiUtil.getFQName(function); if (name != null) { - JetTypeReference typeRef = function.getReturnTypeRef(); - String extensionLocation = typeRef != null ? "for " + typeRef.getText() + " " : ""; + JetTypeReference receiverTypeRef = function.getReceiverTypeRef(); + String extensionLocation = receiverTypeRef != null ? "for " + receiverTypeRef.getText() + " " : ""; return String.format("(%sin %s)", extensionLocation, QualifiedNamesUtil.withoutLastSegment(name)); }