User: rednesto Date: 05 Jul 24 08:57 Revision: 8f06f6002549f2f6e1f828ec5fc7102a5259b4f3 Summary: Fix #2260 expects varargs as return value for varargs target TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9354&personal=false Index: src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt (revision 838067d05f6eaa1521fcbc16f6c7ba4022401f4a) +++ src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt (revision 8f06f6002549f2f6e1f828ec5fc7102a5259b4f3) @@ -34,6 +34,7 @@ import com.demonwav.mcdev.platform.mixin.util.isMixinExtrasSugar import com.demonwav.mcdev.util.Parameter import com.demonwav.mcdev.util.fullQualifiedName +import com.demonwav.mcdev.util.normalize import com.demonwav.mcdev.util.synchronize import com.intellij.codeInsight.intention.FileModifier.SafeFieldForPreview import com.intellij.codeInsight.intention.QuickFixFactory @@ -46,6 +47,7 @@ import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiClassType import com.intellij.psi.PsiElementVisitor +import com.intellij.psi.PsiEllipsisType import com.intellij.psi.PsiMethod import com.intellij.psi.PsiModifier import com.intellij.psi.PsiNameHelper @@ -55,7 +57,6 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager import com.intellij.psi.codeStyle.VariableKind import com.intellij.psi.util.PsiUtil -import com.intellij.psi.util.TypeConversionUtil import org.objectweb.asm.Opcodes class InvalidInjectorMethodSignatureInspection : MixinInspection() { @@ -195,13 +196,18 @@ ) { reportedSignature = true + val normalizedExpected = when (expectedReturnType) { + is PsiEllipsisType -> expectedReturnType.toArrayType() + else -> expectedReturnType + } + holder.registerProblem( method.returnTypeElement ?: identifier, - "Expected return type '${expectedReturnType.presentableText}' " + + "Expected return type '${normalizedExpected.presentableText}' " + "for $annotationName method", QuickFixFactory.getInstance().createMethodReturnFix( method, - expectedReturnType, + normalizedExpected, false, ), ) @@ -218,9 +224,9 @@ method: PsiMethod, allowCoerce: Boolean, ): Boolean { - val expectedErasure = TypeConversionUtil.erasure(expectedReturnType) - val returnErasure = TypeConversionUtil.erasure(methodReturnType) - if (expectedErasure == returnErasure) { + val normalizedExpected = expectedReturnType.normalize() + val normalizedReturn = methodReturnType.normalize() + if (normalizedExpected == normalizedReturn) { return true } if (!allowCoerce || !method.hasAnnotation(COERCE)) {