diff --git a/car_fmw/src/Voyager.kt b/car_fmw/src/Voyager.kt index cce3222a2b6..cdb59ab889b 100644 --- a/car_fmw/src/Voyager.kt +++ b/car_fmw/src/Voyager.kt @@ -17,13 +17,13 @@ object Voyager { } private fun rotate(degree: Int) { - val time = (degree / VELOCITY_DRIVE).toInt() + val time = (degree.toDouble() / VELOCITY_DRIVE).toInt() Engine.left() Time.wait(time) } private fun drive(direction: RouteType, distance: Int) { - val time = (distance / VELOCITY_DRIVE).toInt() + val time = (distance.toDouble() / VELOCITY_DRIVE).toInt() Engine.drive(direction.id) Time.wait(time) } diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt index a02c937d5f0..f13f4dedde7 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/BlockCodegen.kt @@ -21,12 +21,10 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument import org.jetbrains.kotlin.resolve.constants.TypedCompileTimeConstant import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver -import org.jetbrains.kotlin.types.typeUtil.isPrimitiveNumberType import org.kotlinnative.translator.llvm.* import org.kotlinnative.translator.llvm.types.* import java.rmi.UnexpectedException import java.util.* -import javax.lang.model.type.ReferenceType import kotlin.comparisons.compareBy @@ -787,7 +785,7 @@ abstract class BlockCodegen(val state: TranslationState, val variableManager: Va codeBuilder.storeVariable(firstOp, resultOp) return LLVMExpression(resultOp.type, "load ${firstOp.getType()} $firstOp, align ${firstOp.type!!.align}") } - else -> throw UnsupportedOperationException("Unknown binary operator") + else -> throw UnsupportedOperationException("Unknown binary operator: $operator(${firstNativeOp.type}, ${secondNativeOp.type})") } } diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt index de1780cf32f..ed46d176fd3 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt @@ -132,7 +132,7 @@ class FunctionCodegen(state: TranslationState, actualArgs.addAll(args) - codeBuilder.addLLVMCode(LLVMFunctionDescriptor(fullName, actualArgs, actualReturnType, external, state.arm)) + codeBuilder.addLLVMCode(LLVMFunctionDescriptor(fullName, actualArgs, actualReturnType, external)) } private fun generateLoadArguments() { diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/StructCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/StructCodegen.kt index 097854daf94..4f8f939804b 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/StructCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/StructCodegen.kt @@ -153,7 +153,7 @@ abstract class StructCodegen(val state: TranslationState, argFields.addAll(secondaryConstructorArguments) val currentConstructorIndex = LLVMType.mangleFunctionArguments(secondaryConstructorArguments) constructorFields.put(currentConstructorIndex, argFields) - codeBuilder.addLLVMCode(LLVMFunctionDescriptor(fullName + currentConstructorIndex, argFields, LLVMVoidType(), arm = state.arm)) + codeBuilder.addLLVMCode(LLVMFunctionDescriptor(fullName + currentConstructorIndex, argFields, LLVMVoidType())) codeBuilder.addStartExpression() @@ -180,7 +180,7 @@ abstract class StructCodegen(val state: TranslationState, argFields.add(classVal) argFields.addAll(constructorFields[primaryConstructorIndex]!!) - codeBuilder.addLLVMCode(LLVMFunctionDescriptor(fullName + primaryConstructorIndex, argFields, LLVMVoidType(), arm = state.arm)) + codeBuilder.addLLVMCode(LLVMFunctionDescriptor(fullName + primaryConstructorIndex, argFields, LLVMVoidType())) codeBuilder.addStartExpression() generateLoadArguments(classVal) 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 a664949cc2f..b5c35d4756c 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/llvm/generators.kt @@ -9,7 +9,7 @@ import org.kotlinnative.translator.TranslationState import org.kotlinnative.translator.llvm.types.* -fun LLVMFunctionDescriptor(name: String, argTypes: List?, returnType: LLVMType, declare: Boolean = false, arm: Boolean = false) = +fun LLVMFunctionDescriptor(name: String, argTypes: List?, returnType: LLVMType, declare: Boolean = false) = "${if (declare) "declare" else "define weak"} $returnType @$name(${ argTypes?.mapIndexed { i: Int, s: LLVMVariable -> "${s.getType()} ${if (s.type is LLVMReferenceType && !(s.type as LLVMReferenceType).byRef) "byval" else ""} %${s.label}"