[inseparable changes from patch from perl5.003_18 to perl5.003_19]
[perl.git] / t / comp / colon.t
1 #!./perl
2
3 #
4 # Ensure that syntax using colons (:) is parsed correctly.
5 # The tests are done on the following tokens (by default):
6 # ABC LABEL XYZZY m q qq qw qx s tr y AUTOLOAD and alarm 
7 #       -- Robin Barker <rmb@cise.npl.co.uk>
8 #
9
10 BEGIN {
11     chdir 't' if -d 't';
12     @INC = '../lib';
13 }
14
15 use strict;
16
17 $_ = '';        # to avoid undef warning on m// etc.
18
19 sub ok {
20     my($test,$ok) = @_;
21     print "not " unless $ok;
22     print "ok $test\n";
23 }
24
25 $SIG{__WARN__} = sub { 1; }; # avoid some spurious warnings
26
27 print "1..25\n";
28
29 ok 1, (eval "package ABC; sub zyx {1}; 1;" and
30         eval "ABC::zyx" and
31         not eval "ABC:: eq ABC||" and
32         not eval "ABC::: >= 0");
33
34 ok 2, (eval "package LABEL; sub zyx {1}; 1;" and
35         eval "LABEL::zyx" and
36         not eval "LABEL:: eq LABEL||" and
37         not eval "LABEL::: >= 0");
38
39 ok 3, (eval "package XYZZY; sub zyx {1}; 1;" and
40         eval "XYZZY::zyx" and
41         not eval "XYZZY:: eq XYZZY||" and
42         not eval "XYZZY::: >= 0");
43
44 ok 4, (eval "package m; sub zyx {1}; 1;" and
45         not eval "m::zyx" and
46         eval "m:: eq m||" and
47         not eval "m::: >= 0");
48
49 ok 5, (eval "package q; sub zyx {1}; 1;" and
50         not eval "q::zyx" and
51         eval "q:: eq q||" and
52         not eval "q::: >= 0");
53
54 ok 6, (eval "package qq; sub zyx {1}; 1;" and
55         not eval "qq::zyx" and
56         eval "qq:: eq qq||" and
57         not eval "qq::: >= 0");
58
59 ok 7, (eval "package qw; sub zyx {1}; 1;" and
60         not eval "qw::zyx" and
61         eval "qw:: eq qw||" and
62         not eval "qw::: >= 0");
63
64 ok 8, (eval "package qx; sub zyx {1}; 1;" and
65         not eval "qx::zyx" and
66         eval "qx:: eq qx||" and
67         not eval "qx::: >= 0");
68
69 ok 9, (eval "package s; sub zyx {1}; 1;" and
70         not eval "s::zyx" and
71         not eval "s:: eq s||" and
72         eval "s::: >= 0");
73
74 ok 10, (eval "package tr; sub zyx {1}; 1;" and
75         not eval "tr::zyx" and
76         not eval "tr:: eq tr||" and
77         eval "tr::: >= 0");
78
79 ok 11, (eval "package y; sub zyx {1}; 1;" and
80         not eval "y::zyx" and
81         not eval "y:: eq y||" and
82         eval "y::: >= 0");
83
84 ok 12, (eval "ABC:1" and
85         not eval "ABC:echo: eq ABC|echo|" and
86         not eval "ABC:echo:ohce: >= 0");
87
88 ok 13, (eval "LABEL:1" and
89         not eval "LABEL:echo: eq LABEL|echo|" and
90         not eval "LABEL:echo:ohce: >= 0");
91
92 ok 14, (eval "XYZZY:1" and
93         not eval "XYZZY:echo: eq XYZZY|echo|" and
94         not eval "XYZZY:echo:ohce: >= 0");
95
96 ok 15, (not eval "m:1" and
97         eval "m:echo: eq m|echo|" and
98         not eval "m:echo:ohce: >= 0");
99
100 ok 16, (not eval "q:1" and
101         eval "q:echo: eq q|echo|" and
102         not eval "q:echo:ohce: >= 0");
103
104 ok 17, (not eval "qq:1" and
105         eval "qq:echo: eq qq|echo|" and
106         not eval "qq:echo:ohce: >= 0");
107
108 ok 18, (not eval "qw:1" and
109         eval "qw:echo: eq qw|echo|" and
110         not eval "qw:echo:ohce: >= 0");
111
112 ok 19, (not eval "qx:1" and
113         eval "qx:echo: eq qx|echo|" and
114         not eval "qx:echo:ohce: >= 0");
115
116 ok 20, (not eval "s:1" and
117         not eval "s:echo: eq s|echo|" and
118         eval "s:echo:ohce: >= 0");
119
120 ok 21, (not eval "tr:1" and
121         not eval "tr:echo: eq tr|echo|" and
122         eval "tr:echo:ohce: >= 0");
123
124 ok 22, (not eval "y:1" and
125         not eval "y:echo: eq y|echo|" and
126         eval "y:echo:ohce: >= 0");
127
128 ok 23, (eval "AUTOLOAD:1" and
129         not eval "AUTOLOAD:echo: eq AUTOLOAD|echo|" and
130         not eval "AUTOLOAD:echo:ohce: >= 0");
131
132 ok 24, (eval "and:1" and
133         not eval "and:echo: eq and|echo|" and
134         not eval "and:echo:ohce: >= 0");
135
136 ok 25, (eval "alarm:1" and
137         not eval "alarm:echo: eq alarm|echo|" and
138         not eval "alarm:echo:ohce: >= 0");