Files
kotlin-fork/kotlin-native/backend.native/tests/produce_dynamic/simple/hello.kt
T
Stanislav Erokhin f624800b84 Move everything under kotlin-native folder
I was forced to manually do update the following files, because otherwise
they would be ignored according .gitignore settings. Probably they
should be deleted from repo.

Interop/.idea/compiler.xml
Interop/.idea/gradle.xml
Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_runtime_1_0_3.xml
Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_0_3.xml
Interop/.idea/modules.xml
Interop/.idea/modules/Indexer/Indexer.iml
Interop/.idea/modules/Runtime/Runtime.iml
Interop/.idea/modules/StubGenerator/StubGenerator.iml
backend.native/backend.native.iml
backend.native/bc.frontend/bc.frontend.iml
backend.native/cli.bc/cli.bc.iml
backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt
backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt
backend.native/tests/link/lib/foo.kt
backend.native/tests/link/lib/foo2.kt
backend.native/tests/teamcity-test.property
2020-10-27 21:00:28 +03:00

158 lines
3.2 KiB
Kotlin

/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
// FILE: hello.kt
import kotlinx.cinterop.*
import kotlin.native.CName
import kotlin.native.concurrent.freeze
// Top level functions.
fun hello() {
println("Hello, dynamic!")
}
fun getString() = "Kotlin/Native"
data class Data(var string: String)
fun getMutable() = Data("foo")
// Class with inheritance.
open class Base {
open fun foo() = println("Base.foo")
open fun fooParam(arg0: String, arg1: Int, arg2: String?) =
println("Base.fooParam: $arg0 $arg1 ${arg2 ?: "null"}")
@CName(externName = "", shortName = "strangeName") fun странноеИмя() = 111
}
// Top level functions.
@CName(externName = "topLevelFunctionFromC", shortName = "topLevelFunctionFromCShort")
fun topLevelFunction(x1: Int, x2: Int) = x1 - x2
@CName("topLevelFunctionVoidFromC")
fun topLevelFunctionVoid(x1: Int, x2: Int?, x3: Unit?, pointer: COpaquePointer?) {
assert(x1 == 42)
assert(x2 == 77)
assert(x3 != null)
assert(pointer == null)
}
// Enum.
enum class Enum(val code: Int) {
ONE(1),
TWO(2),
HUNDRED(100)
}
interface Interface {
fun foo(): Int
}
enum class EnumWithInterface : Interface {
ZERO
;
override fun foo(): Int = 42
}
// Object.
interface Codeable {
fun asCode(): Int
}
val an_object = object : Codeable {
override fun asCode() = 42
}
object Singleton {
override fun toString() = "I am single"
}
class Child : Base() {
override fun fooParam(arg0: String, arg1: Int, arg2: String?) =
println("Child.fooParam: $arg0 $arg1 ${arg2 ?: "null"}")
val roProperty: Int
get() = 42
var rwProperty: Int = 0
get() = field
set(value) { field = value + 1 }
}
// Interface.
interface I {
fun foo(arg0: String, arg1: Int, arg2: I)
fun fooImpl() = foo("Hi", 239, this)
}
open class Impl1: I {
override fun foo(arg0: String, arg1: Int, arg2: I) {
println("Impl1.I: $arg0 $arg1 ${arg2::class.qualifiedName}")
}
}
class Impl2 : Impl1() {
override fun foo(arg0: String, arg1: Int, arg2: I) {
println("Impl2.I: $arg0 $arg1 ${arg2::class.qualifiedName}")
}
}
inline class IC1(val value: Int)
inline class IC2(val value: String)
inline class IC3(val value: Base?)
fun useInlineClasses(ic1: IC1, ic2: IC2, ic3: IC3) {
assert(ic1.value == 42)
assert(ic2.value == "bar")
assert(ic3.value is Base)
}
fun testNullableWithNulls(arg1: Int?, arg2: Unit?) {
assert(arg1 == null)
assert(arg2 == null)
}
fun setCErrorHandler(callback: CPointer<CFunction<(CPointer<ByteVar>) -> Unit>>?) {
setUnhandledExceptionHook({
throwable: Throwable ->
memScoped {
callback!!(throwable.toString().cstr.ptr)
}
kotlin.system.exitProcess(0)
}.freeze())
}
fun throwException() {
throw Error("Expected error")
}
fun getNullableString(param: Int) : String? {
if (param == 0) {
return "Hi"
} else {
return null
}
}
fun getVector128() = vectorOf(1, 2, 3, 4)
// FILE: gh3952.sync.kt
package gh3952.sync
class PlainSync {}
// FILE: gh3952.nested.sync.kt
package gh3952.nested.sync
class NestedSync {}