From 51ee64a7579d8ea91e13ac28911eec8179da8260 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 24 Dec 2018 12:08:48 +0300 Subject: [PATCH] New J2K: Add java void type to JKClassLiteralExpression & make all inner types of JKClassLiteralExpression's classType to be notNull --- .../jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 11 +++++++---- .../org/jetbrains/kotlin/j2k/NewCodeBuilder.kt | 16 ++++++++++------ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt | 3 ++- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 61ff9f66871..6d4505dec27 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -104,11 +104,14 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { } fun PsiClassObjectAccessExpressionImpl.toJK(): JKClassLiteralExpression { - val type = operand.toJK() + val type = operand.toJK().type.updateNullabilityRecursively(Nullability.NotNull) return JKClassLiteralExpressionImpl( - type, - if (type.type is JKJavaPrimitiveType) JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS - else JKClassLiteralExpression.LiteralType.JAVA_CLASS + JKTypeElementImpl(type), + when (type) { + is JKJavaPrimitiveType -> JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS + is JKJavaVoidType -> JKClassLiteralExpression.LiteralType.JAVA_VOID_TYPE + else -> JKClassLiteralExpression.LiteralType.JAVA_CLASS + } ) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 26b355cd683..3b769172120 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -812,12 +812,16 @@ class NewCodeBuilder { } override fun visitClassLiteralExpression(classLiteralExpression: JKClassLiteralExpression) { - renderType(classLiteralExpression.classType.type.updateNullability(Nullability.NotNull)) - printer.printWithNoIndent("::") - when (classLiteralExpression.literalType) { - JKClassLiteralExpression.LiteralType.KOTLIN_CLASS -> printer.printWithNoIndent("class") - JKClassLiteralExpression.LiteralType.JAVA_CLASS -> printer.printWithNoIndent("class.java") - JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS -> printer.printWithNoIndent("class.javaPrimitiveType") + if (classLiteralExpression.literalType == JKClassLiteralExpression.LiteralType.JAVA_VOID_TYPE) { + printer.printWithNoIndent("Void.TYPE") + } else { + renderType(classLiteralExpression.classType.type) + printer.printWithNoIndent("::") + when (classLiteralExpression.literalType) { + JKClassLiteralExpression.LiteralType.KOTLIN_CLASS -> printer.printWithNoIndent("class") + JKClassLiteralExpression.LiteralType.JAVA_CLASS -> printer.printWithNoIndent("class.java") + JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS -> printer.printWithNoIndent("class.javaPrimitiveType") + } } } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 08438d16b71..a2a64baccdf 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -412,6 +412,7 @@ interface JKClassLiteralExpression : JKExpression { enum class LiteralType { KOTLIN_CLASS, JAVA_CLASS, - JAVA_PRIMITIVE_CLASS + JAVA_PRIMITIVE_CLASS, + JAVA_VOID_TYPE } } \ No newline at end of file