Skip to content

Commit 7969d53

Browse files
committed
Add MixinAnnotationHandler.forMixinAnnotation(PsiAnnotation) and cleanup usages
1 parent 28a411b commit 7969d53

21 files changed

+29
-52
lines changed

src/main/kotlin/platform/mixin/expression/MEExpressionCompletionUtil.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,7 @@ object MEExpressionCompletionUtil {
247247
val modifierList = expressionAnnotation.findContainingModifierList() ?: return emptyList()
248248

249249
val (handler, handlerAnnotation) = modifierList.annotations.mapFirstNotNull { annotation ->
250-
val qName = annotation.qualifiedName ?: return@mapFirstNotNull null
251-
val handler = MixinAnnotationHandler.forMixinAnnotation(qName, project) ?: return@mapFirstNotNull null
250+
val handler = MixinAnnotationHandler.forMixinAnnotation(annotation, project) ?: return@mapFirstNotNull null
252251
handler to annotation
253252
} ?: return emptyList()
254253

@@ -285,8 +284,7 @@ object MEExpressionCompletionUtil {
285284
val mixinClass = modifierList.findContainingClass() ?: return emptyList()
286285

287286
val (handler, handlerAnnotation) = modifierList.annotations.mapFirstNotNull { annotation ->
288-
val qName = annotation.qualifiedName ?: return@mapFirstNotNull null
289-
val handler = MixinAnnotationHandler.forMixinAnnotation(qName, project) ?: return@mapFirstNotNull null
287+
val handler = MixinAnnotationHandler.forMixinAnnotation(annotation, project) ?: return@mapFirstNotNull null
290288
handler to annotation
291289
} ?: return emptyList()
292290

src/main/kotlin/platform/mixin/handlers/MixinAnnotationHandler.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ interface MixinAnnotationHandler {
9696
fun getBuiltinHandlers(): Sequence<Pair<String, MixinAnnotationHandler>> =
9797
EP_NAME.extensions.asSequence().map { it.key to it.instance }
9898

99+
fun forMixinAnnotation(annotation: PsiAnnotation, project: Project = annotation.project): MixinAnnotationHandler? {
100+
val qName = annotation.qualifiedName ?: return null
101+
return forMixinAnnotation(qName, project)
102+
}
103+
99104
fun forMixinAnnotation(qualifiedName: String, project: Project? = null): MixinAnnotationHandler? {
100105
val extension = COLLECTOR.findSingle(qualifiedName)
101106
if (extension != null) {

src/main/kotlin/platform/mixin/handlers/injectionPoint/ConstantInjectionPoint.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,7 @@ class ConstantInjectionPoint : InjectionPoint<PsiElement>() {
8787
override fun getArgsValues(at: PsiAnnotation, key: String): Array<Any> {
8888
fun collectTargets(constantToCompletion: (Any) -> Any?): Array<Any> {
8989
val injectorAnnotation = AtResolver.findInjectorAnnotation(at) ?: return ArrayUtilRt.EMPTY_OBJECT_ARRAY
90-
val handler = injectorAnnotation.qualifiedName
91-
?.let { MixinAnnotationHandler.forMixinAnnotation(it, at.project) }
90+
val handler = MixinAnnotationHandler.forMixinAnnotation(injectorAnnotation)
9291
?: return ArrayUtilRt.EMPTY_OBJECT_ARRAY
9392

9493
val expandConditions = parseExpandConditions(AtResolver.getArgs(at))

src/main/kotlin/platform/mixin/handlers/injectionPoint/ConstantStringMethodInjectionPoint.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,7 @@ class ConstantStringMethodInjectionPoint : AbstractMethodInjectionPoint() {
9999
}
100100

101101
val injectorAnnotation = AtResolver.findInjectorAnnotation(at) ?: return ArrayUtilRt.EMPTY_OBJECT_ARRAY
102-
val handler = injectorAnnotation.qualifiedName
103-
?.let { MixinAnnotationHandler.forMixinAnnotation(it, at.project) }
102+
val handler = MixinAnnotationHandler.forMixinAnnotation(injectorAnnotation)
104103
?: return ArrayUtilRt.EMPTY_OBJECT_ARRAY
105104

106105
return handler.resolveTarget(injectorAnnotation).asSequence()

src/main/kotlin/platform/mixin/handlers/injectionPoint/NewInsnInjectionPoint.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ class NewInsnInjectionPoint : InjectionPoint<PsiMember>() {
7070
}
7171

7272
val injectorAnnotation = AtResolver.findInjectorAnnotation(at) ?: return ArrayUtilRt.EMPTY_OBJECT_ARRAY
73-
val handler = injectorAnnotation.qualifiedName
74-
?.let { MixinAnnotationHandler.forMixinAnnotation(it, at.project) }
73+
val handler = MixinAnnotationHandler.forMixinAnnotation(injectorAnnotation)
7574
?: return ArrayUtilRt.EMPTY_OBJECT_ARRAY
7675

7776
return handler.resolveTarget(injectorAnnotation).asSequence()

src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@ class MixinElementLineMarkerProvider : LineMarkerProviderDescriptor() {
6464
} ?: return null
6565

6666
val (handler, annotation) = element.annotations.mapFirstNotNull { annotation ->
67-
annotation.qualifiedName?.let { qName ->
68-
MixinAnnotationHandler.forMixinAnnotation(qName, annotation.project)?.let { it to annotation }
69-
}
67+
MixinAnnotationHandler.forMixinAnnotation(annotation)?.let { it to annotation }
7068
} ?: return null
7169
if (handler.isUnresolved(annotation) != null) {
7270
return null

src/main/kotlin/platform/mixin/insight/MixinEntryPoint.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ class MixinEntryPoint : EntryPointWithVisibilityLevel() {
6060
}
6161
val project = member.project
6262
for (annotation in member.annotations) {
63-
val qName = annotation.qualifiedName ?: continue
64-
val handler = MixinAnnotationHandler.forMixinAnnotation(qName, project)
63+
val handler = MixinAnnotationHandler.forMixinAnnotation(annotation, project)
6564
if (handler is InjectorAnnotationHandler) {
6665
return PsiUtil.ACCESS_LEVEL_PRIVATE
6766
}

src/main/kotlin/platform/mixin/inspection/MixinAnnotationTargetInspection.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,15 @@ class MixinAnnotationTargetInspection : MixinInspection() {
4343
if (qName == AT) {
4444
var parentAnnotation = annotation.parentOfType<PsiAnnotation>()
4545
while (parentAnnotation != null) {
46-
val parentQName = parentAnnotation.qualifiedName ?: return
47-
if (MixinAnnotationHandler.forMixinAnnotation(parentQName, parentAnnotation.project) != null) {
46+
if (MixinAnnotationHandler.forMixinAnnotation(parentAnnotation) != null) {
4847
break
4948
}
5049
parentAnnotation = parentAnnotation.parentOfType()
5150
}
5251
if (parentAnnotation == null) {
5352
return
5453
}
55-
val parentQName = parentAnnotation.qualifiedName ?: return
56-
val handler = MixinAnnotationHandler.forMixinAnnotation(parentQName, parentAnnotation.project)
57-
?: return
54+
val handler = MixinAnnotationHandler.forMixinAnnotation(parentAnnotation) ?: return
5855
val targets = handler.resolveTarget(parentAnnotation).ifEmpty { return }
5956
val failure = targets.asSequence()
6057
.mapNotNull {

src/main/kotlin/platform/mixin/inspection/MixinAnnotationsInspection.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ class MixinAnnotationsInspection : MixinInspection() {
4040
private class Visitor(private val holder: ProblemsHolder) : JavaElementVisitor() {
4141

4242
override fun visitAnnotation(annotation: PsiAnnotation) {
43-
val qualifiedName = annotation.qualifiedName ?: return
44-
if (MixinAnnotationHandler.forMixinAnnotation(qualifiedName, annotation.project) == null) {
43+
if (MixinAnnotationHandler.forMixinAnnotation(annotation, annotation.project) == null) {
4544
return
4645
}
4746

src/main/kotlin/platform/mixin/inspection/injector/CtorHeadPostInitInspection.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,7 @@ class CtorHeadPostInitInspection : MixinInspection() {
5757
}
5858

5959
val injectorAnnotation = AtResolver.findInjectorAnnotation(annotation) ?: return
60-
val handler = injectorAnnotation.qualifiedName
61-
?.let { MixinAnnotationHandler.forMixinAnnotation(it, holder.project) }
62-
?: return
60+
val handler = MixinAnnotationHandler.forMixinAnnotation(injectorAnnotation, holder.project) ?: return
6361
val targets = handler.resolveTarget(injectorAnnotation).filterIsInstance<MethodTargetMember>()
6462

6563
if (targets.any {

0 commit comments

Comments
 (0)