New J2K: fix ExceptionInInitializerError in JKJavaPrimitiveTypeImpl

This commit is contained in:
Ilya Kirillov
2019-07-09 16:12:55 +03:00
parent f0dd21790a
commit b18350e9c8
2 changed files with 14 additions and 12 deletions
@@ -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)
@@ -261,20 +261,22 @@ class JKJavaNewArrayImpl(initializer: List<JKExpression>, type: JKTypeElement) :
override fun <R, D> accept(visitor: JKVisitor<R, D>, 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)
}
}