User: joe Date: 20 Oct 25 15:55 Revision: 904a7b7b4cffd485cdc4806ee6b84a224340cd2c Summary: Error on local classes inside mixins. Closes #2369 TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10186&personal=false Index: src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt (revision d7d6af165b0ca4c6f51420ba478f1d48b477b30a) +++ src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt (revision 904a7b7b4cffd485cdc4806ee6b84a224340cd2c) @@ -29,6 +29,7 @@ import com.intellij.psi.PsiClass import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiModifier +import com.intellij.psi.util.PsiUtil import com.intellij.psi.util.parentOfType class MixinInnerClassInspection : MixinInspection() { @@ -40,11 +41,20 @@ private class Visitor(private val holder: ProblemsHolder) : JavaElementVisitor() { override fun visitClass(psiClass: PsiClass) { + if (PsiUtil.isLocalClass(psiClass)) { + holder.registerProblem( + psiClass.nameIdentifier ?: psiClass, + "Local classes are not allowed inside mixins" + ) + + return + } + val outerClass = psiClass.containingClass ?: return if (!outerClass.isMixin) { if (outerClass is PsiAnonymousClass && outerClass.parentOfType()?.isMixin == true) { holder.registerProblem( - psiClass, + psiClass.nameIdentifier ?: psiClass, "Inner class not allowed inside anonymous classes inside mixins", ) } @@ -76,7 +86,10 @@ return } - holder.registerProblem(psiClass, "Double nested anonymous classes are not allowed in a @Mixin class") + holder.registerProblem( + psiClass.baseClassReference, + "Double nested anonymous classes are not allowed in a @Mixin class" + ) } } }