@@ -10,22 +10,22 @@ knowhow ModuleLoader {
10
10
my $ explicit ;
11
11
try { $ explicit := % * COMPILING <%?OPTIONS >{$ explicit_path }; }
12
12
if ! nqp ::isnull($ explicit ) && $ explicit {
13
- @ search_paths . push ($ explicit );
13
+ nqp :: push (@ search_paths , $ explicit );
14
14
}
15
15
else {
16
16
my @ lib_paths := pir::getinterp__P()[pir::const::IGLOBALS_LIB_PATHS][1 ];
17
- if + @ lib_paths > 3 {
18
- @ search_paths . push (@ lib_paths [0 ]);
17
+ if nqp :: elems ( @ lib_paths ) > 3 {
18
+ nqp :: push (@ search_paths , @ lib_paths [0 ]);
19
19
}
20
20
}
21
21
22
22
# Add CWD and blib.
23
- @ search_paths . push (' .' );
24
- @ search_paths . push (' blib' );
23
+ nqp :: push (@ search_paths , ' .' );
24
+ nqp :: push (@ search_paths , ' blib' );
25
25
26
26
# Add NQP langauge directory.
27
27
my % conf := pir::getinterp__P()[pir::const::IGLOBALS_CONFIG_HASH];
28
- @ search_paths . push (% conf <libdir > ~ % conf <versiondir > ~
28
+ nqp :: push (@ search_paths , % conf <libdir > ~ % conf <versiondir > ~
29
29
' /languages/nqp/lib' );
30
30
31
31
@ search_paths
@@ -64,7 +64,7 @@ knowhow ModuleLoader {
64
64
# Provided we have a mainline...
65
65
if nqp :: defined ($ module_ctx ) {
66
66
# Merge any globals.
67
- my $ UNIT := pir::getattribute__PPs ($ module_ctx , ' lex_pad ' );
67
+ my $ UNIT := nqp ::ctxlexpad ($ module_ctx );
68
68
unless nqp ::isnull($ UNIT <GLOBALish >) {
69
69
if + @ global_merge_target {
70
70
merge_globals(@ global_merge_target [0 ], $ UNIT <GLOBALish >);
@@ -87,43 +87,44 @@ knowhow ModuleLoader {
87
87
# Obviously, just a first cut at this. :-)
88
88
my % known_symbols ;
89
89
for $ target . WHO {
90
- % known_symbols {$ _ . key } := 1 ;
90
+ % known_symbols {nqp ::iterkey_s( $ _ ) } := 1 ;
91
91
}
92
92
for $ source . WHO {
93
- my $ sym := $ _ . key ;
93
+ my $ sym := nqp ::iterkey_s($ _ );
94
+ my $ val := nqp ::iterval($ _ );
94
95
if ! nqp ::existskey(% known_symbols , $ sym ) {
95
96
my $ source_is_stub := 0 ;
96
97
try {
97
- my $ source_mo := $ _ . value . HOW ;
98
+ my $ source_mo := $ val . HOW ;
98
99
$ source_is_stub := $ source_mo . WHAT . HOW . name ($ source_mo ) eq $ stub_how &&
99
- ! nqp ::isnull(nqp ::who($ _ . value )) && nqp ::who($ _ . value );
100
+ ! nqp ::isnull(nqp ::who($ val )) && nqp ::who($ val );
100
101
}
101
102
if $ source_is_stub {
102
- my $ source := $ _ . value ;
103
+ my $ source := $ val ;
103
104
my $ source_clone := $ source . HOW . new_type(: name($ source . HOW . name ($ source )));
104
105
$ source_clone . HOW . compose($ source_clone );
105
106
my % WHO_clone ;
106
107
for nqp ::who($ source ) {
107
- % WHO_clone {$ _ . key } := $ _ . value ;
108
+ % WHO_clone {nqp ::iterkey_s( $ _ ) } := nqp ::iterval( $ _ ) ;
108
109
}
109
110
nqp ::setwho($ source_clone , % WHO_clone );
110
111
($ target . WHO ){$ sym } := $ source_clone ;
111
112
}
112
113
else {
113
- ($ target . WHO ){$ sym } := $ _ . value ;
114
+ ($ target . WHO ){$ sym } := $ val ;
114
115
}
115
116
}
116
- elsif ($ target . WHO ){$ sym } =:= $ _ . value {
117
+ elsif ($ target . WHO ){$ sym } =:= $ val {
117
118
# No problemo; a symbol can't conflict with itself.
118
119
}
119
120
else {
120
- my $ source_mo := $ _ . value . HOW ;
121
+ my $ source_mo := $ val . HOW ;
121
122
my $ source_is_stub := $ source_mo . WHAT . HOW . name ($ source_mo ) eq $ stub_how ;
122
123
my $ target_mo := ($ target . WHO ){$ sym }. HOW ;
123
124
my $ target_is_stub := $ target_mo . WHAT . HOW . name ($ target_mo ) eq $ stub_how ;
124
125
if $ source_is_stub && $ target_is_stub {
125
126
# Leave target as is, and merge the nested symbols.
126
- merge_globals(($ target . WHO ){$ sym }, $ _ . value );
127
+ merge_globals(($ target . WHO ){$ sym }, $ val );
127
128
}
128
129
else {
129
130
nqp ::die(" Merging GLOBAL symbols failed: duplicate definition of symbol $ sym" );
0 commit comments