-
Notifications
You must be signed in to change notification settings - Fork 135
/
operators.t
51 lines (42 loc) · 1.01 KB
/
operators.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
use v6;
use Test;
plan 5;
#L<S06/Operator overloading>
{
sub postfix:<§> ($x) {
$x * 2;
};
is 3§, 6, 'Can define postfix operator';
}
{
sub postfix:<!>($arg) {
if ($arg == 0) { 1;}
else { ($arg-1)! * $arg;}
};
is 5!, 120, 'Can define recursive postfix operator';
# RT #119473
is 5.!, 120, 'Can use newly defined postfix operator with leading dot';
}
{
class A does Associative {
method postcircumfix:<{ }>(*@ix) { # METHOD TO SUB CASUALTY
return @ix
}
};
#?rakudo skip 'cannot easily override {} at the moment'
is A.new<foo bar>, <foo bar>, 'defining postcircumfix:<{ }> works';
}
# overloaded invoke
# RT #76330
# (even though the ticket title claims it, the actual problem was not related
# to monkey typing/augmenting at all)
{
class B {
has $.x;
method postcircumfix:<( )>($y) {
$.x ~ $y;
}
}
is B.new(x => 'a').('b'), 'ab', 'can overload invoke';
}
# vim: ft=perl6