diff --git a/j2k/testData/JavaApi.java b/j2k/testData/JavaApi.java index d99468d5e9a..e598fc87476 100644 --- a/j2k/testData/JavaApi.java +++ b/j2k/testData/JavaApi.java @@ -123,4 +123,8 @@ public class JavaClass { public int get(int p) { return 0; } +} + +public @interface SpecialExternal { + String[] names(); //array is used } \ No newline at end of file diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AnnotationConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AnnotationConversion.kt index b0c5d179584..b3c7be394da 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AnnotationConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/AnnotationConversion.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.nj2k.conversions +import com.intellij.psi.PsiArrayType import com.intellij.psi.PsiClass import com.intellij.psi.PsiMethod -import org.jetbrains.kotlin.load.java.structure.JavaArrayType import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext import org.jetbrains.kotlin.nj2k.primaryConstructor import org.jetbrains.kotlin.nj2k.toExpression @@ -41,7 +41,6 @@ class AnnotationConversion(private val context: NewJ2kConverterContext) : Recurs .map { JKAnnotationParameterImpl(it) } annotationParameter is JKAnnotationNameParameter && annotation.isVarargsArgument(annotationParameter.name.value) - && annotation.classSymbol.target is JKClass && annotationParameter.value !is JKKtAnnotationArrayInitializerExpression -> { listOf( JKAnnotationNameParameterImpl( @@ -68,7 +67,7 @@ class AnnotationConversion(private val context: NewJ2kConverterContext) : Recurs } private fun PsiMethod.isVarArgsAnnotationMethod(isNamedArgument: Boolean) = - isVarArgs || returnType is JavaArrayType || name == "value" && !isNamedArgument + isVarArgs || returnType is PsiArrayType || name == "value" && !isNamedArgument private fun JKParameter.isVarArgsAnnotationParameter(isNamedArgument: Boolean) = isVarArgs || type.type.isArrayType() || name.value == "value" && !isNamedArgument diff --git a/nj2k/testData/newJ2k/annotations/kt-31726.java b/nj2k/testData/newJ2k/annotations/kt-31726.java index c6933b27650..1744bd624dc 100644 --- a/nj2k/testData/newJ2k/annotations/kt-31726.java +++ b/nj2k/testData/newJ2k/annotations/kt-31726.java @@ -1,7 +1,12 @@ +import javaApi.SpecialExternal; + //Annotation class: public @interface Special { String[] names(); //array is used } //Class with annotation: @Special(names = "name1") -public class JClass {} \ No newline at end of file +public class JClass {} + +@SpecialExternal(names = "name1") +public class JClass2 {} diff --git a/nj2k/testData/newJ2k/annotations/kt-31726.kt b/nj2k/testData/newJ2k/annotations/kt-31726.kt index c307be66e3c..2f9f707bd89 100644 --- a/nj2k/testData/newJ2k/annotations/kt-31726.kt +++ b/nj2k/testData/newJ2k/annotations/kt-31726.kt @@ -1,6 +1,11 @@ +import javaApi.SpecialExternal + //Annotation class: annotation class Special(val names: Array //array is used ) //Class with annotation: @Special(names = ["name1"]) -class JClass \ No newline at end of file +class JClass + +@SpecialExternal(names = ["name1"]) +class JClass2 \ No newline at end of file