From 7faa437c7a39c5f5e1b9ca1c9fbcd69899006517 Mon Sep 17 00:00:00 2001 From: Alexey Stepanov Date: Thu, 11 Aug 2016 11:50:12 +0300 Subject: [PATCH] translator: fix issue with string fucntion argument --- .../kotlin/org/kotlinnative/translator/llvm/generators.kt | 1 + .../llvm/types/{LLVMString.kt => LLVMStringType.kt} | 6 ++++++ 2 files changed, 7 insertions(+) rename translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/{LLVMString.kt => LLVMStringType.kt} (67%) diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt index 30b7d38bb8a..e4b11a920c7 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt @@ -23,6 +23,7 @@ fun LLVMInstanceOfStandardType(name: String, type: KotlinType, scope: LLVMScope type.toString() == "Long" -> LLVMVariable(name, LLVMLongType(), name, scope) type.toString() == "Float" -> LLVMVariable(name, LLVMFloatType(), name, scope) type.toString() == "Double" -> LLVMVariable(name, LLVMDoubleType(), name, scope) + type.toString() == "String" -> LLVMVariable(name, LLVMStringType(0), name, scope) type.nameIfStandardType.toString() == "Nothing" -> LLVMVariable(name, LLVMNullType(), name, scope) type.isUnit() -> LLVMVariable("", LLVMVoidType(), name, scope) type.isMarkedNullable -> LLVMVariable(name, LLVMReferenceType(type.toString().dropLast(1)), name, scope, pointer = 1) diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMString.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMStringType.kt similarity index 67% rename from translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMString.kt rename to translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMStringType.kt index da76462212f..178394cb95f 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMString.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMStringType.kt @@ -8,6 +8,12 @@ class LLVMStringType(override val length: Int) : LLVMArray, LLVMType() { override fun mangle() = "String" + override fun equals(other: Any?): Boolean = + when (other) { + is LLVMStringType -> this.length == other.length + else -> false + } + override fun basicType() = LLVMCharType() override val typename = "i8*" override fun fullType() = "[${length + 1} x i8]"