mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] IDEA-224641 Wrong resolve of 'this' and 'super' in anonymous classes definition
GitOrigin-RevId: f1818e1bee67c70d89a7dd1d937a31781d808052
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3ef63950ef
commit
b175ba126e
+8
-1
@@ -443,8 +443,15 @@ public class PsiUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiClass getContextClass(@Nullable PsiElement context) {
|
||||
public static PsiClass getContextClass(@Nullable PsiElement element) {
|
||||
PsiElement context = element;
|
||||
while (context != null) {
|
||||
if (context instanceof GrAnonymousClassDefinition
|
||||
&& PsiTreeUtil.isAncestor(((GrAnonymousClassDefinition)context).getArgumentListGroovy(), element, false)) {
|
||||
context = context.getContext();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (context instanceof PsiClass && !isInDummyFile(context)) {
|
||||
return (PsiClass)context;
|
||||
}
|
||||
|
||||
+27
@@ -36,4 +36,31 @@ class B {}
|
||||
expressionTypeTest 'new A()++', 'A'
|
||||
expressionTypeTest '++new A()', 'B'
|
||||
}
|
||||
|
||||
@Test
|
||||
void 'this inside anonymous definition'() {
|
||||
typingTest '''
|
||||
class Test {
|
||||
void main2() {
|
||||
new A(th<caret>is){}
|
||||
}
|
||||
}
|
||||
|
||||
class A{}
|
||||
''', "Test"
|
||||
}
|
||||
|
||||
@Test
|
||||
void 'super inside anonymous definition'() {
|
||||
typingTest '''
|
||||
class Test extends C {
|
||||
void main2() {
|
||||
new A(su<caret>per.equals("")){}
|
||||
}
|
||||
}
|
||||
class C {}
|
||||
class B {}
|
||||
class A extends B {}
|
||||
''', "C"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user