@@ -409,19 +409,9 @@ package Perlito5::Javascript3;
409
409
sub emit_javascript3_autovivify {
410
410
my $obj = shift ;
411
411
my $level = shift ;
412
- my $type = shift ; # 'array'/'hash'
413
412
my $wantarray = ' scalar' ;
414
413
415
- return $obj -> emit_javascript3($level , $wantarray , $type );
416
-
417
- # '(' . $obj->emit_javascript3($level)
418
- # . ' || (' . $obj->emit_javascript3($level) . ' = '
419
- # . ( $type eq 'array' ? 'new p5ArrayRef(new p5Array([]))'
420
- # : $type eq 'hash' ? 'new p5HashRef(new p5Hash({}))'
421
- # : 'new p5ScalarRef(null)'
422
- # )
423
- # . ')'
424
- # . ')'
414
+ return $obj -> emit_javascript3($level , $wantarray );
425
415
}
426
416
427
417
sub emit_function_javascript3 {
@@ -771,31 +761,26 @@ package Perlito5::AST::Index;
771
761
my $self = shift ;
772
762
my $level = shift ;
773
763
my $wantarray = shift ;
774
- my $type = shift ; # autovivify to 'array'/'hash'
775
-
776
- $type = $type ? ' "' . $type . ' "' : ' null' ;
777
764
778
765
if ( $self -> {obj }-> isa(' Perlito5::AST::Var' )
779
766
&& $self -> {obj }-> sigil eq ' $'
780
767
)
781
768
{
782
769
my $v = Perlito5::AST::Var-> new( sigil => ' @' , namespace => $self -> {obj }-> namespace, name => $self -> {obj }-> name );
783
770
return $v -> emit_javascript3($level )
784
- . ' .aget(' . Perlito5::Javascript3::to_num($self -> {index_exp }, $level ) . ' , ' . $type . ' )' ;
771
+ . ' .aget(' . Perlito5::Javascript3::to_num($self -> {index_exp }, $level ) . ' )' ;
785
772
}
786
773
if ( $self -> {obj }-> isa(' Perlito5::AST::Apply' )
787
774
&& $self -> {obj }-> {code } eq ' prefix:<$>'
788
775
)
789
776
{
790
777
# $$a[0] ==> $a->[0]
791
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level , ' array' )
792
- . ' .aget('
793
- . Perlito5::Javascript3::to_num($self -> {index_exp }) . ' , ' . $type
794
- . ' )' ;
778
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level )
779
+ . ' .aget(' . Perlito5::Javascript3::to_num($self -> {index_exp }) . ' )' ;
795
780
}
796
781
797
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level , ' array ' )
798
- . ' .aget(' . Perlito5::Javascript3::to_num($self -> {index_exp }, $level ) . ' , ' . $type . ' )' ;
782
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level )
783
+ . ' .aget(' . Perlito5::Javascript3::to_num($self -> {index_exp }, $level ) . ' )' ;
799
784
}
800
785
sub emit_javascript3_set {
801
786
my $self = shift ;
@@ -818,14 +803,14 @@ package Perlito5::AST::Index;
818
803
)
819
804
{
820
805
# $$a[0] ==> $a->[0]
821
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level , ' array ' )
806
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level )
822
807
. ' .aset('
823
808
. Perlito5::Javascript3::to_num($self -> {index_exp }) . ' , '
824
809
. Perlito5::Javascript3::to_scalar([$arguments ], $level +1)
825
810
. ' )' ;
826
811
}
827
812
828
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level , ' array ' )
813
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level )
829
814
. ' .aset('
830
815
. Perlito5::Javascript3::to_num($self -> {index_exp }, $level +1) . ' , '
831
816
. Perlito5::Javascript3::to_scalar([$arguments ], $level +1)
@@ -840,9 +825,6 @@ package Perlito5::AST::Lookup;
840
825
my $self = shift ;
841
826
my $level = shift ;
842
827
my $wantarray = shift ;
843
- my $type = shift ; # autovivify to 'array'/'hash'
844
-
845
- $type = $type ? ' "' . $type . ' "' : ' null' ;
846
828
847
829
# my $var = $self->{obj}->emit_javascript3;
848
830
# return $var . '[' . $self->{index_exp}->emit_javascript3() . ']'
@@ -852,20 +834,20 @@ package Perlito5::AST::Lookup;
852
834
)
853
835
{
854
836
my $v = Perlito5::AST::Var-> new( sigil => ' %' , namespace => $self -> {obj }-> namespace, name => $self -> {obj }-> name );
855
- return Perlito5::Javascript3::emit_javascript3_autovivify( $v , $level , ' hash ' )
856
- . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level ) . ' , ' . $type . ' )' ;
837
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $v , $level )
838
+ . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level ) . ' )' ;
857
839
}
858
840
if ( $self -> {obj }-> isa(' Perlito5::AST::Apply' )
859
841
&& $self -> {obj }-> {code } eq ' prefix:<$>'
860
842
)
861
843
{
862
844
# $$a{0} ==> $a->{0}
863
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level , ' hash ' )
864
- . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level , ' list' ) . ' , ' . $type . ' )' ;
845
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level )
846
+ . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level , ' list' ) . ' )' ;
865
847
}
866
848
867
- Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level , ' hash ' )
868
- . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level ) . ' , ' . $type . ' )' ;
849
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level )
850
+ . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level ) . ' )' ;
869
851
}
870
852
sub emit_javascript3_set {
871
853
my $self = shift ;
@@ -889,13 +871,13 @@ package Perlito5::AST::Lookup;
889
871
)
890
872
{
891
873
# $$a{0} ==> $a->{0}
892
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level , ' hash ' )
874
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }{arguments }[0], $level )
893
875
. ' .hset(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level , ' list' ) . ' , '
894
876
. Perlito5::Javascript3::to_scalar([$arguments ], $level +1)
895
877
. ' )' ;
896
878
}
897
879
898
- Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level , ' hash ' )
880
+ Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {obj }, $level )
899
881
. ' .hset(' . Perlito5::Javascript3::autoquote($self -> {index_exp }, $level ) . ' , '
900
882
. Perlito5::Javascript3::to_scalar([$arguments ], $level +1)
901
883
. ' )' ;
@@ -1154,19 +1136,16 @@ package Perlito5::AST::Call;
1154
1136
my $self = shift ;
1155
1137
my $level = shift ;
1156
1138
my $wantarray = shift ;
1157
- my $type = shift ; # autovivify to 'array'/'hash'
1158
-
1159
- $type = $type ? ' "' . $type . ' "' : ' null' ;
1160
1139
1161
1140
my $meth = $self -> {method };
1162
1141
1163
1142
if ( $meth eq ' postcircumfix:<[ ]>' ) {
1164
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {invocant }, $level , ' array ' )
1165
- . ' .aget(' . Perlito5::Javascript3::to_num($self -> {arguments }) . ' , ' . $type . ' )' ;
1143
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {invocant }, $level )
1144
+ . ' .aget(' . Perlito5::Javascript3::to_num($self -> {arguments }) . ' )' ;
1166
1145
}
1167
1146
if ( $meth eq ' postcircumfix:<{ }>' ) {
1168
- return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {invocant }, $level , ' hash ' )
1169
- . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {arguments }, $level , ' list' ) . ' , ' . $type . ' )' ;
1147
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $self -> {invocant }, $level )
1148
+ . ' .hget(' . Perlito5::Javascript3::autoquote($self -> {arguments }, $level , ' list' ) . ' )' ;
1170
1149
}
1171
1150
1172
1151
my $invocant = $self -> {invocant }-> emit_javascript3;
@@ -1355,25 +1334,25 @@ package Perlito5::AST::Apply;
1355
1334
' prefix:<$>' => sub {
1356
1335
my $self = $_ [0];
1357
1336
my $arg = $self -> {arguments }-> [0];
1358
- Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level , ' scalar ' ) . ' .sderef()' ;
1337
+ Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level ) . ' .sderef()' ;
1359
1338
},
1360
1339
' prefix:<@>' => sub {
1361
1340
my $self = $_ [0];
1362
1341
my $level = $_ [1];
1363
1342
my $arg = $self -> {arguments }-> [0];
1364
- Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level , ' array ' ) . ' .aderef()' ;
1343
+ Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level ) . ' .aderef()' ;
1365
1344
},
1366
1345
' prefix:<$#>' => sub {
1367
1346
my $self = $_ [0];
1368
1347
my $level = $_ [1];
1369
1348
my $arg = $self -> {arguments }-> [0];
1370
- ' (' . Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level , ' array ' ) . ' .aderef()._array_.length - 1)' ;
1349
+ ' (' . Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level ) . ' .aderef()._array_.length - 1)' ;
1371
1350
},
1372
1351
' prefix:<%>' => sub {
1373
1352
my $self = $_ [0];
1374
1353
my $level = $_ [1];
1375
1354
my $arg = $self -> {arguments }-> [0];
1376
- Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level , ' hash ' ) . ' .hderef()' ;
1355
+ Perlito5::Javascript3::emit_javascript3_autovivify( $arg , $level ) . ' .hderef()' ;
1377
1356
},
1378
1357
' prefix:<&>' => sub {
1379
1358
my $self = $_ [0];
@@ -1561,14 +1540,14 @@ package Perlito5::AST::Apply;
1561
1540
}
1562
1541
1563
1542
if ( $parameters -> isa( ' Perlito5::AST::Call' ) && $parameters -> {method } eq ' postcircumfix:<[ ]>' ) {
1564
- return Perlito5::Javascript3::emit_javascript3_autovivify( $parameters -> {invocant }, $level , ' array ' )
1543
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $parameters -> {invocant }, $level )
1565
1544
. ' .aset('
1566
1545
. Perlito5::Javascript3::to_num($parameters -> {arguments }) . ' , '
1567
1546
. Perlito5::Javascript3::to_scalar([$arguments ], $level +1)
1568
1547
. ' )' ;
1569
1548
}
1570
1549
elsif ( $parameters -> isa( ' Perlito5::AST::Call' ) && $parameters -> {method } eq ' postcircumfix:<{ }>' ) {
1571
- return Perlito5::Javascript3::emit_javascript3_autovivify( $parameters -> {invocant }, $level , ' hash ' )
1550
+ return Perlito5::Javascript3::emit_javascript3_autovivify( $parameters -> {invocant }, $level )
1572
1551
. ' .hset('
1573
1552
. Perlito5::Javascript3::autoquote($parameters -> {arguments }, $level ) . ' , '
1574
1553
. Perlito5::Javascript3::to_scalar([$arguments ], $level +1)
0 commit comments