diff --git a/translator/run_tests.sh b/translator/run_tests.sh index 52ed393f11a..4f99ac9d73d 100755 --- a/translator/run_tests.sh +++ b/translator/run_tests.sh @@ -3,13 +3,40 @@ if [ ! -d "src/test/kotlin/tests/linked" ]; then mkdir src/test/kotlin/tests/linked fi -rm -f src/test/kotlin/tests/linked/* +DIRECTORY="src/test/kotlin/tests" +MAIN="$DIRECTORY/linked/main.c" +for i in $( ls "$DIRECTORY/input"); do + rm -f $DIRECTORY/linked/* + TEST=`basename $i ".txt"` + echo test: $TEST + echo "#include " >> $MAIN + echo "#include " >> $MAIN + echo "#include " >> $MAIN -/usr/lib/jvm/default-java/bin/java -Didea.launcher.port=7540 -Didea.launcher.bin.path=/opt/idea-IU-145.1617.8/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/default-java/jre/lib/charsets.jar:/usr/lib/jvm/default-java/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/default-java/jre/lib/ext/dnsns.jar:/usr/lib/jvm/default-java/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/default-java/jre/lib/ext/jaccess.jar:/usr/lib/jvm/default-java/jre/lib/ext/localedata.jar:/usr/lib/jvm/default-java/jre/lib/ext/nashorn.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunec.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/default-java/jre/lib/ext/zipfs.jar:/usr/lib/jvm/default-java/jre/lib/jce.jar:/usr/lib/jvm/default-java/jre/lib/jsse.jar:/usr/lib/jvm/default-java/jre/lib/management-agent.jar:/usr/lib/jvm/default-java/jre/lib/resources.jar:/usr/lib/jvm/default-java/jre/lib/rt.jar:/home/user/Kotlin/carkot/translator/build/classes/test:/home/user/Kotlin/carkot/translator/build/classes/main:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.0.1/68cddd9aec83d23f789f72bfdc933db245c4a635/kotlin-stdlib-1.0.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler/1.0.3/5dbeb14062996a5c2208861d6364cc97a21b06b8/kotlin-compiler-1.0.3.jar:/home/user/.gradle/caches/modules-2/files-2.1/junit/junit/4.11/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-runtime/1.0.1/124852ea8cdd3d89827923b5e79627e8a7c314b2/kotlin-runtime-1.0.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar:/opt/idea-IU-145.1617.8/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain TestmainKt + echo "int main(){" >> $MAIN + cat "$DIRECTORY/input/$i" | while read LINE + do + echo " assert($LINE);" >> $MAIN + echo " printf(\"OK: $LINE\n\");" >> $MAIN + done + + echo "printf(\"TEST RESULT: OK\n\");" >> $MAIN + echo "return 0;}" >> $MAIN + + clang -S -emit-llvm $DIRECTORY/linked/main.c -o $DIRECTORY/linked/main.ll -Wno-implicit-function-declaration + rm -f $DIRECTORY/linked/main.c + + if [ -f "$DIRECTORY/c/$TEST.c" ] + then + clang -S -emit-llvm "$DIRECTORY/c/$TEST.c" -o $DIRECTORY/linked/$TEST"_c.ll" -Wno-implicit-function-declaration + fi + + /usr/lib/jvm/default-java/bin/java -Didea.launcher.port=7533 -Didea.launcher.bin.path=/opt/idea-IU-145.1617.8/bin -Dfile.encoding=UTF-8 -classpath /usr/lib/jvm/default-java/jre/lib/charsets.jar:/usr/lib/jvm/default-java/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/default-java/jre/lib/ext/dnsns.jar:/usr/lib/jvm/default-java/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/default-java/jre/lib/ext/jaccess.jar:/usr/lib/jvm/default-java/jre/lib/ext/localedata.jar:/usr/lib/jvm/default-java/jre/lib/ext/nashorn.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunec.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/default-java/jre/lib/ext/zipfs.jar:/usr/lib/jvm/default-java/jre/lib/jce.jar:/usr/lib/jvm/default-java/jre/lib/jsse.jar:/usr/lib/jvm/default-java/jre/lib/management-agent.jar:/usr/lib/jvm/default-java/jre/lib/resources.jar:/usr/lib/jvm/default-java/jre/lib/rt.jar:/home/user/Kotlin/carkot/translator/build/classes/main:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.0.1/68cddd9aec83d23f789f72bfdc933db245c4a635/kotlin-stdlib-1.0.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler/1.0.3/5dbeb14062996a5c2208861d6364cc97a21b06b8/kotlin-compiler-1.0.3.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-runtime/1.0.1/124852ea8cdd3d89827923b5e79627e8a7c314b2/kotlin-runtime-1.0.1.jar:/opt/idea-IU-145.1617.8/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain MainKt $DIRECTORY/kotlin/$TEST.kt > $DIRECTORY/linked/$TEST.ll + llvm-link $DIRECTORY/linked/* > $DIRECTORY/linked/run.ll + lli $DIRECTORY/linked/run.ll + +done + -cd src/test/kotlin/tests/linked -rm -f main.c -llvm-link * > run.ll -lli run.ll diff --git a/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt b/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt index 4eb4b913002..ca9ed2d1eb7 100644 --- a/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt +++ b/translator/src/main/kotlin/org/kotlinnative/translator/FunctionCodegen.kt @@ -335,6 +335,10 @@ class FunctionCodegen(val state: TranslationState, val function: KtNamedFunction } } + private fun evaluateTypeReferenceAssignment(type: KtUserType, expr: KtConstantExpression) { + + } + private fun evaluateLeafPsiElement(element: LeafPsiElement, scopeDepth: Int): LLVMVariable? { return when (element.elementType) { KtTokens.RETURN_KEYWORD -> evaluateReturnInstruction(element, scopeDepth) diff --git a/translator/src/test/kotlin/testmain.kt b/translator/src/test/kotlin/testmain.kt deleted file mode 100644 index 24d0cbfe1b7..00000000000 --- a/translator/src/test/kotlin/testmain.kt +++ /dev/null @@ -1,48 +0,0 @@ -import java.io.BufferedReader -import java.io.File -import java.io.InputStreamReader - -val directory = "src/test/kotlin/tests" - -fun main(args: Array) { - val mainFileWriter = File("$directory/linked/main.c").printWriter() - mainFileWriter.println("#include \n" + - "#include \n" + - "#include \n\n"); - - - mainFileWriter.println("\n") - mainFileWriter.println("int main(){") - - for (input in File("$directory/input").listFiles()) { - val inputLine = input.readLines() - val outputLine = File("$directory/output/" + input.name).readLines() - - for (line in 0..inputLine.count() - 1) { - mainFileWriter.println("\tassert (${inputLine.get(line)} == ${outputLine.get(line)} );") - mainFileWriter.println("\tprintf(\"OK: ${inputLine.get(line)} == ${outputLine.get(line)} \\n\");") - } - } - mainFileWriter.println("printf(\"TEST RESULT: OK\\n\");") - mainFileWriter.println("\treturn 0;") - mainFileWriter.println("}") - mainFileWriter.flush() - - - Runtime.getRuntime().exec("clang -S -emit-llvm $directory/linked/main.c -o $directory/linked/main.ll").waitFor() - Runtime.getRuntime().exec("rm -f $directory/linked/main.c").waitFor() - - for (file in File("$directory/source").listFiles()) { - val res = Runtime.getRuntime().exec("/usr/lib/jvm/default-java/bin/java -Didea.launcher.port=7539 " + - "-Didea.launcher.bin.path=/opt/idea-IU-145.1617.8/bin -Dfile.encoding=UTF-8 " + - "-classpath /usr/lib/jvm/default-java/jre/lib/charsets.jar:/usr/lib/jvm/default-java/jre/lib/ext/cldrdata.jar:/usr/lib/jvm/default-java/jre/lib/ext/dnsns.jar:/usr/lib/jvm/default-java/jre/lib/ext/icedtea-sound.jar:/usr/lib/jvm/default-java/jre/lib/ext/jaccess.jar:/usr/lib/jvm/default-java/jre/lib/ext/localedata.jar:/usr/lib/jvm/default-java/jre/lib/ext/nashorn.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunec.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunjce_provider.jar:/usr/lib/jvm/default-java/jre/lib/ext/sunpkcs11.jar:/usr/lib/jvm/default-java/jre/lib/ext/zipfs.jar:/usr/lib/jvm/default-java/jre/lib/jce.jar:/usr/lib/jvm/default-java/jre/lib/jsse.jar:/usr/lib/jvm/default-java/jre/lib/management-agent.jar:/usr/lib/jvm/default-java/jre/lib/resources.jar:/usr/lib/jvm/default-java/jre/lib/rt.jar:/home/user/Kotlin/carkot/translator/build/classes/main:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.0.1/68cddd9aec83d23f789f72bfdc933db245c4a635/kotlin-stdlib-1.0.1.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler/1.0.3/5dbeb14062996a5c2208861d6364cc97a21b06b8/kotlin-compiler-1.0.3.jar:/home/user/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-runtime/1.0.1/124852ea8cdd3d89827923b5e79627e8a7c314b2/kotlin-runtime-1.0.1.jar:/opt/idea-IU-145.1617.8/lib/idea_rt.jar " + - "com.intellij.rt.execution.application.AppMain MainKt " + file.absoluteFile) - res.waitFor() - val reader = BufferedReader(InputStreamReader(res.getInputStream())) - val currentFileWriter = File("$directory/linked/" + file.nameWithoutExtension + ".ll").printWriter() - for (line in reader.lines()) { - currentFileWriter.println(line) - } - currentFileWriter.flush() - } -} diff --git a/translator/src/test/kotlin/tests/c/while_2.c b/translator/src/test/kotlin/tests/c/while_2.c new file mode 100644 index 00000000000..23987f1e9a9 --- /dev/null +++ b/translator/src/test/kotlin/tests/c/while_2.c @@ -0,0 +1,3 @@ +int link_example(){ + return 5; +} \ No newline at end of file diff --git a/translator/src/test/kotlin/tests/input/if_1.txt b/translator/src/test/kotlin/tests/input/if_1.txt index 8997171aa47..d734dc58aaf 100644 --- a/translator/src/test/kotlin/tests/input/if_1.txt +++ b/translator/src/test/kotlin/tests/input/if_1.txt @@ -1,2 +1,2 @@ -if_test_1(11) -if_test_1(0) \ No newline at end of file +if_test_1(11) == 10 +if_test_1(0) == 0 diff --git a/translator/src/test/kotlin/tests/input/return_1.txt b/translator/src/test/kotlin/tests/input/return_1.txt index e8cc966ac61..39658008450 100644 --- a/translator/src/test/kotlin/tests/input/return_1.txt +++ b/translator/src/test/kotlin/tests/input/return_1.txt @@ -1 +1 @@ -return_test_1(101) \ No newline at end of file +return_test_1(101) == 101 diff --git a/translator/src/test/kotlin/tests/input/while_1.txt b/translator/src/test/kotlin/tests/input/while_1.txt index 64b173c0c49..14e75abdef9 100644 --- a/translator/src/test/kotlin/tests/input/while_1.txt +++ b/translator/src/test/kotlin/tests/input/while_1.txt @@ -1 +1 @@ -while_test_1(6) \ No newline at end of file +while_test_1(6) == 10 diff --git a/translator/src/test/kotlin/tests/input/while_2.txt b/translator/src/test/kotlin/tests/input/while_2.txt index 2bcd26940ab..1c232017d9d 100644 --- a/translator/src/test/kotlin/tests/input/while_2.txt +++ b/translator/src/test/kotlin/tests/input/while_2.txt @@ -1 +1 @@ -while_test_2(77) \ No newline at end of file +while_test_2(77) == 78 diff --git a/translator/src/test/kotlin/tests/source/if_1.kt b/translator/src/test/kotlin/tests/kotlin/if_1.kt similarity index 100% rename from translator/src/test/kotlin/tests/source/if_1.kt rename to translator/src/test/kotlin/tests/kotlin/if_1.kt diff --git a/translator/src/test/kotlin/tests/source/return_1.kt b/translator/src/test/kotlin/tests/kotlin/return_1.kt similarity index 100% rename from translator/src/test/kotlin/tests/source/return_1.kt rename to translator/src/test/kotlin/tests/kotlin/return_1.kt diff --git a/translator/src/test/kotlin/tests/source/while_1.kt b/translator/src/test/kotlin/tests/kotlin/while_1.kt similarity index 100% rename from translator/src/test/kotlin/tests/source/while_1.kt rename to translator/src/test/kotlin/tests/kotlin/while_1.kt diff --git a/translator/src/test/kotlin/tests/source/while_2.kt b/translator/src/test/kotlin/tests/kotlin/while_2.kt similarity index 100% rename from translator/src/test/kotlin/tests/source/while_2.kt rename to translator/src/test/kotlin/tests/kotlin/while_2.kt diff --git a/translator/src/test/kotlin/tests/output/if_1.txt b/translator/src/test/kotlin/tests/output/if_1.txt deleted file mode 100644 index 0737472aa13..00000000000 --- a/translator/src/test/kotlin/tests/output/if_1.txt +++ /dev/null @@ -1,2 +0,0 @@ -10 -0 \ No newline at end of file diff --git a/translator/src/test/kotlin/tests/output/return_1.txt b/translator/src/test/kotlin/tests/output/return_1.txt deleted file mode 100644 index 97a55e1d749..00000000000 --- a/translator/src/test/kotlin/tests/output/return_1.txt +++ /dev/null @@ -1 +0,0 @@ -101 \ No newline at end of file diff --git a/translator/src/test/kotlin/tests/output/while_1.txt b/translator/src/test/kotlin/tests/output/while_1.txt deleted file mode 100644 index 9a037142aa3..00000000000 --- a/translator/src/test/kotlin/tests/output/while_1.txt +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/translator/src/test/kotlin/tests/output/while_2.txt b/translator/src/test/kotlin/tests/output/while_2.txt deleted file mode 100644 index efee1f88bb8..00000000000 --- a/translator/src/test/kotlin/tests/output/while_2.txt +++ /dev/null @@ -1 +0,0 @@ -78 \ No newline at end of file