mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-05-06 05:10:22 +07:00
ExpressionUtils#getEffectiveQualifier return null if non-static member is referenced from a static field initializer
IJ-CR-21030 GitOrigin-RevId: a91e78151cab5c78fe3576c61b71db6cf7b46403
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d342a0c765
commit
63ab4f06f7
@@ -0,0 +1,16 @@
|
||||
// "Qualify the call with 'A.this'" "false"
|
||||
class A {
|
||||
class B {
|
||||
static String name(String key) {
|
||||
return "";
|
||||
}
|
||||
|
||||
static {
|
||||
String s = name(<caret>);
|
||||
}
|
||||
}
|
||||
|
||||
String name(){
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// "Qualify the call with 'A.this'" "false"
|
||||
class A {
|
||||
class B {
|
||||
static String name(String key) {
|
||||
return "";
|
||||
}
|
||||
|
||||
static String s = name(<caret>);
|
||||
}
|
||||
|
||||
String name(){
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -971,13 +971,12 @@ public final class ExpressionUtils {
|
||||
* or if reference points to non-static member of class from static context
|
||||
*/
|
||||
public static PsiExpression getEffectiveQualifier(@NotNull PsiReferenceExpression ref, @NotNull PsiMember member) {
|
||||
PsiElementFactory factory = JavaPsiFacade.getElementFactory(ref.getProject());
|
||||
PsiClass memberClass = member.getContainingClass();
|
||||
PsiMethod containingMethod = PsiTreeUtil.getParentOfType(ref, PsiMethod.class);
|
||||
PsiClassInitializer classInitializer = PsiTreeUtil.getParentOfType(ref, PsiClassInitializer.class);
|
||||
if (!member.hasModifierProperty(PsiModifier.STATIC) && (isStaticMember(containingMethod) || isStaticMember(classInitializer))) {
|
||||
PsiMember containingMember = PsiTreeUtil.getParentOfType(ref, PsiMethod.class, PsiClassInitializer.class, PsiField.class);
|
||||
if (!member.hasModifierProperty(PsiModifier.STATIC) && isStaticMember(containingMember)) {
|
||||
return null;
|
||||
}
|
||||
PsiElementFactory factory = JavaPsiFacade.getElementFactory(ref.getProject());
|
||||
PsiClass memberClass = member.getContainingClass();
|
||||
if (memberClass != null) {
|
||||
if (member.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
return factory.createReferenceExpression(memberClass);
|
||||
|
||||
Reference in New Issue
Block a user