diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index aada5a460c7..0e94c47ea1c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -219,8 +219,17 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider { } fun PsiType.toJK(): JKType { - val ref = JKClassReferenceImpl(this@JavaToJKTreeBuilder.resolveClassReference((this as PsiClassType).resolve() ?: TODO())) //TODO support other types - return JKClassTypeImpl(ref, parameters.map { it.toJK() }) + return when (this) { + is PsiClassType -> JKClassTypeImpl(resolve()!!.convertClassReference(), parameters.map { it.toJK() }) + is PsiArrayType -> JKJavaArrayTypeImpl(componentType.toJK()) + is PsiPrimitiveType -> when (presentableText) { + "int" -> JKJavaPrimitiveTypeImpl.INT + "byte" -> JKJavaPrimitiveTypeImpl.BYTE + "boolean" -> JKJavaPrimitiveTypeImpl.BOOLEAN + else -> throw Exception("Invalid PSI") + } + else -> throw Exception("Invalid PSI") + } } } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt index f105d8ca302..cad0a0837a7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt @@ -44,6 +44,7 @@ private class DebugTreePrinter : JKVisitorVoid { printer.indented { javaMethod.block?.accept(this, null) javaMethod.modifierList.accept(this, null) + javaMethod.valueArguments.forEach { it.accept(this, null) } } printer.println("]") } @@ -94,6 +95,15 @@ private class DebugTreePrinter : JKVisitorVoid { } printer.println("\"") } + + override fun visitType(type: JKType) { + printer.println(type.classNameWithoutJK(), " \"") + printer.indented { + if(type is JKClassType) + printer.println(type.classReference.target.name.name) + } + printer.println("\"") + } } private fun Any.classNameWithoutJK(): String = this.javaClass.simpleName.removePrefix("JK") diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index 20515073d7a..a712c2bfe52 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -165,8 +165,7 @@ sealed class JKJavaPrimitiveTypeImpl(override val name: String) : JKJavaPrimitiv object INT : JKJavaPrimitiveTypeImpl("int") } -class JKJavaArrayTypeImpl(override val type: JKType, override val dimensionCount: Int) : JKJavaArrayType, JKElementBase() { - +class JKJavaArrayTypeImpl(override val type: JKType) : JKJavaArrayType, JKElementBase() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaArrayType(this, data) override fun acceptChildren(visitor: JKVisitor, data: D) { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt index 628c94063e8..ee9cbf9416e 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt @@ -34,7 +34,6 @@ interface JKJavaPrimitiveType : JKType { interface JKJavaArrayType : JKType { val type: JKType - val dimensionCount : Int } interface JKJavaStringLiteralExpression : JKLiteralExpression { diff --git a/j2k/testData/newFileOrElement/first/First.java b/j2k/testData/newFileOrElement/first/First.java index b571f31338c..eb6a9183d5d 100644 --- a/j2k/testData/newFileOrElement/first/First.java +++ b/j2k/testData/newFileOrElement/first/First.java @@ -3,7 +3,7 @@ package p; public class Some { public String test=""+"a"; - public static void main(String args) { + public static void main(String[][][] args, int[] b) { System.out.println("Test"); } } \ No newline at end of file