User: llamalad7 Date: 14 Jan 24 22:53 Revision: 8b003af1a94948d21fd36e7ad0f809f1ca21c1fa Summary: Mixin tweaks for upcoming MixinExtras feature (#2205) * Mixin: Look for injector annotations more widely when autocompleting in `@At`s. * Mixin: Don't warn about lack of possible injector signatures if a custom injection point is used. TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=8977&personal=false Index: src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt =================================================================== --- src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt (revision 243987078f37a0cd2b36d26ee3686f658c187882) +++ src/main/kotlin/platform/mixin/inspection/injector/InvalidInjectorMethodSignatureInspection.kt (revision 8b003af1a94948d21fd36e7ad0f809f1ca21c1fa) @@ -128,10 +128,12 @@ if (possibleSignatures.isEmpty()) { reportedSignature = true + if (handler.isUnresolved(annotation) != null) { - holder.registerProblem( - parameters, - "There are no possible signatures for this injector", - ) + holder.registerProblem( + parameters, + "There are no possible signatures for this injector", + ) + } continue } Index: src/main/kotlin/platform/mixin/reference/target/TargetReference.kt =================================================================== --- src/main/kotlin/platform/mixin/reference/target/TargetReference.kt (revision 243987078f37a0cd2b36d26ee3686f658c187882) +++ src/main/kotlin/platform/mixin/reference/target/TargetReference.kt (revision 8b003af1a94948d21fd36e7ad0f809f1ca21c1fa) @@ -20,6 +20,7 @@ package com.demonwav.mcdev.platform.mixin.reference.target +import com.demonwav.mcdev.platform.mixin.handlers.InjectorAnnotationHandler import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler import com.demonwav.mcdev.platform.mixin.handlers.injectionPoint.AtResolver import com.demonwav.mcdev.platform.mixin.reference.MixinReference @@ -71,9 +72,13 @@ private fun getTargets(at: PsiAnnotation, forUnresolved: Boolean): List? { val (handler, annotation) = generateSequence(at.parent) { it.parent } .filterIsInstance() + .flatMap { it.owner?.annotations?.asSequence() ?: emptySequence() } .mapNotNull { annotation -> val qName = annotation.qualifiedName ?: return@mapNotNull null - MixinAnnotationHandler.forMixinAnnotation(qName, annotation.project)?.let { it to annotation } + ( + MixinAnnotationHandler.forMixinAnnotation(qName, annotation.project) + as? InjectorAnnotationHandler + )?.let { it to annotation } }.firstOrNull() ?: return null if (forUnresolved && handler.isSoft) { return null