User: joe Date: 23 Jun 23 21:13 Revision: 57bed630b48404be8e00c5230876329a727ab64f Summary: Suppress unused warnings on static invoker parameters TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=8544&personal=false Index: src/main/kotlin/platform/mixin/inspection/suppress/StaticInvokerUnusedParamInspectionSuppressor.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/suppress/StaticInvokerUnusedParamInspectionSuppressor.kt (revision 57bed630b48404be8e00c5230876329a727ab64f) +++ src/main/kotlin/platform/mixin/inspection/suppress/StaticInvokerUnusedParamInspectionSuppressor.kt (revision 57bed630b48404be8e00c5230876329a727ab64f) @@ -0,0 +1,68 @@ +/* + * Minecraft Development for IntelliJ + * + * https://mcdev.io/ + * + * Copyright (C) 2023 minecraft-dev + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, version 3.0 only. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ + +package com.demonwav.mcdev.platform.mixin.inspection.suppress + +import com.demonwav.mcdev.platform.mixin.util.MixinConstants +import com.demonwav.mcdev.platform.mixin.util.isMixin +import com.demonwav.mcdev.util.equivalentTo +import com.demonwav.mcdev.util.findContainingClass +import com.demonwav.mcdev.util.findContainingMethod +import com.intellij.codeInspection.InspectionSuppressor +import com.intellij.codeInspection.SuppressQuickFix +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiModifier +import com.intellij.psi.PsiParameter + +class StaticInvokerUnusedParamInspectionSuppressor : InspectionSuppressor { + companion object { + private const val INSPECTION = "unused" + } + + override fun isSuppressedFor(element: PsiElement, toolId: String): Boolean { + if (toolId != INSPECTION) { + return false + } + + val parent = element.parent as? PsiParameter ?: return false + if (!(element equivalentTo parent.nameIdentifier)) { + return false + } + + val method = parent.findContainingMethod() ?: return false + if (!method.hasModifierProperty(PsiModifier.STATIC)) { + return false + } + + if (!method.hasAnnotation(MixinConstants.Annotations.INVOKER)) { + return false + } + + val clazz = method.findContainingClass() ?: return false + if (!clazz.isMixin) { + return false + } + + return true + } + + override fun getSuppressActions(element: PsiElement?, toolId: String): Array = + SuppressQuickFix.EMPTY_ARRAY +} Index: src/main/kotlin/util/psi-utils.kt =================================================================== --- src/main/kotlin/util/psi-utils.kt (revision 3550f84825a4fb94ba63eb709bb69bb8795987cc) +++ src/main/kotlin/util/psi-utils.kt (revision 57bed630b48404be8e00c5230876329a727ab64f) @@ -195,7 +195,7 @@ return modifier in ACCESS_MODIFIERS } -infix fun PsiElement.equivalentTo(other: PsiElement): Boolean { +infix fun PsiElement.equivalentTo(other: PsiElement?): Boolean { return manager.areElementsEquivalent(this, other) } Index: src/main/resources/META-INF/plugin.xml =================================================================== --- src/main/resources/META-INF/plugin.xml (revision 3550f84825a4fb94ba63eb709bb69bb8795987cc) +++ src/main/resources/META-INF/plugin.xml (revision 57bed630b48404be8e00c5230876329a727ab64f) @@ -408,6 +408,7 @@ +