translator: fix git status operator for primitive types
This commit is contained in:
@@ -648,18 +648,21 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va
|
|||||||
return oldValue
|
return oldValue
|
||||||
}
|
}
|
||||||
KtTokens.EXCLEXCL -> {
|
KtTokens.EXCLEXCL -> {
|
||||||
|
var result = firstOp
|
||||||
codeBuilder.addComment("start EXCLEXCL")
|
codeBuilder.addComment("start EXCLEXCL")
|
||||||
val nullLabel = codeBuilder.getNewLabel(prefix = "nullCheck")
|
val nullLabel = codeBuilder.getNewLabel(prefix = "nullCheck")
|
||||||
val notNullLabel = codeBuilder.getNewLabel(prefix = "nullCheck")
|
val notNullLabel = codeBuilder.getNewLabel(prefix = "nullCheck")
|
||||||
val nullCheck = codeBuilder.nullCheck(firstOp)
|
val nullCheck = codeBuilder.nullCheck(firstOp)
|
||||||
codeBuilder.addCondition(nullCheck, nullLabel, notNullLabel)
|
codeBuilder.addCondition(nullCheck, nullLabel, notNullLabel)
|
||||||
|
|
||||||
codeBuilder.markWithLabel(nullLabel)
|
codeBuilder.markWithLabel(nullLabel)
|
||||||
codeBuilder.addExceptionCall("KotlinNullPointerException")
|
codeBuilder.addExceptionCall("KotlinNullPointerException")
|
||||||
codeBuilder.addUnconditionalJump(notNullLabel)
|
codeBuilder.addUnconditionalJump(notNullLabel)
|
||||||
codeBuilder.markWithLabel(notNullLabel)
|
codeBuilder.markWithLabel(notNullLabel)
|
||||||
|
if (firstOp.type.isPrimitive()) {
|
||||||
|
result = codeBuilder.downLoadArgument(firstOp, 0) as LLVMVariable
|
||||||
|
}
|
||||||
codeBuilder.addComment("end EXCLEXCL")
|
codeBuilder.addComment("end EXCLEXCL")
|
||||||
return firstOp
|
return result
|
||||||
}
|
}
|
||||||
else -> throw UnsupportedOperationException()
|
else -> throw UnsupportedOperationException()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user