@@ -31,20 +31,21 @@ import com.demonwav.mcdev.util.constantStringValue
3131import com.demonwav.mcdev.util.constantValue
3232import com.demonwav.mcdev.util.descriptor
3333import com.demonwav.mcdev.util.findModule
34+ import com.demonwav.mcdev.util.mapToArray
3435import com.demonwav.mcdev.util.referencedMethod
35- import com.demonwav.mcdev.util.toTypedArray
3636import com.intellij.codeInsight.AnnotationUtil
3737import com.intellij.codeInsight.completion.CompletionUtilCore
3838import com.intellij.codeInspection.dataFlow.CommonDataflow
3939import com.intellij.openapi.project.Project
4040import com.intellij.openapi.util.RecursionManager
4141import com.intellij.psi.CommonClassNames
4242import com.intellij.psi.JavaPsiFacade
43+ import com.intellij.psi.PsiArrayType
4344import com.intellij.psi.PsiElement
4445import com.intellij.psi.PsiEllipsisType
4546import com.intellij.psi.PsiExpression
4647import com.intellij.psi.PsiParameter
47- import com.intellij.psi.PsiType
48+ import com.intellij.psi.PsiPrimitiveType
4849import java.util.IllegalFormatException
4950import java.util.MissingFormatArgumentException
5051import org.jetbrains.uast.UCallExpression
@@ -54,7 +55,7 @@ import org.jetbrains.uast.UMethod
5455import org.jetbrains.uast.UQualifiedReferenceExpression
5556import org.jetbrains.uast.evaluateString
5657import org.jetbrains.uast.getContainingUClass
57- import org.jetbrains.uast.util.isArrayInitializer
58+ import org.jetbrains.uast.util.isNewArrayWithInitializer
5859
5960object TranslationIdentifier {
6061 fun identify (
@@ -203,24 +204,19 @@ object TranslationIdentifier {
203204 }
204205
205206 val elements = args.drop(index)
206- return extractVarArgs(psiParam.type, elements)
207+ return extractVarArgs(elements)?.mapToArray { it.paramDisplayString() }
207208 }
208209
209- private fun extractVarArgs (type : PsiType , elements : List <UExpression >): Array <String >? {
210- return if (elements[0 ].getExpressionType() == type) {
211- val initializer = elements[0 ]
212- if (initializer is UCallExpression && initializer.isArrayInitializer()) {
213- // We're dealing with an array initializer, let's analyse it!
214- initializer.valueArguments
215- .asSequence()
216- .map { it.paramDisplayString() }
217- .toTypedArray()
218- } else {
219- // We're dealing with a more complex expression that results in an array, give up
220- return null
221- }
210+ private fun extractVarArgs (elements : List <UExpression >): List <UExpression >? {
211+ val arg = elements.singleOrNull() ? : return elements
212+ val arrayType = arg.getExpressionType() as ? PsiArrayType ? : return elements
213+ if (arrayType.componentType is PsiPrimitiveType ) return elements
214+ return if (arg is UCallExpression && arg.isNewArrayWithInitializer()) {
215+ // We're dealing with an array initializer, let's use its elements!
216+ arg.valueArguments
222217 } else {
223- elements.asSequence().map { it.paramDisplayString() }.toTypedArray()
218+ // We're dealing with a more complex expression that results in an array, give up
219+ null
224220 }
225221 }
226222
0 commit comments