From b18350e9c8d5cd09f2fc3dce92384ce79722a0d2 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 9 Jul 2019 16:12:55 +0300 Subject: [PATCH] New J2K: fix ExceptionInInitializerError in JKJavaPrimitiveTypeImpl --- .../ImplicitInitializerConversion.kt | 2 +- .../org/jetbrains/kotlin/nj2k/tree/impl/j.kt | 24 ++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt index 02aa36f9cf4..1171132428e 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt @@ -111,7 +111,7 @@ class ImplicitInitializerConversion(private val context: NewJ2kConverterContext) private fun createPrimitiveTypeInitializer(primitiveType: JKJavaPrimitiveType): JKLiteralExpression = when (primitiveType) { - is JKJavaPrimitiveTypeImpl.BOOLEAN -> + JKJavaPrimitiveTypeImpl.BOOLEAN -> JKBooleanLiteral(false) else -> JKJavaLiteralExpressionImpl("0", JKLiteralExpression.LiteralType.INT) diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/tree/impl/j.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/tree/impl/j.kt index 4db4c452f1e..934bbb3fd5f 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/tree/impl/j.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/tree/impl/j.kt @@ -261,20 +261,22 @@ class JKJavaNewArrayImpl(initializer: List, type: JKTypeElement) : override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaNewArray(this, data) } -sealed class JKJavaPrimitiveTypeImpl(override val jvmPrimitiveType: JvmPrimitiveType) : JKJavaPrimitiveType { - object BOOLEAN : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.BOOLEAN) - object CHAR : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.CHAR) - object BYTE : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.BYTE) - object SHORT : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.SHORT) - object INT : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.INT) - object FLOAT : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.FLOAT) - object LONG : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.LONG) - object DOUBLE : JKJavaPrimitiveTypeImpl(JvmPrimitiveType.DOUBLE) - +class JKJavaPrimitiveTypeImpl(override val jvmPrimitiveType: JvmPrimitiveType) : JKJavaPrimitiveType { companion object { + val BOOLEAN = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.BOOLEAN) + val CHAR = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.CHAR) + val BYTE = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.BYTE) + val SHORT = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.SHORT) + val INT = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.INT) + val FLOAT = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.FLOAT) + val LONG = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.LONG) + val DOUBLE = JKJavaPrimitiveTypeImpl(JvmPrimitiveType.DOUBLE) + val KEYWORD_TO_INSTANCE = listOf( BOOLEAN, CHAR, BYTE, SHORT, INT, FLOAT, LONG, DOUBLE - ).associate { it.jvmPrimitiveType.javaKeywordName to it } + ("void" to JKJavaVoidType) + ).associate { + it.jvmPrimitiveType.javaKeywordName to it + } + ("void" to JKJavaVoidType) } }