From 5c3214b57cdc66cdf0964eb1f1e3211655ab5096 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Thu, 29 Sep 2016 19:26:09 +0300 Subject: [PATCH] [Inline Param Name Hints] show single string literal if there is more that one String parameter in corresponding method --- .../impl/ParameterNameHintsManager.java | 12 ++++++++++- .../daemon/inlays/InlayParameterHintsTest.kt | 20 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterNameHintsManager.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterNameHintsManager.java index eec54fa0330f..44f8ecd8c398 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterNameHintsManager.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/ParameterNameHintsManager.java @@ -135,7 +135,7 @@ public class ParameterNameHintsManager { } } - if (descriptors.size() == 1 && isStringLiteral(descriptors.get(0)) + if (descriptors.size() == 1 && isStringLiteral(descriptors.get(0)) && !hasMultipleStringParams(parameters) || parameters.length == 2 && descriptors.size() == 2 && isCommonlyNamedParameterPair(descriptors.get(0), descriptors.get(1))) { return ContainerUtil.emptyList(); } @@ -143,6 +143,16 @@ public class ParameterNameHintsManager { return descriptors; } + private static boolean hasMultipleStringParams(PsiParameter[] parameters) { + int stringParams = 0; + for (PsiParameter parameter : parameters) { + if (parameter.getType().equalsToText(JAVA_LANG_STRING)) { + stringParams++; + } + } + return stringParams > 1; + } + private static boolean isStringLiteral(InlayInfo info) { PsiType type = info.getArgument().getType(); return type != null && type.equalsToText(JAVA_LANG_STRING); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt index 7eaf2e20111f..11ae8c526b8e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/InlayParameterHintsTest.kt @@ -86,6 +86,26 @@ class Groo { onLineStartingWith("configure(testNow").assertNoInlays() } + fun `test show hint for single string literal if there is multiple string params`() { + setup("""class Groo { + + public void test() { + String message = "sdfsdfdsf"; + assertEquals("fooo", message); + + String title = "TT"; + show(title, "Hi"); + } + + public void assertEquals(String expected, String actual) {} + public void show(String title, String message) {} + +}""") + + onLineStartingWith("assertEquals").assertInlays("expected->\"fooo\"") + onLineStartingWith("show").assertInlays("message->\"Hi\"") + } + fun `test do not show hints on setters`() { setup("""class Groo {