translator: add support parallel run tests, rearrangement test files
This commit is contained in:
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
.idea/shelf
|
.idea/shelf
|
||||||
dependencies
|
dependencies
|
||||||
dist
|
dist
|
||||||
translator/src/test/kotlin/tests/linked
|
translator/src/test/kotlin/tests/*/linked
|
||||||
out
|
out
|
||||||
tmp
|
tmp
|
||||||
workspace.xml
|
workspace.xml
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
DIRECTORY = "src/test/kotlin/tests"
|
||||||
|
OUTPUT = $(shell ls ${DIRECTORY}/*/*.txt)
|
||||||
|
OBJECTS = $(OUTPUT:.txt=.out)
|
||||||
|
green = '\033[0;32m'
|
||||||
|
red = '\033[0;31m'
|
||||||
|
lightRed = '\033[1;31m'
|
||||||
|
orange = '\033[0;33m'
|
||||||
|
nc = '\033[0m'
|
||||||
|
|
||||||
|
|
||||||
|
%.out: %.txt
|
||||||
|
@./run_one_test.sh $(@:.out=.txt)
|
||||||
|
|
||||||
|
all: $(OBJECTS)
|
||||||
|
@echo "ok"
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
Executable
+76
@@ -0,0 +1,76 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
green='\033[0;32m'
|
||||||
|
red='\033[0;31m'
|
||||||
|
lightRed='\033[1;31m'
|
||||||
|
orange='\033[0;33m'
|
||||||
|
|
||||||
|
cd ../translator
|
||||||
|
|
||||||
|
i=$1
|
||||||
|
TEST=`basename $i ".txt"`
|
||||||
|
DIRECTORY="src/test/kotlin/tests"
|
||||||
|
MAIN="$DIRECTORY/$TEST/linked/main.c"
|
||||||
|
rm -f $DIRECTORY/$TEST/linked/*
|
||||||
|
|
||||||
|
echo "#include <stdlib.h>" >> $MAIN
|
||||||
|
echo "#include <stdio.h>" >> $MAIN
|
||||||
|
echo "#include <assert.h>" >> $MAIN
|
||||||
|
|
||||||
|
echo "int main(){" >> $MAIN
|
||||||
|
echo "printf(\"%stest: $TEST%s\n\", \"\x1B[33m\", \"\x1B[0m\");" >> $MAIN
|
||||||
|
cat "$i" | while read LINE
|
||||||
|
do
|
||||||
|
echo " assert($LINE);" >> $MAIN
|
||||||
|
echo " printf(\"%s[OK]:%s $LINE\n\", \"\x1B[32m\", \"\x1B[0m\");" >> $MAIN
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "printf(\"TEST RESULT: OK\n\");" >> $MAIN
|
||||||
|
echo "return 0;}" >> $MAIN
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${red}Error somewhere in main.c generation${nc}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
clang-3.6 -S -emit-llvm $DIRECTORY/$TEST/linked/main.c -o $DIRECTORY/$TEST/linked/main.ll -Wno-implicit-function-declaration
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${red}Error building main.c${nc}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp ../kotstd/build/stdlib_x86.ll $DIRECTORY/$TEST/linked/
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${red}Error copying ../kotstd/build/stdlib_x86.ll to ${DIRECTORY}/${TEST}/linked/${nc}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$DIRECTORY/$TEST/$TEST.c" ]
|
||||||
|
then
|
||||||
|
clang-3.6 -S -emit-llvm "$DIRECTORY/$TEST/$TEST.c" -o $DIRECTORY/$TEST/linked/$TEST"_c.ll" -Wno-implicit-function-declaration
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${red}Error building: ${DIRECTORY}/${TEST}/linked/${TEST}_c.ll${nc}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
java -jar build/libs/translator-1.0.jar -I ../kotstd/include $DIRECTORY/$TEST/$TEST.kt > $DIRECTORY/$TEST/linked/$TEST.ll
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${red}Translation error: ${DIRECTORY}/$TEST/${TEST}.kt${nc}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
llvm-link-3.6 -S $DIRECTORY/$TEST/linked/*.ll > $DIRECTORY/$TEST/linked/run.ll
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${red}Error linking with llvm${nc}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
lli-3.6 $DIRECTORY/$TEST/linked/run.ll
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
|
echo -e "${lightRed}Error running test${nc}"
|
||||||
|
fi
|
||||||
+16
-24
@@ -5,15 +5,6 @@ lightRed='\033[1;31m'
|
|||||||
orange='\033[0;33m'
|
orange='\033[0;33m'
|
||||||
nc='\033[0m'
|
nc='\033[0m'
|
||||||
|
|
||||||
if [ ! -d "src/test/kotlin/tests/linked" ]; then
|
|
||||||
mkdir -p "src/test/kotlin/tests/linked"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "${red}Error creating folder \"src/test/kotlin/tests/linked\"${nc}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$3" == "--debug" ]; then
|
if [ "$3" == "--debug" ]; then
|
||||||
cd ../kotstd && make clean && make debug
|
cd ../kotstd && make clean && make debug
|
||||||
else
|
else
|
||||||
@@ -28,18 +19,18 @@ fi
|
|||||||
cd ../translator
|
cd ../translator
|
||||||
|
|
||||||
DIRECTORY="src/test/kotlin/tests"
|
DIRECTORY="src/test/kotlin/tests"
|
||||||
MAIN="$DIRECTORY/linked/main.c"
|
TESTS=$( ls $DIRECTORY/*/*.txt $1) # Note that "ls $DIRECTORY/input $1" is wrong. Why? Because it's bash.
|
||||||
TESTS=$( ls $DIRECTORY/input/* $1) # Note that "ls $DIRECTORY/input $1" is wrong. Why? Because it's bash.
|
|
||||||
|
|
||||||
if [ "$2" == "--proto" ]; then
|
if [ "$2" == "--proto" ]; then
|
||||||
TESTS=$( ls $DIRECTORY/input/proto* $1)
|
TESTS=$( ls $DIRECTORY/*/proto*.txt $1)
|
||||||
fi
|
fi
|
||||||
total_scripts=0
|
total_scripts=0
|
||||||
successful_scripts=0
|
successful_scripts=0
|
||||||
|
|
||||||
for i in $TESTS; do
|
for i in $TESTS; do
|
||||||
rm -f $DIRECTORY/linked/*
|
TEST=`basename $i ".txt"`
|
||||||
TEST=`basename $i ".txt"`
|
MAIN="$DIRECTORY/$TEST/linked/main.c"
|
||||||
|
rm -f $DIRECTORY/$TEST/linked/*
|
||||||
successful=1
|
successful=1
|
||||||
echo -e "${orange}test: ${TEST}${nc}"
|
echo -e "${orange}test: ${TEST}${nc}"
|
||||||
echo "#include <stdlib.h>" >> $MAIN
|
echo "#include <stdlib.h>" >> $MAIN
|
||||||
@@ -61,40 +52,41 @@ for i in $TESTS; do
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clang-3.6 -S -emit-llvm $DIRECTORY/linked/main.c -o $DIRECTORY/linked/main.ll -Wno-implicit-function-declaration
|
clang-3.6 -S -emit-llvm $DIRECTORY/$TEST/linked/main.c -o $DIRECTORY/$TEST/linked/main.ll -Wno-implicit-function-declaration
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "${red}Error building main.c${nc}"
|
echo -e "${red}Error building main.c${nc}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
cp ../kotstd/build/stdlib_x86.ll $DIRECTORY/linked/
|
cp ../kotstd/build/stdlib_x86.ll $DIRECTORY/$TEST/linked/
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "${red}Error copying ../kotstd/build/stdlib_x86.ll to ${DIRECTORY}/linked/${nc}"
|
echo -e "${red}Error copying ../kotstd/build/stdlib_x86.ll to ${DIRECTORY}/${TEST}/linked/${nc}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$DIRECTORY/c/$TEST.c" ]
|
if [ -f "$DIRECTORY/$TEST/$TEST.c" ]
|
||||||
then
|
then
|
||||||
clang-3.6 -S -emit-llvm "$DIRECTORY/c/$TEST.c" -o $DIRECTORY/linked/$TEST"_c.ll" -Wno-implicit-function-declaration
|
clang-3.6 -S -emit-llvm "$DIRECTORY/$TEST/$TEST.c" -o $DIRECTORY/$TEST/linked/$TEST"_c.ll" -Wno-implicit-function-declaration
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "${red}Error building: ${DIRECTORY}/linked/${TEST}_c.ll${nc}"
|
echo -e "${red}Error building: ${DIRECTORY}/${TEST}/linked/${TEST}_c.ll${nc}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
java -jar build/libs/translator-1.0.jar -I ../kotstd/include $DIRECTORY/kotlin/$TEST.kt > $DIRECTORY/linked/$TEST.ll
|
java -jar build/libs/translator-1.0.jar -I ../kotstd/include $DIRECTORY/$TEST/$TEST.kt > $DIRECTORY/$TEST/linked/$TEST.ll
|
||||||
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "${red}Translation error: ${DIRECTORY}/kotlin/${TEST}.kt${nc}"
|
echo -e "${red}Translation error: ${DIRECTORY}/$TEST/${TEST}.kt${nc}"
|
||||||
successful=0
|
successful=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
llvm-link-3.6 -S $DIRECTORY/linked/*.ll > $DIRECTORY/linked/run.ll
|
llvm-link-3.6 -S $DIRECTORY/$TEST/linked/*.ll > $DIRECTORY/$TEST/linked/run.ll
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "${red}Error linking with llvm${nc}"
|
echo -e "${red}Error linking with llvm${nc}"
|
||||||
successful=0
|
successful=0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
lli-3.6 $DIRECTORY/linked/run.ll
|
lli-3.6 $DIRECTORY/$TEST/linked/run.ll
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "${lightRed}Error running test${nc}"
|
echo -e "${lightRed}Error running test${nc}"
|
||||||
successful=0
|
successful=0
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ abstract class StructCodegen(val state: TranslationState,
|
|||||||
var methods = HashMap<String, FunctionCodegen>()
|
var methods = HashMap<String, FunctionCodegen>()
|
||||||
abstract val structName: String
|
abstract val structName: String
|
||||||
val fullName: String
|
val fullName: String
|
||||||
//get() = "${if (type.location.size > 0) "${type.location.joinToString(".")}." else ""}$structName"
|
|
||||||
get() = structName
|
get() = structName
|
||||||
|
|
||||||
open fun prepareForGenerate() {
|
open fun prepareForGenerate() {
|
||||||
@@ -106,8 +105,6 @@ abstract class StructCodegen(val state: TranslationState,
|
|||||||
enumFields.put(name, field)
|
enumFields.put(name, field)
|
||||||
}
|
}
|
||||||
is KtClass -> {
|
is KtClass -> {
|
||||||
//declaration.fqName?.asString() ?: declaration.name!!
|
|
||||||
//declaration.fqName!!.asString()
|
|
||||||
nestedClasses.put(declaration.fqName!!.asString(),
|
nestedClasses.put(declaration.fqName!!.asString(),
|
||||||
ClassCodegen(state,
|
ClassCodegen(state,
|
||||||
VariableManager(state.globalVariableCollection),
|
VariableManager(state.globalVariableCollection),
|
||||||
@@ -176,7 +173,6 @@ abstract class StructCodegen(val state: TranslationState,
|
|||||||
|
|
||||||
private fun generatePrimaryConstructor() {
|
private fun generatePrimaryConstructor() {
|
||||||
val argFields = ArrayList<LLVMVariable>()
|
val argFields = ArrayList<LLVMVariable>()
|
||||||
|
|
||||||
val classVal = LLVMVariable("classvariable.this", type, pointer = 1)
|
val classVal = LLVMVariable("classvariable.this", type, pointer = 1)
|
||||||
variableManager.addVariable("this", classVal, 0)
|
variableManager.addVariable("this", classVal, 0)
|
||||||
|
|
||||||
@@ -253,17 +249,10 @@ abstract class StructCodegen(val state: TranslationState,
|
|||||||
|
|
||||||
protected fun resolveType(field: KtNamedDeclaration, ktType: KotlinType): LLVMClassVariable {
|
protected fun resolveType(field: KtNamedDeclaration, ktType: KotlinType): LLVMClassVariable {
|
||||||
val annotations = parseFieldAnnotations(field)
|
val annotations = parseFieldAnnotations(field)
|
||||||
/*val fieldName = when(field) {
|
|
||||||
is KtParameter->
|
|
||||||
else ->
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//}
|
|
||||||
val fieldName = state.bindingContext.get(BindingContext.VALUE_PARAMETER, field as?KtParameter)?.fqNameSafe?.asString()?.replace(".<init>", "")
|
val fieldName = state.bindingContext.get(BindingContext.VALUE_PARAMETER, field as?KtParameter)?.fqNameSafe?.asString()?.replace(".<init>", "")
|
||||||
?: field.fqName?.asString() ?: field.name!!
|
?: field.fqName?.asString() ?: field.name!!
|
||||||
|
|
||||||
val result = LLVMInstanceOfStandardType(fieldName, ktType, LLVMRegisterScope(), state = state)
|
val result = LLVMInstanceOfStandardType(fieldName, ktType, LLVMRegisterScope(), state = state)
|
||||||
//throw RuntimeException("Unknown field " + field.name!!)
|
|
||||||
|
|
||||||
if (result.type is LLVMReferenceType) {
|
if (result.type is LLVMReferenceType) {
|
||||||
val type = result.type as LLVMReferenceType
|
val type = result.type as LLVMReferenceType
|
||||||
|
|||||||
@@ -36,8 +36,7 @@ fun LLVMInstanceOfStandardType(name: String, type: KotlinType, scope: LLVMScope
|
|||||||
else -> {
|
else -> {
|
||||||
val declarationDescriptor = type.constructor.declarationDescriptor!!
|
val declarationDescriptor = type.constructor.declarationDescriptor!!
|
||||||
val refName = declarationDescriptor.fqNameSafe.asString()
|
val refName = declarationDescriptor.fqNameSafe.asString()
|
||||||
val targetPackage = declarationDescriptor.fqNameSafe.parent().asString()
|
val refType = state.classes[type.toString()]?.type ?: LLVMReferenceType(refName, align = TranslationState.pointerAlign, prefix = "class")
|
||||||
val refType = state.classes[type.toString()]?.type ?: LLVMReferenceType(refName, packageName = targetPackage, align = TranslationState.pointerAlign, prefix = "class")
|
|
||||||
|
|
||||||
val result = LLVMVariable(name, refType, name, scope, pointer = 1)
|
val result = LLVMVariable(name, refType, name, scope, pointer = 1)
|
||||||
var currentPrefix = ""
|
var currentPrefix = ""
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ import org.kotlinnative.translator.llvm.LLVMExpression
|
|||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
|
|
||||||
class LLVMBooleanType() : LLVMType("kotlin") {
|
class LLVMBooleanType() : LLVMType() {
|
||||||
|
|
||||||
//TODO switch by types: int + double = int
|
//TODO switch by types: int + double = int
|
||||||
override fun operatorMinus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorMinus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.kotlinnative.translator.llvm.types
|
|||||||
import org.kotlinnative.translator.llvm.LLVMExpression
|
import org.kotlinnative.translator.llvm.LLVMExpression
|
||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
class LLVMByteType() : LLVMType("kotlin") {
|
class LLVMByteType() : LLVMType() {
|
||||||
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp slt i8 $firstOp, $secondOp")
|
LLVMExpression(LLVMBooleanType(), "icmp slt i8 $firstOp, $secondOp")
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.kotlinnative.translator.llvm.types
|
|||||||
import org.kotlinnative.translator.llvm.LLVMExpression
|
import org.kotlinnative.translator.llvm.LLVMExpression
|
||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
class LLVMCharType() : LLVMType("kotlin") {
|
class LLVMCharType() : LLVMType() {
|
||||||
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp slt i8 $firstOp, $secondOp")
|
LLVMExpression(LLVMBooleanType(), "icmp slt i8 $firstOp, $secondOp")
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import org.kotlinnative.translator.llvm.LLVMExpression
|
|||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
|
|
||||||
class LLVMDoubleType() : LLVMType("kotlin") {
|
class LLVMDoubleType() : LLVMType() {
|
||||||
|
|
||||||
//TODO switch by types: int + double = int
|
//TODO switch by types: int + double = int
|
||||||
override fun operatorMinus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorMinus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import org.kotlinnative.translator.llvm.LLVMExpression
|
|||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
|
|
||||||
class LLVMFloatType() : LLVMType("kotlin") {
|
class LLVMFloatType() : LLVMType() {
|
||||||
|
|
||||||
//TODO switch by types: int + double = int
|
//TODO switch by types: int + double = int
|
||||||
override fun operatorMinus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorMinus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.kotlinnative.translator.llvm.LLVMExpression
|
|||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
|
|
||||||
class LLVMIntType() : LLVMType("kotlin") {
|
class LLVMIntType() : LLVMType() {
|
||||||
|
|
||||||
override fun operatorOr(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorOr(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMIntType(), "or i32 $firstOp, $secondOp")
|
LLVMExpression(LLVMIntType(), "or i32 $firstOp, $secondOp")
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import org.kotlinnative.translator.llvm.LLVMExpression
|
|||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
|
|
||||||
class LLVMLongType() : LLVMType("kotlin") {
|
class LLVMLongType() : LLVMType() {
|
||||||
|
|
||||||
override fun operatorOr(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorOr(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMLongType(), "or i64 $firstOp, $secondOp")
|
LLVMExpression(LLVMLongType(), "or i64 $firstOp, $secondOp")
|
||||||
|
|||||||
+1
-2
@@ -9,8 +9,7 @@ class LLVMReferenceType(val type: String,
|
|||||||
var prefix: String = "",
|
var prefix: String = "",
|
||||||
override var align: Int = TranslationState.pointerAlign,
|
override var align: Int = TranslationState.pointerAlign,
|
||||||
override var size: Int = TranslationState.pointerSize,
|
override var size: Int = TranslationState.pointerSize,
|
||||||
packageName: String = "",
|
var byRef: Boolean = true) : LLVMReferred, LLVMType() {
|
||||||
var byRef: Boolean = true) : LLVMReferred, LLVMType(packageName) {
|
|
||||||
|
|
||||||
override val defaultValue: String = "null"
|
override val defaultValue: String = "null"
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.kotlinnative.translator.llvm.types
|
|||||||
import org.kotlinnative.translator.llvm.LLVMExpression
|
import org.kotlinnative.translator.llvm.LLVMExpression
|
||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
class LLVMShortType() : LLVMType("kotlin") {
|
class LLVMShortType() : LLVMType() {
|
||||||
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
override fun operatorLt(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression =
|
||||||
LLVMExpression(LLVMBooleanType(), "icmp slt i16 $firstOp, $secondOp")
|
LLVMExpression(LLVMBooleanType(), "icmp slt i16 $firstOp, $secondOp")
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package org.kotlinnative.translator.llvm.types
|
package org.kotlinnative.translator.llvm.types
|
||||||
|
|
||||||
class LLVMStringType(override val length: Int, var isLoaded: Boolean = true) : LLVMArray, LLVMType("kotlin") {
|
class LLVMStringType(override val length: Int, var isLoaded: Boolean = true) : LLVMArray, LLVMType() {
|
||||||
|
|
||||||
override var size: Int = 1
|
override var size: Int = 1
|
||||||
override val align = 8
|
override val align = 8
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import org.kotlinnative.translator.exceptions.UnimplementedException
|
|||||||
import org.kotlinnative.translator.llvm.LLVMExpression
|
import org.kotlinnative.translator.llvm.LLVMExpression
|
||||||
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
import org.kotlinnative.translator.llvm.LLVMSingleValue
|
||||||
|
|
||||||
abstract class LLVMType(val packageName: String = "") : Cloneable {
|
abstract class LLVMType() : Cloneable {
|
||||||
|
|
||||||
open fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression = throw UnimplementedException()
|
open fun operatorPlus(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression = throw UnimplementedException()
|
||||||
open fun operatorTimes(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression = throw UnimplementedException()
|
open fun operatorTimes(firstOp: LLVMSingleValue, secondOp: LLVMSingleValue): LLVMExpression = throw UnimplementedException()
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user