Skip to content

Commit 8b8a082

Browse files
committed
Fix Add class qualifier to static member access outside declaring class not working correctly for switch statements
Fixes #263
1 parent fbd3146 commit 8b8a082

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 1.4.1
2+
* Fix ``Add class qualifier to static member access outside declaring class`` not working correctly for ``switch`` statements #263
3+
14
## 1.4.0
25
* Dropped support for IntelliJ versions < 2024.3
36
* This is required to fix a few deprecations and remove some workarounds #171

src/main/java/software/xdev/saveactions/processors/java/inspection/style/CustomUnqualifiedStaticUsageInspection.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.jetbrains.annotations.NotNull;
55

66
import com.intellij.psi.JavaResolveResult;
7+
import com.intellij.psi.PsiCaseLabelElementList;
78
import com.intellij.psi.PsiClass;
89
import com.intellij.psi.PsiElement;
910
import com.intellij.psi.PsiEnumConstant;
@@ -15,7 +16,7 @@
1516
import com.intellij.psi.PsiMethodCallExpression;
1617
import com.intellij.psi.PsiModifier;
1718
import com.intellij.psi.PsiReferenceExpression;
18-
import com.intellij.psi.PsiSwitchLabelStatement;
19+
import com.intellij.psi.PsiSwitchLabelStatementBase;
1920
import com.intellij.psi.util.PsiTreeUtil;
2021
import com.intellij.psi.util.PsiUtil;
2122
import com.siyeh.ig.BaseInspectionVisitor;
@@ -113,7 +114,7 @@ private boolean isUnqualifiedStaticAccess(final PsiReferenceExpression expressio
113114
return false;
114115
}
115116
final PsiMember member = (PsiMember)element;
116-
if(member instanceof PsiEnumConstant && expression.getParent() instanceof PsiSwitchLabelStatement)
117+
if(this.isEnumInSwitch(member, expression))
117118
{
118119
return false;
119120
}
@@ -125,5 +126,19 @@ private boolean isUnqualifiedStaticAccess(final PsiReferenceExpression expressio
125126
}
126127
return member.hasModifierProperty(PsiModifier.STATIC);
127128
}
129+
130+
private boolean isEnumInSwitch(final PsiMember member, final PsiReferenceExpression expression)
131+
{
132+
if(!(member instanceof PsiEnumConstant))
133+
{
134+
return false;
135+
}
136+
137+
final PsiElement parent = expression.getParent();
138+
return parent instanceof PsiCaseLabelElementList
139+
|| parent != null && parent.getParent() instanceof PsiSwitchLabelStatementBase
140+
// This was the original code and might be needed for older java versions
141+
|| parent instanceof PsiSwitchLabelStatementBase;
142+
}
128143
}
129144
}

0 commit comments

Comments
 (0)