diff --git a/examples/tabs/Tabs.ll b/examples/tabs/Tabs.ll index c776f15..bb54ad3 100644 --- a/examples/tabs/Tabs.ll +++ b/examples/tabs/Tabs.ll @@ -137,6 +137,7 @@ if.then.var2: call void @js_bind_event(i32 %var7, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.7, i32 0, i32 0)) %var8 = call i32 @js_create_text(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i32 0, i32 0)) call void @js_append_child(i32 %var7, i32 %var8) + call void @js_append_child(i32 %var1, i32 %var7) br label %if.end.var2 if.else.var2: %var9 = call i32 @js_create_element(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i32 0, i32 0)) @@ -144,6 +145,7 @@ if.else.var2: call void @js_bind_event(i32 %var9, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.7, i32 0, i32 0)) %var10 = call i32 @js_create_text(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i32 0, i32 0)) call void @js_append_child(i32 %var9, i32 %var10) + call void @js_append_child(i32 %var1, i32 %var9) br label %if.end.var2 if.end.var2: %var12 = load i32, i32* @signal_VerticalTabs_setting_tab @@ -157,6 +159,7 @@ if.then.var11: call void @js_bind_event(i32 %var16, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i32 0, i32 0)) %var17 = call i32 @js_create_text(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0)) call void @js_append_child(i32 %var16, i32 %var17) + call void @js_append_child(i32 %var1, i32 %var16) br label %if.end.var11 if.else.var11: %var18 = call i32 @js_create_element(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i32 0, i32 0)) @@ -164,6 +167,7 @@ if.else.var11: call void @js_bind_event(i32 %var18, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i32 0, i32 0)) %var19 = call i32 @js_create_text(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0)) call void @js_append_child(i32 %var18, i32 %var19) + call void @js_append_child(i32 %var1, i32 %var18) br label %if.end.var11 if.end.var11: %var21 = load i32, i32* @signal_VerticalTabs_setting_tab @@ -177,6 +181,7 @@ if.then.var20: call void @js_bind_event(i32 %var25, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.12, i32 0, i32 0)) %var26 = call i32 @js_create_text(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i32 0, i32 0)) call void @js_append_child(i32 %var25, i32 %var26) + call void @js_append_child(i32 %var1, i32 %var25) br label %if.end.var20 if.else.var20: %var27 = call i32 @js_create_element(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i32 0, i32 0)) @@ -184,8 +189,10 @@ if.else.var20: call void @js_bind_event(i32 %var27, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.12, i32 0, i32 0)) %var28 = call i32 @js_create_text(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i32 0, i32 0)) call void @js_append_child(i32 %var27, i32 %var28) + call void @js_append_child(i32 %var1, i32 %var27) br label %if.end.var20 if.end.var20: + call void @js_append_child(i32 %var0, i32 %var1) call void @js_append_child(i32 %var0, i32 %var1) %var29 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) call void @js_set_attribute(i32 %var29, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.14, i32 0, i32 0)) @@ -202,14 +209,18 @@ match.case0.var30: %var34 = call i32 @js_create_text(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.17, i32 0, i32 0)) call void @js_append_child(i32 %var33, i32 %var34) call void @js_append_child(i32 %var32, i32 %var33) + call void @js_append_child(i32 %var32, i32 %var33) %var35 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var36 = call i32 @js_create_text(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i32 0, i32 0)) call void @js_append_child(i32 %var35, i32 %var36) call void @js_append_child(i32 %var32, i32 %var35) + call void @js_append_child(i32 %var32, i32 %var35) %var37 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var38 = call i32 @js_create_text(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.20, i32 0, i32 0)) call void @js_append_child(i32 %var37, i32 %var38) call void @js_append_child(i32 %var32, i32 %var37) + call void @js_append_child(i32 %var32, i32 %var37) + call void @js_append_child(i32 %var29, i32 %var32) br label %match.end.var30 match.case1.var30: %var39 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) @@ -218,14 +229,18 @@ match.case1.var30: %var41 = call i32 @js_create_text(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.21, i32 0, i32 0)) call void @js_append_child(i32 %var40, i32 %var41) call void @js_append_child(i32 %var39, i32 %var40) + call void @js_append_child(i32 %var39, i32 %var40) %var42 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var43 = call i32 @js_create_text(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.22, i32 0, i32 0)) call void @js_append_child(i32 %var42, i32 %var43) call void @js_append_child(i32 %var39, i32 %var42) + call void @js_append_child(i32 %var39, i32 %var42) %var44 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var45 = call i32 @js_create_text(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i32 0, i32 0)) call void @js_append_child(i32 %var44, i32 %var45) call void @js_append_child(i32 %var39, i32 %var44) + call void @js_append_child(i32 %var39, i32 %var44) + call void @js_append_child(i32 %var29, i32 %var39) br label %match.end.var30 match.case2.var30: %var46 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) @@ -234,14 +249,18 @@ match.case2.var30: %var48 = call i32 @js_create_text(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.24, i32 0, i32 0)) call void @js_append_child(i32 %var47, i32 %var48) call void @js_append_child(i32 %var46, i32 %var47) + call void @js_append_child(i32 %var46, i32 %var47) %var49 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var50 = call i32 @js_create_text(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i32 0, i32 0)) call void @js_append_child(i32 %var49, i32 %var50) call void @js_append_child(i32 %var46, i32 %var49) + call void @js_append_child(i32 %var46, i32 %var49) %var51 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var52 = call i32 @js_create_text(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.26, i32 0, i32 0)) call void @js_append_child(i32 %var51, i32 %var52) call void @js_append_child(i32 %var46, i32 %var51) + call void @js_append_child(i32 %var46, i32 %var51) + call void @js_append_child(i32 %var29, i32 %var46) br label %match.end.var30 match.case3.var30: %var53 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) @@ -250,8 +269,11 @@ match.case3.var30: %var55 = call i32 @js_create_text(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.27, i32 0, i32 0)) call void @js_append_child(i32 %var54, i32 %var55) call void @js_append_child(i32 %var53, i32 %var54) + call void @js_append_child(i32 %var53, i32 %var54) + call void @js_append_child(i32 %var29, i32 %var53) br label %match.end.var30 match.end.var30: + call void @js_append_child(i32 %var0, i32 %var29) call void @js_append_child(i32 %var0, i32 %var29) call void @js_set_root(i32 %var0) ret void @@ -307,11 +329,13 @@ entry: %var58 = call i32 @js_create_text(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.30, i32 0, i32 0)) call void @js_append_child(i32 %var57, i32 %var58) call void @js_append_child(i32 %var56, i32 %var57) + call void @js_append_child(i32 %var56, i32 %var57) %var59 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) call void @js_set_attribute(i32 %var59, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.31, i32 0, i32 0)) %var60 = call i32 @js_create_text(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.32, i32 0, i32 0)) call void @js_append_child(i32 %var59, i32 %var60) call void @js_append_child(i32 %var56, i32 %var59) + call void @js_append_child(i32 %var56, i32 %var59) %var61 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.33, i32 0, i32 0)) call void @js_set_attribute(i32 %var61, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.34, i32 0, i32 0)) %var63 = load i32, i32* @signal_Tabs_tab_index @@ -327,6 +351,8 @@ if.then.var62: %var69 = call i32 @js_create_text(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.38, i32 0, i32 0)) call void @js_append_child(i32 %var68, i32 %var69) call void @js_append_child(i32 %var67, i32 %var68) + call void @js_append_child(i32 %var67, i32 %var68) + call void @js_append_child(i32 %var61, i32 %var67) br label %if.end.var62 if.else.var62: %var70 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i32 0, i32 0)) @@ -336,6 +362,8 @@ if.else.var62: %var72 = call i32 @js_create_text(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.38, i32 0, i32 0)) call void @js_append_child(i32 %var71, i32 %var72) call void @js_append_child(i32 %var70, i32 %var71) + call void @js_append_child(i32 %var70, i32 %var71) + call void @js_append_child(i32 %var61, i32 %var70) br label %if.end.var62 if.end.var62: %var74 = load i32, i32* @signal_Tabs_tab_index @@ -351,6 +379,8 @@ if.then.var73: %var80 = call i32 @js_create_text(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.41, i32 0, i32 0)) call void @js_append_child(i32 %var79, i32 %var80) call void @js_append_child(i32 %var78, i32 %var79) + call void @js_append_child(i32 %var78, i32 %var79) + call void @js_append_child(i32 %var61, i32 %var78) br label %if.end.var73 if.else.var73: %var81 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i32 0, i32 0)) @@ -360,6 +390,8 @@ if.else.var73: %var83 = call i32 @js_create_text(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.41, i32 0, i32 0)) call void @js_append_child(i32 %var82, i32 %var83) call void @js_append_child(i32 %var81, i32 %var82) + call void @js_append_child(i32 %var81, i32 %var82) + call void @js_append_child(i32 %var61, i32 %var81) br label %if.end.var73 if.end.var73: %var85 = load i32, i32* @signal_Tabs_tab_index @@ -375,6 +407,8 @@ if.then.var84: %var91 = call i32 @js_create_text(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.43, i32 0, i32 0)) call void @js_append_child(i32 %var90, i32 %var91) call void @js_append_child(i32 %var89, i32 %var90) + call void @js_append_child(i32 %var89, i32 %var90) + call void @js_append_child(i32 %var61, i32 %var89) br label %if.end.var84 if.else.var84: %var92 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i32 0, i32 0)) @@ -384,8 +418,11 @@ if.else.var84: %var94 = call i32 @js_create_text(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.43, i32 0, i32 0)) call void @js_append_child(i32 %var93, i32 %var94) call void @js_append_child(i32 %var92, i32 %var93) + call void @js_append_child(i32 %var92, i32 %var93) + call void @js_append_child(i32 %var61, i32 %var92) br label %if.end.var84 if.end.var84: + call void @js_append_child(i32 %var56, i32 %var61) call void @js_append_child(i32 %var56, i32 %var61) %var95 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) call void @js_set_attribute(i32 %var95, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.44, i32 0, i32 0)) @@ -402,28 +439,36 @@ match.case0.var96: %var100 = call i32 @js_create_text(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.47, i32 0, i32 0)) call void @js_append_child(i32 %var99, i32 %var100) call void @js_append_child(i32 %var98, i32 %var99) + call void @js_append_child(i32 %var98, i32 %var99) %var101 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var102 = call i32 @js_create_text(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.48, i32 0, i32 0)) call void @js_append_child(i32 %var101, i32 %var102) call void @js_append_child(i32 %var98, i32 %var101) + call void @js_append_child(i32 %var98, i32 %var101) %var103 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var104 = call i32 @js_create_text(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.49, i32 0, i32 0)) call void @js_append_child(i32 %var103, i32 %var104) call void @js_append_child(i32 %var98, i32 %var103) + call void @js_append_child(i32 %var98, i32 %var103) %var105 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.33, i32 0, i32 0)) %var106 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i32 0, i32 0)) %var107 = call i32 @js_create_text(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.50, i32 0, i32 0)) call void @js_append_child(i32 %var106, i32 %var107) call void @js_append_child(i32 %var105, i32 %var106) + call void @js_append_child(i32 %var105, i32 %var106) %var108 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i32 0, i32 0)) %var109 = call i32 @js_create_text(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.51, i32 0, i32 0)) call void @js_append_child(i32 %var108, i32 %var109) call void @js_append_child(i32 %var105, i32 %var108) + call void @js_append_child(i32 %var105, i32 %var108) %var110 = call i32 @js_create_element(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i32 0, i32 0)) %var111 = call i32 @js_create_text(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.52, i32 0, i32 0)) call void @js_append_child(i32 %var110, i32 %var111) call void @js_append_child(i32 %var105, i32 %var110) + call void @js_append_child(i32 %var105, i32 %var110) call void @js_append_child(i32 %var98, i32 %var105) + call void @js_append_child(i32 %var98, i32 %var105) + call void @js_append_child(i32 %var95, i32 %var98) br label %match.end.var96 match.case1.var96: %var112 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) @@ -432,25 +477,32 @@ match.case1.var96: %var114 = call i32 @js_create_text(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.54, i32 0, i32 0)) call void @js_append_child(i32 %var113, i32 %var114) call void @js_append_child(i32 %var112, i32 %var113) + call void @js_append_child(i32 %var112, i32 %var113) %var115 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var116 = call i32 @js_create_text(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.55, i32 0, i32 0)) call void @js_append_child(i32 %var115, i32 %var116) call void @js_append_child(i32 %var112, i32 %var115) + call void @js_append_child(i32 %var112, i32 %var115) %var117 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) call void @js_set_attribute(i32 %var117, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.56, i32 0, i32 0)) %var118 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var119 = call i32 @js_create_text(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.57, i32 0, i32 0)) call void @js_append_child(i32 %var118, i32 %var119) call void @js_append_child(i32 %var117, i32 %var118) + call void @js_append_child(i32 %var117, i32 %var118) %var120 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var121 = call i32 @js_create_text(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.58, i32 0, i32 0)) call void @js_append_child(i32 %var120, i32 %var121) call void @js_append_child(i32 %var117, i32 %var120) + call void @js_append_child(i32 %var117, i32 %var120) %var122 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var123 = call i32 @js_create_text(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.59, i32 0, i32 0)) call void @js_append_child(i32 %var122, i32 %var123) call void @js_append_child(i32 %var117, i32 %var122) + call void @js_append_child(i32 %var117, i32 %var122) call void @js_append_child(i32 %var112, i32 %var117) + call void @js_append_child(i32 %var112, i32 %var117) + call void @js_append_child(i32 %var95, i32 %var112) br label %match.end.var96 match.case2.var96: %var124 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) @@ -459,11 +511,14 @@ match.case2.var96: %var126 = call i32 @js_create_text(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.43, i32 0, i32 0)) call void @js_append_child(i32 %var125, i32 %var126) call void @js_append_child(i32 %var124, i32 %var125) + call void @js_append_child(i32 %var124, i32 %var125) %var127 = call i32 @js_create_element(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i32 0, i32 0)) %var128 = call i32 @js_create_text(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.61, i32 0, i32 0)) call void @js_append_child(i32 %var127, i32 %var128) call void @js_append_child(i32 %var124, i32 %var127) + call void @js_append_child(i32 %var124, i32 %var127) call void @render_VerticalTabs() + call void @js_append_child(i32 %var95, i32 %var124) br label %match.end.var96 match.case3.var96: %var129 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) @@ -472,8 +527,11 @@ match.case3.var96: %var131 = call i32 @js_create_text(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.63, i32 0, i32 0)) call void @js_append_child(i32 %var130, i32 %var131) call void @js_append_child(i32 %var129, i32 %var130) + call void @js_append_child(i32 %var129, i32 %var130) + call void @js_append_child(i32 %var95, i32 %var129) br label %match.end.var96 match.end.var96: + call void @js_append_child(i32 %var56, i32 %var95) call void @js_append_child(i32 %var56, i32 %var95) %var132 = call i32 @js_create_element(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.0, i32 0, i32 0)) call void @js_set_attribute(i32 %var132, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.64, i32 0, i32 0)) @@ -482,6 +540,8 @@ match.end.var96: %var134 = call i32 @js_create_text(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.65, i32 0, i32 0)) call void @js_append_child(i32 %var133, i32 %var134) call void @js_append_child(i32 %var132, i32 %var133) + call void @js_append_child(i32 %var132, i32 %var133) + call void @js_append_child(i32 %var56, i32 %var132) call void @js_append_child(i32 %var56, i32 %var132) call void @js_set_root(i32 %var56) ret void diff --git a/examples/tabs/Tabs.wasm b/examples/tabs/Tabs.wasm index c7ec38d..b0179ca 100755 Binary files a/examples/tabs/Tabs.wasm and b/examples/tabs/Tabs.wasm differ diff --git a/ritz/__pycache__/llvm_codegen_signals.cpython-313.pyc b/ritz/__pycache__/llvm_codegen_signals.cpython-313.pyc index 38a7dc5..6361657 100644 Binary files a/ritz/__pycache__/llvm_codegen_signals.cpython-313.pyc and b/ritz/__pycache__/llvm_codegen_signals.cpython-313.pyc differ diff --git a/ritz/llvm_codegen_signals.py b/ritz/llvm_codegen_signals.py index ec0b3ae..b4c2a3b 100644 --- a/ritz/llvm_codegen_signals.py +++ b/ritz/llvm_codegen_signals.py @@ -37,6 +37,11 @@ class SignalLLVMIRGenerator: # Track current component for signal scoping self.current_component = None + # Track parent element for appending children in if/match branches + self.parent_element_stack: list[str] = [] + # Track if we're inside a conditional branch + self.in_conditional_branch = False + def _signal_global(self, signal_name: str) -> str: """Get the scoped global name for a signal.""" if self.current_component: @@ -428,6 +433,9 @@ class SignalLLVMIRGenerator: f"i8* getelementptr inbounds ({self._string_type(onclick_handler)}, {self._string_type(onclick_handler)}* {handler_str}, i32 0, i32 0))" ) + # Push this element as the parent for children + self.parent_element_stack.append(elem_var) + # Process children for child_stmt in stmt["body"]: child_var = self._emit_statement(child_stmt) @@ -436,6 +444,14 @@ class SignalLLVMIRGenerator: f" call void @js_append_child(i32 %{elem_var}, i32 %{child_var})" ) + # Pop parent + self.parent_element_stack.pop() + + # If we're inside an if/match branch (have a grandparent), append to it + if self.parent_element_stack: + parent_var = self.parent_element_stack[-1] + self.lines.append(f" call void @js_append_child(i32 %{parent_var}, i32 %{elem_var})") + return elem_var def _emit_yield(self, stmt: dict[str, Any]) -> str | None: