Skip to content

Commit e84c552

Browse files
committed
[js] Implement sub foo(:$*dynamic_variable) {...}.
1 parent 414563e commit e84c552

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/vm/js/QAST/Compiler.nqp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2283,7 +2283,6 @@ class QAST::CompilerJS does DWIMYNameMangling does SerializeOnce {
22832283
$slurpy := $_;
22842284
}
22852285
} elsif $_.named {
2286-
$*BLOCK.add_js_lexical(self.mangle_name($_.name));
22872286
my $quoted := quote_string($_.named);
22882287
my $value := "_NAMED[$quoted]";
22892288
if $_.default {
@@ -2295,7 +2294,14 @@ class QAST::CompilerJS does DWIMYNameMangling does SerializeOnce {
22952294
}
22962295
# TODO required named arguments and defaultless optional ones
22972296

2298-
@setup.push("{self.mangle_name($_.name)} = $value;\n");
2297+
if self.is_dynamic_var($_) {
2298+
@setup.push("{$*CTX}[{quote_string($_.name)}] = $value;\n");
2299+
}
2300+
else {
2301+
$*BLOCK.add_js_lexical(self.mangle_name($_.name));
2302+
@setup.push("{self.mangle_name($_.name)} = $value;\n");
2303+
}
2304+
22992305
} elsif self.is_dynamic_var($_) {
23002306
my $tmp := self.unique_var('param');
23012307
@sig.push($tmp);

0 commit comments

Comments
 (0)