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 {
- }
+ }
}
""",