From f846c4314596fbb0a5e1b95a50a3ee2381e467c0 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Thu, 24 Nov 2016 13:36:51 +0300 Subject: [PATCH] [Parameter Hints] builder methods only ones with single param --- .../hints/JavaParameterHintManager.java | 4 +++- .../inlays/JavaParameterNameHintsTest.kt | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/hints/JavaParameterHintManager.java b/java/java-impl/src/com/intellij/codeInsight/hints/JavaParameterHintManager.java index caa48a8677f8..f02995a76b11 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hints/JavaParameterHintManager.java +++ b/java/java-impl/src/com/intellij/codeInsight/hints/JavaParameterHintManager.java @@ -57,15 +57,17 @@ public class JavaParameterHintManager { } private static boolean isBuilder(PsiCallExpression expression, PsiMethod method) { - if (expression instanceof PsiNewExpression) { + if (expression instanceof PsiNewExpression || !hasSingleParameter(method)) { return false; } + PsiType returnType = TypeConversionUtil.erasure(method.getReturnType()); final PsiClass aClass = method.getContainingClass(); final String calledMethodFqn = aClass != null ? aClass.getQualifiedName() : null; if (calledMethodFqn != null && returnType != null) { return returnType.equalsToText(calledMethodFqn); } + return false; } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt index ff2227789255..dc10b2450376 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/inlays/JavaParameterNameHintsTest.kt @@ -582,6 +582,27 @@ class Test { onLineStartingWith("builder.bwait").assertNoInlays() } + fun `test builder method only method with one param`() { + setup(""" +class Builder { + Builder qwit(boolean value, String sValue) {} + Builder trew(boolean value) {} +} + +class Test { + public void test() { + Builder builder = new Builder(); + builder + .trew(false) + .qwit(true, "value"); + } +} +""") + + onLineStartingWith(".trew").assertNoInlays() + onLineStartingWith(".qw").assertInlays("value->true", "sValue->\"value\"") + } + fun `test do not show single parameter hint if it is string literal`() { setup(""" public class Test {