diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/JavaRainbowVisitor.java b/java/java-impl/src/com/intellij/codeInsight/daemon/JavaRainbowVisitor.java index 34fb907a57a0..31115b3dea61 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/JavaRainbowVisitor.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/JavaRainbowVisitor.java @@ -21,6 +21,8 @@ import com.intellij.codeInsight.daemon.impl.HighlightVisitor; import com.intellij.ide.highlighter.JavaHighlightingColors; import com.intellij.openapi.util.Pair; import com.intellij.psi.*; +import com.intellij.psi.impl.source.javadoc.PsiDocParamRef; +import com.intellij.psi.javadoc.PsiDocTagValue; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,14 +39,17 @@ public class JavaRainbowVisitor extends RainbowVisitor { if (element instanceof PsiReferenceExpression || element instanceof PsiLocalVariable - || element instanceof PsiParameter) { + || element instanceof PsiParameter + || element instanceof PsiDocParamRef) { PsiElement context = PsiTreeUtil.findFirstParent(element, p -> p instanceof PsiMethod); if (context != null) { HighlightInfo attrs = getRainbowSymbolKey( context, element instanceof PsiReferenceExpression ? Pair.create(element, ((PsiReferenceExpression)element).resolve()) - : Pair.create(((PsiVariable)element).getNameIdentifier(), element)); + : element instanceof PsiDocParamRef + ? Pair.create(element, element.getReference() == null ? null : element.getReference().resolve()) + : Pair.create(((PsiVariable)element).getNameIdentifier(), element)); if (attrs != null) { addInfo(attrs); } @@ -62,7 +67,9 @@ public class JavaRainbowVisitor extends RainbowVisitor { if (name != null) { return getInfo(context, rainbow.first, name, rainbow.second instanceof PsiLocalVariable ? JavaHighlightingColors.LOCAL_VARIABLE_ATTRIBUTES - : JavaHighlightingColors.PARAMETER_ATTRIBUTES); + : rainbow.first instanceof PsiDocTagValue + ? JavaHighlightingColors.DOC_COMMENT_TAG_VALUE + : JavaHighlightingColors.PARAMETER_ATTRIBUTES); } } return null; diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightRainbowHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightRainbowHighlightingTest.java index a36934abd9ab..c04632ef225c 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightRainbowHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightRainbowHighlightingTest.java @@ -58,7 +58,7 @@ public class LightRainbowHighlightingTest extends LightCodeInsightFixtureTestCas "}", true, false); } - public void fixme_testRainbowParamsInJavadocHaveTheSameColorsAsInCode() throws Exception { + public void testRainbowParamsInJavadocHaveTheSameColorsAsInCode() throws Exception { checkRainbow( "class TestClass {\n" + " /**\n" +