Calling Kotlin from C++ runtime (#107)

* backend: support exporting Kotlin functions for C++ runtime

* runtime: implement several functions in Kotlin

* Throw{NullPointer,ArrayIndexOutOfBounds,ClassCast}Exception

* runtime: add literal declared in Kotlin as empty string

Also
* add corresponding test
* use empty string literal in strdedup2
  (however keep it disabled)

* fixup! runtime: add literal declared in Kotlin as empty string

* Review feedback: add more TheEmptyString() usages

Also improve string index checks in runtime
This commit is contained in:
SvyatoslavScherbina
2016-12-01 20:10:03 +07:00
committed by Nikolay Igotti
parent f9167ea91e
commit e38ac775ad
10 changed files with 90 additions and 48 deletions
+8 -1
View File
@@ -323,6 +323,11 @@ task tostring2(type: RunKonanTest) {
source = "runtime/basic/tostring2.kt"
}
task empty_substring(type: RunKonanTest) {
goldValue = "\n"
source = "runtime/basic/empty_substring.kt"
}
task array0(type: RunKonanTest) {
goldValue = "5\n6\n7\n8\n9\n10\n11\n12\n13\n"
source = "runtime/basic/array0.kt"
@@ -395,7 +400,9 @@ task strdedup1(type: RunKonanTest) {
}
/*
TODO: enable after supporting Unit object
TODO: string deduplication across several components seems to require
linking them as bitcode modules before translating to machine code.
task strdedup2(type: RunKonanTest) {
goldValue = "true\ntrue\n"
source = "datagen/literals/strdedup2.kt"