From 30fe83fc5f892ad7f36cbd0b8091f5951cae817c Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Tue, 23 Aug 2016 10:32:26 +0300 Subject: [PATCH] translator: fix git status operator for primitive types --- .../kotlin/org/kotlinnative/translator/BlockCodegen.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index abf51a4a5cd..f499c6b323f 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -648,18 +648,21 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va return oldValue } KtTokens.EXCLEXCL -> { + var result = firstOp codeBuilder.addComment("start EXCLEXCL") val nullLabel = codeBuilder.getNewLabel(prefix = "nullCheck") val notNullLabel = codeBuilder.getNewLabel(prefix = "nullCheck") val nullCheck = codeBuilder.nullCheck(firstOp) codeBuilder.addCondition(nullCheck, nullLabel, notNullLabel) - codeBuilder.markWithLabel(nullLabel) codeBuilder.addExceptionCall("KotlinNullPointerException") codeBuilder.addUnconditionalJump(notNullLabel) codeBuilder.markWithLabel(notNullLabel) + if (firstOp.type.isPrimitive()) { + result = codeBuilder.downLoadArgument(firstOp, 0) as LLVMVariable + } codeBuilder.addComment("end EXCLEXCL") - return firstOp + return result } else -> throw UnsupportedOperationException() }