-
Notifications
You must be signed in to change notification settings - Fork 135
/
sub-block-parsing.t
83 lines (66 loc) · 1.83 KB
/
sub-block-parsing.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
use v6;
use Test;
# TODO: smartlink
# L<"http://use.perl.org/~autrijus/journal/25365">
# Closure composers like anonymous sub, class and module always trumps hash
# dereferences:
#
# sub{...}
# module{...}
# class{...}
plan 11;
ok(sub { 42 }(), 'sub {...}() works'); # TODO: clarify
ok(sub{ 42 }(), 'sub{...}() works'); # TODO: clarify
# RT #114456
{
is sub { 42 }(), 42, 'can invoke sub with "()" directly after declaration';
is sub ($t) { $t }('arf'), 'arf',
'can pass argument within "()" directly after sub declaration';
}
# RT #76432
throws-like { EVAL q[
sub x { die }
x();
] },
Exception, # no exception object yet
'block parsing works with newline';
throws-like { EVAL q[
sub x { die };
x();
] },
Exception, # no exception object yet
'block parsing works with semicolon';
# RT #85844
{
throws-like { EVAL 'sub foo;' },
X::UnitScope::Invalid,
'RT #85844';
}
# RT #76896:
# perl6 - sub/hash syntax
{
sub to_check_before {
my %fs = ();
%fs{ lc( 'A' ) } = &fa;
sub fa() { return 'fa called.'; }
;
%fs{ lc( 'B' ) } = &fb;
sub fb() { return 'fb called.'; }
my $fn = lc( @_[ 0 ] || 'A' );
return %fs{ $fn }();
}
sub to_check_after {
my %fs = ();
%fs{ lc( 'A' ) } = &fa;
sub fa() { return 'fa called.'; }
%fs{ lc( 'B' ) } = &fb;
sub fb() { return 'fb called.'; }
my $fn = lc( @_[ 0 ] || 'A' );
return %fs{ $fn }();
}
is to_check_before, "fa called.", 'fa called in old sub/hash syntax is ok';
is to_check_before('B'), "fb called.", 'fb called in old sub/hash syntax is ok';
is to_check_after, "fa called.", 'fa called in sub/hash syntax is ok';
is to_check_after('B'), "fb called.", 'fb called in sub/hash syntax is ok';
}
# vim: ft=perl6