From 5209f4a9c087391b821da38ec7944c12dbd92872 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Wed, 10 Jun 2020 19:18:10 +0300 Subject: [PATCH] Add not null (!!) operator in ir builtins map --- .../interpreter/builtins/IrBuiltInsMapGenerated.kt | 3 ++- generators/evaluate/GenerateBuiltInsMap.kt | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/builtins/IrBuiltInsMapGenerated.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/builtins/IrBuiltInsMapGenerated.kt index c3b3c1ab042..b8bc6ef8192 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/builtins/IrBuiltInsMapGenerated.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/interpreter/builtins/IrBuiltInsMapGenerated.kt @@ -112,7 +112,8 @@ val unaryFunctions = mapOf>( unaryOperation("size", "LongArray") { a -> a.size }, unaryOperation("iterator", "LongArray") { a -> a.iterator() }, unaryOperation("size", "DoubleArray") { a -> a.size }, - unaryOperation("iterator", "DoubleArray") { a -> a.iterator() } + unaryOperation("iterator", "DoubleArray") { a -> a.iterator() }, + unaryOperation("CHECK_NOT_NULL", "T0?") { a -> a!! } ) val binaryFunctions = mapOf>( diff --git a/generators/evaluate/GenerateBuiltInsMap.kt b/generators/evaluate/GenerateBuiltInsMap.kt index 0deaa2c4a34..95c83ff089c 100644 --- a/generators/evaluate/GenerateBuiltInsMap.kt +++ b/generators/evaluate/GenerateBuiltInsMap.kt @@ -51,7 +51,7 @@ fun generateMap(): String { val ternaryOperationsMap = mutableMapOf>() val builtIns = DefaultBuiltIns.Instance - //save common built ins + //save common builtins @Suppress("UNCHECKED_CAST") val allPrimitiveTypes = builtIns.builtInsPackageScope.getContributedDescriptors() .filter { it is ClassDescriptor && KotlinBuiltIns.isPrimitiveType(it.defaultType) } as List @@ -86,9 +86,10 @@ fun generateMap(): String { } } - //save ir built ins + //save ir builtins val binaryIrOperationsMap = mutableMapOf>() val irBuiltIns = getIrBuiltIns() + val irNullCheck = irBuiltIns.checkNotNullSymbol.descriptor val irFunSymbols = (irBuiltIns.lessFunByOperandType.values + irBuiltIns.lessOrEqualFunByOperandType.values + @@ -113,11 +114,11 @@ fun generateMap(): String { //save to file p.println("val unaryFunctions = mapOf>(") - val unaryBody = unaryOperationsMap.entries.joinToString(",\n") { (function, parameters) -> + val unaryBody = unaryOperationsMap.entries.joinToString(",\n", postfix = ",\n") { (function, parameters) -> val methodName = "${function.name}" val parentheses = if (function is FunctionDescriptor) "()" else "" " unaryOperation${parameters.first}(\"$methodName\", ${parameters.second}) { a -> a.$methodName$parentheses }" - } + } + " unaryOperation(\"${irNullCheck.name}\", \"${irNullCheck.valueParameters.first().type}\") { a -> a!! }" p.println(unaryBody) p.println(")") p.println()