mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
java diamonds: avoid recursion prevention (IDEA-255486)
GitOrigin-RevId: bb6e3e45899ede6c36278bfd3c74813b1fc64b38
This commit is contained in:
committed by
intellij-monorepo-bot
parent
860f3889a2
commit
cbff44d84f
@@ -112,6 +112,10 @@ public final class JavaResolveUtil {
|
||||
else {
|
||||
contextClass = PsiTreeUtil.getContextOfType(place, PsiClass.class, false);
|
||||
if (isInClassAnnotationParameterList(place, contextClass)) return false;
|
||||
if (contextClass instanceof PsiAnonymousClass &&
|
||||
PsiTreeUtil.isAncestor(((PsiAnonymousClass)contextClass).getArgumentList(), place, true)) {
|
||||
contextClass = PsiTreeUtil.getContextOfType(contextClass, PsiClass.class, true);
|
||||
}
|
||||
}
|
||||
return canAccessProtectedMember(member, memberClass, accessObjectClass, contextClass,
|
||||
modifierList.hasModifierProperty(PsiModifier.STATIC));
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package c;
|
||||
import a.*;
|
||||
|
||||
class Derived extends Base {
|
||||
{
|
||||
Foo<String> b = new Foo<>(super.createString()) {};
|
||||
}
|
||||
|
||||
class Foo<T> {
|
||||
Foo(T t) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -203,6 +203,13 @@ public class LightAdvHighlightingFixtureTest extends LightJavaCodeInsightFixture
|
||||
myFixture.addClass("package a; public class Base<T> { protected Base() {}}");
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testDiamondsWithProtectedCallInConstruction() {
|
||||
myFixture.addClass("package a; public class Base { " +
|
||||
" protected String createString() {return null;}" +
|
||||
"}");
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
myFixture.configureByFile(getTestName(false) + ".java");
|
||||
|
||||
Reference in New Issue
Block a user