@@ -881,10 +881,10 @@ class NQP::Actions is HLL::Actions {
881
881
# Need to install it at loadinit time but also re-bind
882
882
# it per invocation.
883
883
$ * W . install_package_routine($ * PACKAGE , $ name , $ past );
884
- $ BLOCK [0 ]. push (PAST ::Op. new (
885
- : pasttype( ' bind_6model ' ),
884
+ $ BLOCK [0 ]. push (QAST ::Op. new (
885
+ : op( ' bind ' ),
886
886
lexical_package_lookup([$ name ], $/ ),
887
- PAST ::Var. new ( : name($ name ), : scope(' lexical' ) )
887
+ QAST ::Var. new ( : name($ name ), : scope(' lexical' ) )
888
888
));
889
889
}
890
890
}
@@ -1504,8 +1504,8 @@ class NQP::Actions is HLL::Actions {
1504
1504
# The final lookup will always be just a keyed access to a
1505
1505
# symbol table.
1506
1506
my $ final_name := @ name . pop ();
1507
- my $ lookup := QAST ::Op . new (
1508
- : op( ' atkey ' ),
1507
+ my $ lookup := QAST ::VarWithFallback . new (
1508
+ : scope( ' associative ' ),
1509
1509
QAST ::SVal. new ( : value(~ $ final_name ) )
1510
1510
);
1511
1511
@@ -1516,9 +1516,8 @@ class NQP::Actions is HLL::Actions {
1516
1516
: op(' who' ),
1517
1517
QAST ::Var. new ( : name(' $?PACKAGE' ), : scope(' lexical' ) )
1518
1518
));
1519
- $ lookup := QAST ::Op. new (
1519
+ $ lookup . fallback( QAST ::Op. new (
1520
1520
: op(' ifnull' ),
1521
- $ lookup ,
1522
1521
QAST ::Op. new (
1523
1522
: op(' atkey' ),
1524
1523
QAST ::Op. new (
@@ -1527,25 +1526,28 @@ class NQP::Actions is HLL::Actions {
1527
1526
QAST ::SVal. new ( : value(' GLOBAL' ) ) )
1528
1527
),
1529
1528
QAST ::SVal. new ( : value(~ $ final_name ) )
1530
- ));
1529
+ ),
1530
+ default_for(' $' )));
1531
1531
}
1532
1532
1533
1533
# Otherwise, see if the first part of the name is lexically
1534
1534
# known. If not, it's in GLOBAL. Also, if first part is GLOBAL
1535
1535
# then strip it off.
1536
1536
else {
1537
1537
my $ path := $ * W . is_lexical(@ name [0 ]) ??
1538
- PAST::Var. new ( : name(@ name . shift ()), : scope(' lexical' ) ) !!
1539
- PAST::Var. new ( : name(' GLOBAL' ), : namespace([]), : scope(' package' ) );
1538
+ QAST ::Var. new ( : name(@ name . shift ()), : scope(' lexical' ) ) !!
1539
+ QAST ::VM. new ( pirop => ' get_hll_global Ps' ,
1540
+ QAST ::SVal. new ( : value(' GLOBAL' ) ) );
1540
1541
if @ name [0 ] eq ' GLOBAL' {
1541
1542
@ name . shift ();
1542
1543
}
1543
1544
for @ name {
1544
- $ path := PAST::Op . new (
1545
+ $ path := QAST ::VM . new (
1545
1546
: pirop(' nqp_get_package_through_who PPs' ),
1546
- $ path , ~ $ _ );
1547
+ $ path , QAST ::SVal . new ( : value( ~ $ _ ) ) );
1547
1548
}
1548
- $ lookup . unshift (PAST::Op. new (: pirop(' get_who PP' ), $ path ));
1549
+ $ lookup . unshift (QAST ::Op. new (: op(' who' ), $ path ));
1550
+ $ lookup . fallback(default_for(' $' ));
1549
1551
}
1550
1552
1551
1553
return $ lookup ;
0 commit comments