User: joe
Date: 17 Mar 23 14:56
Revision: 13899da5dadf40ae7ecda84d62845e7409b9dc5b
Summary:
Warning for Mixins not written in Java
TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=8375&personal=false
Index: src/main/kotlin/platform/mixin/inspection/NonJavaMixinInspection.kt
===================================================================
--- src/main/kotlin/platform/mixin/inspection/NonJavaMixinInspection.kt (revision 13899da5dadf40ae7ecda84d62845e7409b9dc5b)
+++ src/main/kotlin/platform/mixin/inspection/NonJavaMixinInspection.kt (revision 13899da5dadf40ae7ecda84d62845e7409b9dc5b)
@@ -0,0 +1,52 @@
+/*
+ * Minecraft Dev for IntelliJ
+ *
+ * https://minecraftdev.org
+ *
+ * Copyright (c) 2023 minecraft-dev
+ *
+ * MIT License
+ */
+
+package com.demonwav.mcdev.platform.mixin.inspection
+
+import com.demonwav.mcdev.platform.mixin.util.MixinConstants
+import com.intellij.codeInspection.AbstractBaseUastLocalInspectionTool
+import com.intellij.codeInspection.InspectionManager
+import com.intellij.codeInspection.ProblemDescriptor
+import com.intellij.codeInspection.ProblemHighlightType
+import com.intellij.lang.java.JavaLanguage
+import org.jetbrains.uast.UClass
+
+class NonJavaMixinInspection : AbstractBaseUastLocalInspectionTool(UClass::class.java) {
+ override fun getDisplayName() = "Mixin is not written in Java"
+ override fun getStaticDescription() =
+ "Mixins must be written in Java. See this Mixin issue"
+
+ override fun checkClass(
+ aClass: UClass,
+ manager: InspectionManager,
+ isOnTheFly: Boolean
+ ): Array? {
+ val sourcePsi = aClass.sourcePsi ?: return null
+ if (sourcePsi.language == JavaLanguage.INSTANCE) {
+ return null
+ }
+ val isMixin = aClass.uAnnotations.any { ann -> ann.qualifiedName == MixinConstants.Annotations.MIXIN }
+ if (!isMixin) {
+ return null
+ }
+ val problem = manager.createProblemDescriptor(
+ aClass.uastAnchor?.sourcePsi ?: sourcePsi,
+ this.staticDescription,
+ isOnTheFly,
+ null,
+ ProblemHighlightType.GENERIC_ERROR_OR_WARNING
+ )
+ return arrayOf(problem)
+ }
+
+ companion object {
+ private const val RELEVANT_ISSUE = "https://github.com/SpongePowered/Mixin/issues/245"
+ }
+}
Index: src/main/resources/META-INF/plugin.xml
===================================================================
--- src/main/resources/META-INF/plugin.xml (revision 9e6022676472a15d0561b7d65f0430eb53926e7e)
+++ src/main/resources/META-INF/plugin.xml (revision 13899da5dadf40ae7ecda84d62845e7409b9dc5b)
@@ -629,6 +629,14 @@
+