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) {
|
||||
goldValue = "1\nA\nB\n"
|
||||
goldValue = "init globalValue2\n" +
|
||||
"init globalValue3\n" +
|
||||
"1\n" +
|
||||
"globalValue2\n" +
|
||||
"globalValue3\n"
|
||||
source = "runtime/basic/initializers2.kt"
|
||||
}
|
||||
|
||||
@@ -19,7 +19,12 @@ void * resolve_symbol(char *name) {
|
||||
return symbol;
|
||||
}
|
||||
|
||||
extern void InitMemory();
|
||||
extern void InitGlobalVariables();
|
||||
|
||||
int
|
||||
main() {
|
||||
InitMemory();
|
||||
InitGlobalVariables();
|
||||
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 initHeadNode;
|
||||
struct InitNode* initTailNode = &initHeadNode;
|
||||
static struct InitNode initHeadNode;
|
||||
static struct InitNode* initTailNode = &initHeadNode;
|
||||
|
||||
|
||||
void InitGlobalVariables() {
|
||||
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 --------------------------------------------------------------//
|
||||
|
||||
ObjHeader* setupArgs(int argc, char** argv) {
|
||||
|
||||
Reference in New Issue
Block a user