@@ -741,10 +741,14 @@ class QAST::CompilerJS does DWIMYNameMangling does SerializeOnce {
741
741
}
742
742
}
743
743
744
- method compile_all_the_statements (QAST ::Stmts $ node , $ want , : $ result_child = + $ node . list -1 , : $ cps ) {
744
+ method compile_all_the_statements (QAST ::Stmts $ node , $ want , : $ result_child , : $ cps ) {
745
745
my @ chunks ;
746
746
my @ stmts := $ node . list;
747
747
748
+ unless nqp :: defined ($ result_child ) {
749
+ $ result_child := + $ node . list - 1 ;
750
+ }
751
+
748
752
my $ i := 0 ;
749
753
for @ stmts -> $ stmt {
750
754
my $ chunk := self . as_js(@ stmts [$ i ], : want($ i == $ result_child ?? $ want !! $ T_VOID ), : $ cps );
@@ -1186,7 +1190,7 @@ class QAST::CompilerJS does DWIMYNameMangling does SerializeOnce {
1186
1190
# Helps with register allocation on other backends
1187
1191
# We don't do allocate registers so just ignore that
1188
1192
multi method as_js (QAST ::Stmt $ node , : $ want , : $ cps ) {
1189
- self . as_js ($ node [ 0 ], : $ want , : $ cps );
1193
+ self . compile_all_the_statements ($ node , $ want , : $ cps , : result_child( $ node . resultchild) );
1190
1194
}
1191
1195
1192
1196
multi method as_js (QAST ::Stmts $ node , : $ want , : $ cps ) {
@@ -1210,7 +1214,7 @@ class QAST::CompilerJS does DWIMYNameMangling does SerializeOnce {
1210
1214
Chunk. void (" nqp.ctxsave(\{ { nqp :: join (' ,' , @ lexicals )} \} );\n " );
1211
1215
}
1212
1216
else {
1213
- self . compile_all_the_statements($ node , $ want , : $ cps );
1217
+ self . compile_all_the_statements($ node , $ want , : $ cps , : result_child( $ node . resultchild) );
1214
1218
}
1215
1219
}
1216
1220
0 commit comments