/
pointy-rw.t
69 lines (50 loc) 路 1.5 KB
/
pointy-rw.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
use v6;
use Test;
=begin pod
We ought to be able to change a value when aliasing into it.
# L<S04/The C<for> statement/by including the is rw trait>
=end pod
plan 10;
#?pugs 8 todo 'rw aliasing'
{
my %h = 1..4;
lives_ok {
for %h.values -> $v is rw { $v += 1 }
}, 'aliases returned by %hash.values should be rw (1)';
#?rakudo skip 'rw Hash.values'
is %h<3>, 5, 'aliases returned by %hash.values should be rw (2)';
}
#?rakudo skip '<-> (rw lanbmda) parsing'
{
my %h = 1..4;
lives_ok {
for %h.values <-> $v { $v += 1 }
}, 'aliases returned by %hash.values should be rw (<->) (1)';
is %h<3>, 5, 'aliases returned by %hash.values should be rw (<->) (2)';
}
{
my @a = 1..4;
lives_ok {
for @a.values -> $v is rw { $v += 1 }
}, 'aliases returned by @array.values should be rw (1)';
is @a[2], 4, 'aliases returned by @array.values should be rw (2)';
}
{
my $pair = (a => 42);
#?niecza todo
lives_ok {
for $pair.value -> $v is rw { $v += 1 }
}, 'aliases returned by $pair.values should be rw (1)';
#?niecza todo
is $pair.value, 43, 'aliases returned by $pair.values should be rw (2)';
}
{
my $var = 42;
my $pair = (a => $var);
lives_ok {
for $pair.value -> $v is rw { $v += 1 }
}, 'aliases returned by $pair.values should be rw (1)';
is $pair.value, 43, 'aliases returned by $pair.values should be rw (2)';
}
# (currently this dies with "Can't modify constant item: VInt 2")
# vim: ft=perl6