3 use Test::More tests => 48;
5 use warnings FATAL => 'all';
9 use Function::Parameters {}; # ZERO BABIES
11 is eval('fun foo :() {}; 1'), undef;
12 like $@, qr/syntax error/;
16 use Function::Parameters { pound => 'function' };
18 is eval('fun foo :() {}; 1'), undef;
19 like $@, qr/syntax error/;
21 pound foo_1($x, $u) { $x }
24 no Function::Parameters qw(pound);
26 is eval('pound foo() {}; 1'), undef;
27 like $@, qr/syntax error/;
31 use Function::Parameters { pound => 'method' };
33 is eval('fun foo () {}; 1'), undef;
34 like $@, qr/syntax error/;
36 pound foo_2($u) { $self }
39 no Function::Parameters qw(pound);
41 is eval('pound unfoo :() {}; 1'), undef;
42 like $@, qr/syntax error/;
46 is eval('pound unfoo( ){}; 1'), undef;
47 like $@, qr/syntax error/;
49 use Function::Parameters { pound => 'classmethod' };
51 is eval('fun foo () {}; 1'), undef;
52 like $@, qr/syntax error/;
54 pound foo_3($u) { $class }
57 no Function::Parameters;
59 is eval('pound unfoo :lvalue{}; 1'), undef;
60 like $@, qr/syntax error/;
64 use Function::Parameters { pound => 'function_strict' };
66 is eval('fun foo :() {}; 1'), undef;
67 like $@, qr/syntax error/;
69 pound foo_4($x) { $x }
72 is eval('foo_4(5, 6)'), undef;
73 like $@, qr/Too many arguments/;
75 no Function::Parameters qw(pound);
77 is eval('pound foo() {}; 1'), undef;
78 like $@, qr/syntax error/;
82 use Function::Parameters { pound => 'method_strict' };
84 is eval('fun foo () {}; 1'), undef;
85 like $@, qr/syntax error/;
87 pound foo_5() { $self }
90 is eval('foo_5(5, 6)'), undef;
91 like $@, qr/Too many arguments/;
93 no Function::Parameters qw(pound);
95 is eval('pound unfoo :() {}; 1'), undef;
96 like $@, qr/syntax error/;
100 is eval('pound unfoo( ){}; 1'), undef;
101 like $@, qr/syntax error/;
103 use Function::Parameters { pound => 'classmethod_strict' };
105 is eval('fun foo () {}; 1'), undef;
106 like $@, qr/syntax error/;
108 pound foo_6() { $class }
111 is eval('foo_6(5, 6)'), undef;
112 like $@, qr/Too many arguments/;
114 no Function::Parameters;
116 is eval('pound unfoo :lvalue{}; 1'), undef;
117 like $@, qr/syntax error/;
120 is eval('Function::Parameters->import(":QQQQ"); 1'), undef;
121 like $@, qr/valid identifier/;
123 is eval('Function::Parameters->import({":QQQQ" => "function"}); 1'), undef;
124 like $@, qr/valid identifier/;
126 is eval('Function::Parameters->import({"jetsam" => "QQQQ"}); 1'), undef;
127 like $@, qr/valid type/;