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 @@ +