c09e8909d4
^KT-61259
78 lines
1.3 KiB
Kotlin
Vendored
78 lines
1.3 KiB
Kotlin
Vendored
/*
|
|
* Copyright 2010-2023 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.
|
|
*/
|
|
|
|
// TARGET_BACKEND: NATIVE
|
|
// MODULE: cinterop
|
|
// FILE: cglobals.def
|
|
---
|
|
const int g1 = 42;
|
|
|
|
int g2 = 17;
|
|
|
|
struct S {
|
|
int x;
|
|
} g3 = { 128 };
|
|
|
|
int g4[2] = { 13, 14 };
|
|
|
|
int g5[2][2] = { 15, 16, 17, 18 };
|
|
|
|
struct S* const g6 = &g3;
|
|
|
|
void globals_foo() {
|
|
// Test that local vars are not treated as global ones.
|
|
float g1;
|
|
}
|
|
|
|
// Test non-compilable variable:
|
|
typedef int MyInt;
|
|
MyInt g7;
|
|
#define g7 bad macro
|
|
|
|
// Test property name mangling:
|
|
struct g1 {};
|
|
struct g1_ {};
|
|
|
|
typedef void* voidptr;
|
|
_Pragma("clang assume_nonnull begin")
|
|
const voidptr g8 = 0x1, g9 = 0x2;
|
|
_Pragma("clang assume_nonnull end")
|
|
|
|
// MODULE: main(cinterop)
|
|
// FILE: main.kt
|
|
|
|
@file:OptIn(kotlinx.cinterop.ExperimentalForeignApi::class, kotlin.experimental.ExperimentalNativeApi::class)
|
|
|
|
import kotlinx.cinterop.*
|
|
import cglobals.*
|
|
|
|
fun box(): String {
|
|
assert(g1__ == 42)
|
|
|
|
assert(g2 == 17)
|
|
g2 = 42
|
|
assert(g2 == 42)
|
|
|
|
assert(g3.x == 128)
|
|
g3.x = 7
|
|
assert(g3.x == 7)
|
|
|
|
assert(g4[1] == 14)
|
|
g4[1] = 15
|
|
assert(g4[1] == 15)
|
|
|
|
assert(g5[0] == 15)
|
|
assert(g5[3] == 18)
|
|
g5[0] = 16
|
|
assert(g5[0] == 16)
|
|
|
|
assert(g6 == g3.ptr)
|
|
|
|
assert(g8.toLong() == 0x1L)
|
|
assert(g9.toLong() == 0x2L)
|
|
|
|
return "OK"
|
|
}
|