diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiTemplateExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiTemplateExpressionImpl.java index 5e7c1d988449..c0e6683865e9 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiTemplateExpressionImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiTemplateExpressionImpl.java @@ -124,7 +124,7 @@ public final class PsiTemplateExpressionImpl extends ExpressionPsiElement implem for (PsiClassType classType : PsiTypesUtil.getClassTypeComponents(type)) { PsiType substituted = PsiUtil.substituteTypeParameter(classType, CommonClassNames.JAVA_LANG_STRING_TEMPLATE_PROCESSOR, 0, false); if (substituted != null) { - return substituted; + return PsiUtil.captureToplevelWildcards(substituted, this); } } return null; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingStringTemplates/StringTemplates.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingStringTemplates/StringTemplates.java index 21ce37f40948..682b1ff1dd2e 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingStringTemplates/StringTemplates.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingStringTemplates/StringTemplates.java @@ -104,6 +104,13 @@ class X { public static void testCapturedWilcard(StringTemplate.Processor str) { Object s = str.""; } + + void testCapturedWildcard2() { + StringTemplate.Processor, RuntimeException> processor = null; + Object o = processor.""" + """.""" + """; + } public static void noNewlineAfterTextBlockOpeningQuotes() { System.out.println(STR."""\{}""");