diff --git a/translator/.idea/modules/translator_test.iml b/translator/.idea/modules/translator_test.iml index a13aea70b5f..55d07f067ff 100644 --- a/translator/.idea/modules/translator_test.iml +++ b/translator/.idea/modules/translator_test.iml @@ -10,7 +10,6 @@ - diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index 5c2822cc2ab..06c7defc39b 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -529,7 +529,7 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va private fun evaluatePrefixExpression(expr: KtPrefixExpression, scopeDepth: Int): LLVMSingleValue? { val operator = expr.operationToken val left = evaluateExpression(expr.baseExpression, scopeDepth) ?: throw UnsupportedOperationException("Wrong binary exception") - return executePrefixExpression(operator, expr.operationReference, left as LLVMSingleValue) + return executePrefixExpression(operator, expr.operationReference, left) } private fun executePostfixExpression(operator: IElementType?, operationReference: KtSimpleNameExpression, left: LLVMVariable): LLVMSingleValue? diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMBooleanType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMBooleanType.kt index cdbe57341be..260dd2c8390 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMBooleanType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMBooleanType.kt @@ -1,7 +1,6 @@ package org.kotlinnative.translator.llvm.types import org.kotlinnative.translator.llvm.LLVMExpression -import org.kotlinnative.translator.llvm.LLVMNode import org.kotlinnative.translator.llvm.LLVMSingleValue @@ -64,4 +63,10 @@ class LLVMBooleanType() : LLVMType() { override fun isPrimitive() = true override fun toString() = "i1" + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } \ No newline at end of file diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMByteType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMByteType.kt index 6367e6552bb..30dfd19a74b 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMByteType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMByteType.kt @@ -33,4 +33,10 @@ class LLVMByteType() : LLVMType() { override fun toString(): String = "i8" override val defaultValue = "0" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMCharType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMCharType.kt index e8de3c13376..9bedb3664a6 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMCharType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMCharType.kt @@ -33,4 +33,10 @@ class LLVMCharType() : LLVMType() { override fun toString(): String = "i8" override val defaultValue = "0" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMDoubleType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMDoubleType.kt index 80dad005695..3b5673370d1 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMDoubleType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMDoubleType.kt @@ -29,4 +29,10 @@ class LLVMDoubleType() : LLVMType() { override fun toString() = "double" override val defaultValue = "0.0" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } \ No newline at end of file diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMFloatType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMFloatType.kt index be2f2e4fe28..356af58a612 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMFloatType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMFloatType.kt @@ -29,4 +29,10 @@ class LLVMFloatType() : LLVMType() { override fun toString() = "float" override val defaultValue = "0.0" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } \ No newline at end of file diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMIntType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMIntType.kt index e48bb3700e1..66265d2f6fc 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMIntType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMIntType.kt @@ -3,7 +3,6 @@ package org.kotlinnative.translator.llvm.types import org.kotlinnative.translator.exceptions.UnimplementedException import org.kotlinnative.translator.llvm.LLVMExpression import org.kotlinnative.translator.llvm.LLVMSingleValue -import org.kotlinnative.translator.llvm.LLVMVariable class LLVMIntType() : LLVMType() { @@ -82,4 +81,10 @@ class LLVMIntType() : LLVMType() { override fun toString() = "i32" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } \ No newline at end of file diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMLongType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMLongType.kt index 2a8bb44230e..665bc606e66 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMLongType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMLongType.kt @@ -76,4 +76,10 @@ class LLVMLongType() : LLVMType() { override fun mangle() = "Long" override fun toString() = "i64" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = align + result = 31 * result + size + result = 31 * result + defaultValue.hashCode() + return result + } } \ No newline at end of file diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMShortType.kt b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMShortType.kt index be44b29a28f..1520439f2dc 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMShortType.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/types/LLVMShortType.kt @@ -33,4 +33,10 @@ class LLVMShortType() : LLVMType() { override fun mangle() = "Short" override fun toString(): String = "i16" override fun isPrimitive() = true + override fun hashCode(): Int{ + var result = size + result = 31 * result + align + result = 31 * result + defaultValue.hashCode() + return result + } } diff --git a/translator/src/test/kotlin/tests/kotlin/reassigment_0.kt b/translator/src/test/kotlin/tests/kotlin/reassigment_0.kt index 0f0547a8490..d5becc81789 100644 --- a/translator/src/test/kotlin/tests/kotlin/reassigment_0.kt +++ b/translator/src/test/kotlin/tests/kotlin/reassigment_0.kt @@ -1,4 +1,4 @@ fun reassigment_0(x: Int): Int { - var b = x + 1 + val b = x + 1 return b } \ No newline at end of file