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());