From 4517d3a3d0d66d63291d13ed4075e3f458e647a9 Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Thu, 16 Nov 2017 16:02:42 +0300 Subject: [PATCH] Support primitive boolean arrays --- .../streams/kotlin/trace/dsl/KotlinStatementFactory.kt | 5 +++-- .../debugger/streams/kotlin/trace/dsl/KotlinTypes.kt | 4 +++- idea/testData/debugger/sequence/dsl/mapConvertToArray.out | 4 ++-- idea/testData/debugger/sequence/dsl/sizedArrayCreation.out | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinStatementFactory.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinStatementFactory.kt index ffdb3ac2d9e..6a113167b80 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinStatementFactory.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinStatementFactory.kt @@ -7,7 +7,6 @@ import com.intellij.debugger.streams.trace.dsl.impl.TextExpression import com.intellij.debugger.streams.trace.dsl.impl.VariableImpl import com.intellij.debugger.streams.trace.impl.handler.type.GenericType import com.intellij.debugger.streams.wrapper.IntermediateStreamCall - /** * @author Vitaliy.Bibaev */ @@ -84,6 +83,7 @@ class KotlinStatementFactory(private val peekCallFactory: PeekCallFactory) : Sta override fun createNewArrayExpression(elementType: GenericType, vararg args: Expression): Expression { val arguments = args.joinToString { it.toCode() } return when (elementType) { + types.BOOLEAN -> TextExpression("kotlin.booleanArrayOf($arguments)") types.INT -> TextExpression("kotlin.intArrayOf($arguments)") types.LONG -> TextExpression("kotlin.longArrayOf($arguments)") types.DOUBLE -> TextExpression("kotlin.doubleArrayOf($arguments)") @@ -92,7 +92,8 @@ class KotlinStatementFactory(private val peekCallFactory: PeekCallFactory) : Sta } override fun createNewSizedArray(elementType: GenericType, size: Expression): Expression = - TextExpression("arrayOfNulls<${elementType.genericTypeName}>(${size.toCode()})") + TextExpression(types.array(elementType).sizedDeclaration(size.toCode())) + override fun createPeekCall(elementsType: GenericType, lambda: String): IntermediateStreamCall = peekCallFactory.createPeekCall(elementsType, lambda) diff --git a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinTypes.kt b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinTypes.kt index e3832282054..d7af9a3d156 100644 --- a/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinTypes.kt +++ b/idea/idea-jvm/src/com/intellij/debugger/streams/kotlin/trace/dsl/KotlinTypes.kt @@ -23,10 +23,12 @@ object KotlinTypes : Types { ListTypeImpl(elementsType, { "kotlin.collections.MutableList<$it>" }, "kotlin.collections.mutableListOf()") override fun array(elementType: GenericType): ArrayType = when (elementType) { + BOOLEAN -> ArrayTypeImpl(BOOLEAN, { "kotlin.BooleanArray" }, { "kotlin.BooleanArray($it)" }) INT -> ArrayTypeImpl(INT, { "kotlin.IntArray" }, { "kotlin.IntArray($it)" }) LONG -> ArrayTypeImpl(LONG, { "kotlin.LongArray" }, { "kotlin.LongArray($it)" }) DOUBLE -> ArrayTypeImpl(DOUBLE, { "kotlin.DoubleArray" }, { "kotlin.DoubleArray($it)" }) - else -> ArrayTypeImpl(nullable { elementType }, { "kotlin.Array<$it>" }, { "kotlin.arrayOfNulls($it)" }) + else -> ArrayTypeImpl(nullable { elementType }, { "kotlin.Array<$it>" }, + { "kotlin.arrayOfNulls<${elementType.genericTypeName}>($it)" }) } override fun map(keyType: GenericType, valueType: GenericType): MapType = diff --git a/idea/testData/debugger/sequence/dsl/mapConvertToArray.out b/idea/testData/debugger/sequence/dsl/mapConvertToArray.out index b51928ab491..4c5ce533caa 100644 --- a/idea/testData/debugger/sequence/dsl/mapConvertToArray.out +++ b/idea/testData/debugger/sequence/dsl/mapConvertToArray.out @@ -1,8 +1,8 @@ -var resultArray: kotlin.Array = arrayOfNulls(0) +var resultArray: kotlin.Array = kotlin.arrayOfNulls(0) run { val size: kotlin.Int = map.size val keys: kotlin.IntArray = kotlin.IntArray(size) - val values: kotlin.Array = kotlin.arrayOfNulls(size) + val values: kotlin.Array = kotlin.arrayOfNulls(size) var i: kotlin.Int = 0 for (key in map.keys) { keys[i] = key diff --git a/idea/testData/debugger/sequence/dsl/sizedArrayCreation.out b/idea/testData/debugger/sequence/dsl/sizedArrayCreation.out index 3edc361cc02..f11cb83e8a1 100644 --- a/idea/testData/debugger/sequence/dsl/sizedArrayCreation.out +++ b/idea/testData/debugger/sequence/dsl/sizedArrayCreation.out @@ -1 +1 @@ -arrayOfNulls(100) +kotlin.arrayOfNulls(100)