Skip to content

Commit a5eba1b

Browse files
committed
Fix array vs. list confusion
1 parent 72c70bf commit a5eba1b

File tree

3 files changed

+56
-15
lines changed

3 files changed

+56
-15
lines changed

lib/Inline/Python.pm6

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,22 +164,22 @@ sub free_p6_object(Int $index) {
164164
}
165165

166166
method py_array_to_array(OpaquePointer $py_array) {
167-
my @array = [];
167+
my $array = [];
168168
my $len = py_sequence_length($py_array);
169169
for 0..^$len {
170170
my $item = py_sequence_get_item($py_array, $_);
171-
@array[$_] = self.py_to_p6($item);
171+
$array[$_] = self.py_to_p6($item);
172172
py_dec_ref($item);
173173
}
174-
return @array;
174+
return $array;
175175
}
176176

177177
method py_dict_to_hash(OpaquePointer $py_dict) {
178178
my %hash;
179-
my $items = py_mapping_items($py_dict);
180-
my @items = self.py_to_p6($items);
181-
py_dec_ref($items);
182-
%hash{$_[0]} = $_[1] for @items;
179+
my $py_items = py_mapping_items($py_dict);
180+
my $items = self.py_to_p6($py_items);
181+
py_dec_ref($py_items);
182+
%hash{$_[0]} = $_[1] for $items.list;
183183
return %hash;
184184
}
185185

@@ -340,8 +340,8 @@ method BUILD {
340340
}
341341
&!call_method = sub (Int $index, Str $name, OpaquePointer $args, OpaquePointer $err) returns OpaquePointer {
342342
my $p6obj = $objects.get($index);
343-
my @retvals = $p6obj."$name"(|self.py_array_to_array($args));
344-
return self.p6_to_py(@retvals);
343+
my \retvals = $p6obj."$name"(|self.py_array_to_array($args));
344+
return self.p6_to_py(retvals);
345345
CATCH {
346346
default {
347347
nativecast(CArray[OpaquePointer], $err)[0] = self.p6_to_p5($_);

t/call.t

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,13 @@ if ($py.call('__main__', 'test_int_retval') == 1) {
8585
else {
8686
say "not ok 4 - return one int";
8787
}
88-
my @retvals = $py.call('__main__', 'test_int_retvals');
89-
if (@retvals == 3 and @retvals[0] == 3 and @retvals[1] == 1 and @retvals[2] == 2) {
88+
my $retvals = $py.call('__main__', 'test_int_retvals');
89+
if ($retvals.elems == 3 and $retvals[0] == 3 and $retvals[1] == 1 and $retvals[2] == 2) {
9090
say "ok 5 - return three ints";
9191
}
9292
else {
9393
say "not ok 5 - return three ints";
94-
say " got: {@retvals}";
94+
say " got: {$retvals}";
9595
say " expected: 3, 1, 2";
9696
}
9797
if ($py.call('__main__', 'test_str_retval') eq 'Hello Perl 6!') {
@@ -100,13 +100,13 @@ if ($py.call('__main__', 'test_str_retval') eq 'Hello Perl 6!') {
100100
else {
101101
say "not ok 6 - return one string";
102102
}
103-
@retvals = $py.call('__main__', 'test_mixed_retvals');
104-
if (@retvals == 3 and @retvals[0] eq 'Hello' and @retvals[1] eq 'Perl' and @retvals[2] == 6) {
103+
$retvals = $py.call('__main__', 'test_mixed_retvals');
104+
if ($retvals == 3 and $retvals[0] eq 'Hello' and $retvals[1] eq 'Perl' and $retvals[2] == 6) {
105105
say "ok 7 - return mixed values";
106106
}
107107
else {
108108
say "not ok 7 - return mixed values";
109-
say " got: {@retvals}";
109+
say " got: {$retvals}";
110110
say " expected: 'Hello', 'Perl', 6";
111111
}
112112

t/call_back.t

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#!/usr/bin/env perl6
2+
3+
use v6;
4+
use Inline::Python;
5+
use Test;
6+
7+
plan 302;
8+
9+
my $py = Inline::Python.new();
10+
$py.run(q/
11+
from logging import warn
12+
def test(obj):
13+
try:
14+
obj.ok(1)
15+
except Exception, e:
16+
warn(e)
17+
for i in range(100):
18+
retval = obj.test('Perl6')
19+
obj.ok(retval == 'Perl6')
20+
retval = obj.test('Perl6')
21+
obj.ok(retval == 'Perl6')
22+
retval = obj.test('Perl', 6)
23+
obj.ok(retval == ['Perl', 6])
24+
/);
25+
26+
class Foo {
27+
method ok($value) {
28+
ok($value);
29+
}
30+
method test(*@args) {
31+
return |@args;
32+
}
33+
}
34+
35+
my $foo = Foo.new;
36+
$foo.ok(1);
37+
38+
$py.call('__main__', 'test', $foo);
39+
40+
# vim: ft=perl6
41+

0 commit comments

Comments
 (0)