Skip to content

Commit 904a7b7

Browse files
committed
Error on local classes inside mixins. Closes #2369
1 parent d7d6af1 commit 904a7b7

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import com.intellij.psi.PsiAnonymousClass
2929
import com.intellij.psi.PsiClass
3030
import com.intellij.psi.PsiElementVisitor
3131
import com.intellij.psi.PsiModifier
32+
import com.intellij.psi.util.PsiUtil
3233
import com.intellij.psi.util.parentOfType
3334

3435
class MixinInnerClassInspection : MixinInspection() {
@@ -40,11 +41,20 @@ class MixinInnerClassInspection : MixinInspection() {
4041
private class Visitor(private val holder: ProblemsHolder) : JavaElementVisitor() {
4142

4243
override fun visitClass(psiClass: PsiClass) {
44+
if (PsiUtil.isLocalClass(psiClass)) {
45+
holder.registerProblem(
46+
psiClass.nameIdentifier ?: psiClass,
47+
"Local classes are not allowed inside mixins"
48+
)
49+
50+
return
51+
}
52+
4353
val outerClass = psiClass.containingClass ?: return
4454
if (!outerClass.isMixin) {
4555
if (outerClass is PsiAnonymousClass && outerClass.parentOfType<PsiClass>()?.isMixin == true) {
4656
holder.registerProblem(
47-
psiClass,
57+
psiClass.nameIdentifier ?: psiClass,
4858
"Inner class not allowed inside anonymous classes inside mixins",
4959
)
5060
}
@@ -76,7 +86,10 @@ class MixinInnerClassInspection : MixinInspection() {
7686
return
7787
}
7888

79-
holder.registerProblem(psiClass, "Double nested anonymous classes are not allowed in a @Mixin class")
89+
holder.registerProblem(
90+
psiClass.baseClassReference,
91+
"Double nested anonymous classes are not allowed in a @Mixin class"
92+
)
8093
}
8194
}
8295
}

0 commit comments

Comments
 (0)