User: joe Date: 20 Oct 25 16:04 Revision: 853854a2c3c85c5269fa671f16b0a7e6ddcfd6e7 Summary: Error on local classes inside mixins. Closes #2369 TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10188&personal=false Index: src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt (revision 904a7b7b4cffd485cdc4806ee6b84a224340cd2c) +++ src/main/kotlin/platform/mixin/inspection/MixinInnerClassInspection.kt (revision 853854a2c3c85c5269fa671f16b0a7e6ddcfd6e7) @@ -41,7 +41,7 @@ private class Visitor(private val holder: ProblemsHolder) : JavaElementVisitor() { override fun visitClass(psiClass: PsiClass) { - if (PsiUtil.isLocalClass(psiClass)) { + if (psiClass.containingClass == null && PsiUtil.isLocalClass(psiClass)) { holder.registerProblem( psiClass.nameIdentifier ?: psiClass, "Local classes are not allowed inside mixins" @@ -73,7 +73,10 @@ ) } } else { - holder.registerProblem(psiClass, "Inner classes are only allowed if they are also @Mixin classes") + holder.registerProblem( + psiClass.nameIdentifier ?: psiClass, + "Inner classes are only allowed if they are also @Mixin classes" + ) } } Index: src/test/kotlin/platform/mixin/InnerClassTest.kt =================================================================== --- src/test/kotlin/platform/mixin/InnerClassTest.kt (revision 904a7b7b4cffd485cdc4806ee6b84a224340cd2c) +++ src/test/kotlin/platform/mixin/InnerClassTest.kt (revision 853854a2c3c85c5269fa671f16b0a7e6ddcfd6e7) @@ -53,15 +53,20 @@ private static void stuffInsideAnonymousClassBad() { new Object() { public void foo() { - new Object() { - }; + new Object() { + }; } - class ClassInsideAnonymousClass { - } + class ClassInsideAnonymousClass { + } }; } - + + private static void localClassBad() { + class Local { + } + } + @Mixin static class GoodInnerMixin { @@ -72,9 +77,9 @@ } - class VeryBadInnerClass { + class VeryBadInnerClass { - } + } } """,