Add not null (!!) operator in ir builtins map
This commit is contained in:
+2
-1
@@ -112,7 +112,8 @@ val unaryFunctions = mapOf<CompileTimeFunction, Function1<Any?, Any?>>(
|
|||||||
unaryOperation<LongArray>("size", "LongArray") { a -> a.size },
|
unaryOperation<LongArray>("size", "LongArray") { a -> a.size },
|
||||||
unaryOperation<LongArray>("iterator", "LongArray") { a -> a.iterator() },
|
unaryOperation<LongArray>("iterator", "LongArray") { a -> a.iterator() },
|
||||||
unaryOperation<DoubleArray>("size", "DoubleArray") { a -> a.size },
|
unaryOperation<DoubleArray>("size", "DoubleArray") { a -> a.size },
|
||||||
unaryOperation<DoubleArray>("iterator", "DoubleArray") { a -> a.iterator() }
|
unaryOperation<DoubleArray>("iterator", "DoubleArray") { a -> a.iterator() },
|
||||||
|
unaryOperation<Any?>("CHECK_NOT_NULL", "T0?") { a -> a!! }
|
||||||
)
|
)
|
||||||
|
|
||||||
val binaryFunctions = mapOf<CompileTimeFunction, Function2<Any?, Any?, Any?>>(
|
val binaryFunctions = mapOf<CompileTimeFunction, Function2<Any?, Any?, Any?>>(
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ fun generateMap(): String {
|
|||||||
val ternaryOperationsMap = mutableMapOf<CallableDescriptor, Pair<String, String>>()
|
val ternaryOperationsMap = mutableMapOf<CallableDescriptor, Pair<String, String>>()
|
||||||
val builtIns = DefaultBuiltIns.Instance
|
val builtIns = DefaultBuiltIns.Instance
|
||||||
|
|
||||||
//save common built ins
|
//save common builtins
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val allPrimitiveTypes = builtIns.builtInsPackageScope.getContributedDescriptors()
|
val allPrimitiveTypes = builtIns.builtInsPackageScope.getContributedDescriptors()
|
||||||
.filter { it is ClassDescriptor && KotlinBuiltIns.isPrimitiveType(it.defaultType) } as List<ClassDescriptor>
|
.filter { it is ClassDescriptor && KotlinBuiltIns.isPrimitiveType(it.defaultType) } as List<ClassDescriptor>
|
||||||
@@ -86,9 +86,10 @@ fun generateMap(): String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//save ir built ins
|
//save ir builtins
|
||||||
val binaryIrOperationsMap = mutableMapOf<CallableDescriptor, Pair<String, String>>()
|
val binaryIrOperationsMap = mutableMapOf<CallableDescriptor, Pair<String, String>>()
|
||||||
val irBuiltIns = getIrBuiltIns()
|
val irBuiltIns = getIrBuiltIns()
|
||||||
|
val irNullCheck = irBuiltIns.checkNotNullSymbol.descriptor
|
||||||
val irFunSymbols =
|
val irFunSymbols =
|
||||||
(irBuiltIns.lessFunByOperandType.values +
|
(irBuiltIns.lessFunByOperandType.values +
|
||||||
irBuiltIns.lessOrEqualFunByOperandType.values +
|
irBuiltIns.lessOrEqualFunByOperandType.values +
|
||||||
@@ -113,11 +114,11 @@ fun generateMap(): String {
|
|||||||
|
|
||||||
//save to file
|
//save to file
|
||||||
p.println("val unaryFunctions = mapOf<CompileTimeFunction, Function1<Any?, Any?>>(")
|
p.println("val unaryFunctions = mapOf<CompileTimeFunction, Function1<Any?, Any?>>(")
|
||||||
val unaryBody = unaryOperationsMap.entries.joinToString(",\n") { (function, parameters) ->
|
val unaryBody = unaryOperationsMap.entries.joinToString(",\n", postfix = ",\n") { (function, parameters) ->
|
||||||
val methodName = "${function.name}"
|
val methodName = "${function.name}"
|
||||||
val parentheses = if (function is FunctionDescriptor) "()" else ""
|
val parentheses = if (function is FunctionDescriptor) "()" else ""
|
||||||
" unaryOperation${parameters.first}(\"$methodName\", ${parameters.second}) { a -> a.$methodName$parentheses }"
|
" unaryOperation${parameters.first}(\"$methodName\", ${parameters.second}) { a -> a.$methodName$parentheses }"
|
||||||
}
|
} + " unaryOperation<Any?>(\"${irNullCheck.name}\", \"${irNullCheck.valueParameters.first().type}\") { a -> a!! }"
|
||||||
p.println(unaryBody)
|
p.println(unaryBody)
|
||||||
p.println(")")
|
p.println(")")
|
||||||
p.println()
|
p.println()
|
||||||
|
|||||||
Reference in New Issue
Block a user