diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index 0af24d3fae3..79c7b058ad3 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -785,8 +785,8 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va KtTokens.LTEQ -> firstOp.type!!.operatorLeq(firstNativeOp, secondNativeOp) KtTokens.GTEQ -> firstOp.type!!.operatorGeq(firstNativeOp, secondNativeOp) KtTokens.EQEQ -> - if (firstOp.type is LLVMReferenceType) - if (secondOp.type is LLVMReferenceType) { + if (firstOp.type is LLVMReferred) + if (secondOp.type is LLVMReferred) { val firstPointedArgument = receivePointedArgument(firstOp, 1) val secondPointedArgument = receivePointedArgument(secondOp, 1) firstOp.type!!.operatorEq(firstPointedArgument, secondPointedArgument) @@ -800,8 +800,8 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va firstOp.type!!.operatorEq(firstPointedArgument, secondPointedArgument) } KtTokens.EXCLEQ -> { - if (firstOp.type is LLVMReferenceType) - if (secondOp.type is LLVMReferenceType) { + if (firstOp.type is LLVMReferred) + if (secondOp.type is LLVMReferred) { val firstPointedArgument = receivePointedArgument(firstOp, 1) val secondPointedArgument = receivePointedArgument(secondOp, 1) firstOp.type!!.operatorNeq(firstPointedArgument, secondPointedArgument) diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMNullType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMNullType.kt index 6298d8da930..3344ca7e16c 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMNullType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMNullType.kt @@ -1,13 +1,16 @@ package org.kotlinnative.translator.llvm.types -class LLVMNullType() : LLVMType() { - override val align: Int = 0 +import org.kotlinnative.translator.llvm.LLVMExpression +import org.kotlinnative.translator.llvm.LLVMSingleValue + +class LLVMNullType(var basetype: LLVMType? = null) : LLVMReferred, LLVMType() { + override val align: Int = 1 override var size: Int = 0 - override val defaultValue: String = "0" + override val defaultValue: String = "null" override fun mangle() = "" - override val typename = "" + override val typename = basetype?.typename ?: "" override fun equals(other: Any?): Boolean { return other is LLVMNullType diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferenceType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferenceType.kt index 138fd691ad1..dfc6633e6c3 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferenceType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferenceType.kt @@ -4,9 +4,9 @@ import org.kotlinnative.translator.llvm.LLVMExpression import org.kotlinnative.translator.llvm.LLVMSingleValue import java.util.* -class LLVMReferenceType(val type: String, var prefix: String = "", override var align: Int = 4, override var size: Int = 4, var byRef: Boolean = true) : LLVMType() { +class LLVMReferenceType(val type: String, var prefix: String = "", override var align: Int = 4, override var size: Int = 4, var byRef: Boolean = true) : LLVMReferred, LLVMType() { - override val defaultValue: String = "" + override val defaultValue: String = "null" override val typename: String get() = "$prefix${if (prefix.length > 0) "." else ""}${ diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferred.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferred.kt new file mode 100644 index 00000000000..29cad384926 --- /dev/null +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMReferred.kt @@ -0,0 +1,4 @@ +package org.kotlinnative.translator.llvm.types + +interface LLVMReferred { +} \ No newline at end of file