Skip to content

Commit e5397e8

Browse files
committed
Do not use varargs in injection point signature
Fixes #763
1 parent e5c63bb commit e5397e8

File tree

1 file changed

+14
-2
lines changed
  • src/main/kotlin/com/demonwav/mcdev/platform/mixin/inspection/injector

1 file changed

+14
-2
lines changed

src/main/kotlin/com/demonwav/mcdev/platform/mixin/inspection/injector/InjectorType.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ import com.intellij.psi.JavaPsiFacade
2323
import com.intellij.psi.PsiAnnotation
2424
import com.intellij.psi.PsiAnnotationOwner
2525
import com.intellij.psi.PsiClass
26+
import com.intellij.psi.PsiEllipsisType
2627
import com.intellij.psi.PsiField
2728
import com.intellij.psi.PsiMethod
2829
import com.intellij.psi.PsiModifier.STATIC
2930
import com.intellij.psi.PsiNameHelper
31+
import com.intellij.psi.PsiParameter
3032
import com.intellij.psi.PsiQualifiedReference
3133
import com.intellij.psi.PsiType
3234
import org.jetbrains.org.objectweb.asm.Opcodes
@@ -136,7 +138,7 @@ enum class InjectorType(private val annotation: String) {
136138
method.returnType!!
137139
}
138140

139-
parameterList.parameters.mapTo(parameters, ::Parameter)
141+
parameterList.parameters.mapTo(parameters, ::sanitizedParameter)
140142
return Pair(parameters, returnType)
141143
}
142144

@@ -202,10 +204,20 @@ enum class InjectorType(private val annotation: String) {
202204
}
203205

204206
// Add method parameters to list
205-
parameters.mapTo(list, ::Parameter)
207+
parameters.mapTo(list, ::sanitizedParameter)
206208
return list
207209
}
208210

211+
private fun sanitizedParameter(parameter: PsiParameter): Parameter {
212+
// Parameters should not use ellipsis because others like CallbackInfo may follow
213+
val type = parameter.type
214+
return if (type is PsiEllipsisType) {
215+
Parameter(parameter.name, type.toArrayType())
216+
} else {
217+
Parameter(parameter)
218+
}
219+
}
220+
209221
fun findAnnotations(element: PsiAnnotationOwner): List<Pair<InjectorType, PsiAnnotation>> {
210222
return element.annotations.mapNotNull {
211223
val name = it.qualifiedName ?: return@mapNotNull null

0 commit comments

Comments
 (0)