@@ -29,6 +29,8 @@ import com.demonwav.mcdev.platform.mixin.reference.isMiscDynamicSelector
2929import com.demonwav.mcdev.platform.mixin.reference.parseMixinSelector
3030import com.demonwav.mcdev.platform.mixin.reference.target.TargetReference
3131import com.demonwav.mcdev.platform.mixin.util.InjectionPointSpecifier
32+ import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.AT
33+ import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.SLICE
3234import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Classes.SHIFT
3335import com.demonwav.mcdev.platform.mixin.util.findSourceClass
3436import com.demonwav.mcdev.platform.mixin.util.findSourceElement
@@ -152,11 +154,13 @@ class AtResolver(
152154 }
153155 }
154156
155- fun findInjectorAnnotation (at : PsiAnnotation ): PsiAnnotation ? {
157+ fun findInjectorAnnotation (at : PsiAnnotation , skipThroughSlice : Boolean = true ): PsiAnnotation ? {
156158 return at.parents(false )
157159 .takeWhile { it !is PsiClass }
158160 .filterIsInstance<PsiAnnotation >()
159- .firstOrNull { it.parent is PsiModifierList }
161+ .firstOrNull {
162+ ! skipThroughSlice || (! it.hasQualifiedName(SLICE ) && ! it.hasQualifiedName(AT ))
163+ }
160164 }
161165
162166 fun getShift (at : PsiAnnotation ): Int {
@@ -281,7 +285,7 @@ class AtResolver(
281285 val injectionPoint = getInjectionPoint(at) ? : return emptyList()
282286 val targetAttr = at.findAttributeValue(" target" )
283287 val target = targetAttr?.let { parseMixinSelector(it) }
284- val injector = findInjectorAnnotation(at)?.let (MixinAnnotationHandler ::forMixinAnnotation)
288+ val injector = findInjectorAnnotation(at, skipThroughSlice = false )?.let (MixinAnnotationHandler ::forMixinAnnotation)
285289 as ? InjectorAnnotationHandler
286290
287291 // Collect all possible targets
0 commit comments