From dd40888635b2d6cd3eb62d52ce447f34ec07a041 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 28 Jan 2020 09:53:31 +0100 Subject: [PATCH] java incompatible types tooltip: include `capture` in short presentation (IDEA-230232) GitOrigin-RevId: 22cc104f18f62e0b55738c5c8a72fcb4b8fe828c --- .../daemon/impl/analysis/HighlightUtil.java | 2 +- .../TooltipWithCapture.java | 9 ++++++++ .../lambda/GenericsHighlighting8Test.java | 23 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/TooltipWithCapture.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 3d9bb1258336..48afe4c8a7b1 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -2898,7 +2898,7 @@ public class HighlightUtil extends HighlightUtilBase { static String redIfNotMatch(@Nullable PsiType type, boolean matches, boolean shortType) { if (type == null) return ""; String color = ColorUtil.toHtmlColor(matches ? UIUtil.getToolTipForeground() : DialogWrapper.ERROR_FOREGROUND_COLOR); - return "" + XmlStringUtil.escapeString(shortType ? type.getPresentableText() : type.getCanonicalText()) + ""; + return "" + XmlStringUtil.escapeString(shortType || type instanceof PsiCapturedWildcardType ? type.getPresentableText() : type.getCanonicalText()) + ""; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/TooltipWithCapture.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/TooltipWithCapture.java new file mode 100644 index 000000000000..9d3eebfa873e --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/TooltipWithCapture.java @@ -0,0 +1,9 @@ +class A{ + + public void setClazz(Class clazz) { + } + + public void m(final A a, Class clazz) { + a.setClazz(clazz); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/GenericsHighlighting8Test.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/GenericsHighlighting8Test.java index 5df3d6128dec..8e6e0692fc83 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/GenericsHighlighting8Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/lambda/GenericsHighlighting8Test.java @@ -1137,6 +1137,29 @@ public class GenericsHighlighting8Test extends LightDaemonAnalyzerTestCase { .forEach(info -> Assert.assertEquals(expected, info.getToolTip())); } + public void testTooltipWithCapture() { + doTest(); + String toolTipForeground = ColorUtil.toHtmlColor(UIUtil.getToolTipForeground()); + String greyed = ColorUtil.toHtmlColor(UIUtil.getContextHelpForeground()); + String red = ColorUtil.toHtmlColor(DialogWrapper.ERROR_FOREGROUND_COLOR); + String expected = "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "
Required type:Class<capture of ?>
Provided:Class<capture of ?>
"; + + doHighlighting() + .stream() + .filter(info -> info.type == HighlightInfoType.ERROR) + .forEach(info -> Assert.assertEquals(expected, info.getToolTip())); + } + public void testTooltipComponents() { doTest(); String toolTipForeground = ColorUtil.toHtmlColor(UIUtil.getToolTipForeground());