TEST: test for global variable initialization added
This commit is contained in:
committed by
vvlevchenko
parent
86bb5477c5
commit
5f097350ac
@@ -826,6 +826,10 @@ task lambda13(type: RunKonanTest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task initializers2(type: RunKonanTest) {
|
task initializers2(type: RunKonanTest) {
|
||||||
goldValue = "1\nA\nB\n"
|
goldValue = "init globalValue2\n" +
|
||||||
|
"init globalValue3\n" +
|
||||||
|
"1\n" +
|
||||||
|
"globalValue2\n" +
|
||||||
|
"globalValue3\n"
|
||||||
source = "runtime/basic/initializers2.kt"
|
source = "runtime/basic/initializers2.kt"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,12 @@ void * resolve_symbol(char *name) {
|
|||||||
return symbol;
|
return symbol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern void InitMemory();
|
||||||
|
extern void InitGlobalVariables();
|
||||||
|
|
||||||
int
|
int
|
||||||
main() {
|
main() {
|
||||||
|
InitMemory();
|
||||||
|
InitGlobalVariables();
|
||||||
exit(run_test());
|
exit(run_test());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
class A(val msg: String) {
|
||||||
|
init {
|
||||||
|
println("init $msg")
|
||||||
|
}
|
||||||
|
override fun toString(): String = msg
|
||||||
|
}
|
||||||
|
|
||||||
|
val globalValue1 = 1
|
||||||
|
val globalValue2 = A("globalValue2")
|
||||||
|
val globalValue3 = A("globalValue3")
|
||||||
|
|
||||||
|
fun main(args: Array<String>) {
|
||||||
|
println(globalValue1.toString())
|
||||||
|
println(globalValue2.toString())
|
||||||
|
println(globalValue3.toString())
|
||||||
|
}
|
||||||
|
|
||||||
@@ -13,8 +13,9 @@ struct InitNode {
|
|||||||
struct InitNode* next;
|
struct InitNode* next;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct InitNode initHeadNode;
|
static struct InitNode initHeadNode;
|
||||||
struct InitNode* initTailNode = &initHeadNode;
|
static struct InitNode* initTailNode = &initHeadNode;
|
||||||
|
|
||||||
|
|
||||||
void InitGlobalVariables() {
|
void InitGlobalVariables() {
|
||||||
struct InitNode *currNode = initHeadNode.next;
|
struct InitNode *currNode = initHeadNode.next;
|
||||||
@@ -24,6 +25,11 @@ void InitGlobalVariables() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void appendToInitializersTail(struct InitNode *next) {
|
||||||
|
initTailNode->next = next;
|
||||||
|
initTailNode = next;
|
||||||
|
}
|
||||||
|
|
||||||
//--- Setup args --------------------------------------------------------------//
|
//--- Setup args --------------------------------------------------------------//
|
||||||
|
|
||||||
ObjHeader* setupArgs(int argc, char** argv) {
|
ObjHeader* setupArgs(int argc, char** argv) {
|
||||||
|
|||||||
Reference in New Issue
Block a user