mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
highlighting: nested anonymous implicit class parameter (IDEA-212466)
GitOrigin-RevId: 049e1970703735975e8b98d0588fd47f9a7ea93e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b6e3ff604a
commit
50895e6bba
+11
-7
@@ -1126,13 +1126,17 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
if (resolved instanceof PsiVariable) {
|
||||
PsiVariable variable = (PsiVariable)resolved;
|
||||
|
||||
PsiElement containingClass = PsiTreeUtil.getNonStrictParentOfType(ref, PsiClass.class, PsiLambdaExpression.class);
|
||||
if ((containingClass instanceof PsiAnonymousClass || containingClass instanceof PsiLambdaExpression) &&
|
||||
!PsiTreeUtil.isAncestor(containingClass, variable, false) &&
|
||||
!(variable instanceof PsiField) &&
|
||||
(containingClass instanceof PsiLambdaExpression ||
|
||||
!PsiTreeUtil.isAncestor(((PsiAnonymousClass)containingClass).getArgumentList(), ref, false))) {
|
||||
myHolder.add(HighlightInfo.newHighlightInfo(JavaHighlightInfoTypes.IMPLICIT_ANONYMOUS_CLASS_PARAMETER).range(ref).create());
|
||||
if (!(variable instanceof PsiField)) {
|
||||
PsiElement containingClass = PsiTreeUtil.getNonStrictParentOfType(ref, PsiClass.class, PsiLambdaExpression.class);
|
||||
while ((containingClass instanceof PsiAnonymousClass || containingClass instanceof PsiLambdaExpression) &&
|
||||
!PsiTreeUtil.isAncestor(containingClass, variable, false)) {
|
||||
if (containingClass instanceof PsiLambdaExpression ||
|
||||
!PsiTreeUtil.isAncestor(((PsiAnonymousClass)containingClass).getArgumentList(), ref, false)) {
|
||||
myHolder.add(HighlightInfo.newHighlightInfo(JavaHighlightInfoTypes.IMPLICIT_ANONYMOUS_CLASS_PARAMETER).range(ref).create());
|
||||
break;
|
||||
}
|
||||
containingClass = PsiTreeUtil.getParentOfType(containingClass, PsiClass.class, PsiLambdaExpression.class);
|
||||
}
|
||||
}
|
||||
|
||||
if (variable instanceof PsiParameter && ref instanceof PsiExpression && PsiUtil.isAccessedForWriting((PsiExpression)ref)) {
|
||||
|
||||
+3
-1
@@ -23,11 +23,13 @@ public class JavaSymbolHighlightingTest extends LightDaemonAnalyzerTestCase {
|
||||
|
||||
public void testImplicitAnonymousClassParameterHighlighting_InsideLambda() {
|
||||
configureFromFileText("Test.java",
|
||||
"class T {\n" +
|
||||
"class T {" +
|
||||
" private T(int i){}\n" +
|
||||
" public void test() {\n" +
|
||||
" int xxx = 12;\n" +
|
||||
" Runnable r = () -> {\n" +
|
||||
" check(<symbolName type=\"IMPLICIT_ANONYMOUS_CLASS_PARAMETER\">xxx</symbolName>);\n" +
|
||||
" new T(<symbolName type=\"IMPLICIT_ANONYMOUS_CLASS_PARAMETER\">xxx</symbolName>){};" +
|
||||
" };" +
|
||||
" }\n" +
|
||||
" public void check(int a) {}\n" +
|
||||
|
||||
Reference in New Issue
Block a user