This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
RT 75902: Add prototypes for tie() and untie() to allow overloading
[perl5.git] / t / op / cproto.t
1 #!./perl
2 # Tests to ensure that we don't unexpectedly change prototypes of builtins
3
4 BEGIN {
5     chdir 't' if -d 't';
6     @INC = '../lib';
7 }
8
9 BEGIN { require './test.pl'; }
10 plan tests => 237;
11
12 while (<DATA>) {
13     chomp;
14     (my $keyword, my $proto, local $TODO) = split " ", $_, 3;
15     if ($proto eq 'undef') {
16         ok( !defined prototype "CORE::".$keyword, $keyword );
17     }
18     elsif ($proto eq 'unknown') {
19         eval { prototype "CORE::".$keyword };
20         like( $@, qr/Can't find an opnumber for/, $keyword );
21     }
22     else {
23         is( "(".prototype("CORE::".$keyword).")", $proto, $keyword );
24     }
25 }
26
27 # the keyword list :
28
29 __DATA__
30 abs (_)
31 accept (**)
32 alarm (_)
33 and ()
34 atan2 ($$)
35 bind (*$)
36 binmode (*;$)
37 bless ($;$)
38 caller (;$)
39 chdir (;$)
40 chmod (@)
41 chomp undef
42 chop undef
43 chown (@)
44 chr (_)
45 chroot (_)
46 close (;*)
47 closedir (*)
48 cmp unknown
49 connect (*$)
50 continue ()
51 cos (_)
52 crypt ($$)
53 dbmclose (\%)
54 dbmopen (\%$$)
55 defined undef
56 delete undef
57 die (@)
58 do undef
59 dump ()
60 each (\[@%])
61 else undef
62 elsif undef
63 endgrent ()
64 endhostent ()
65 endnetent ()
66 endprotoent ()
67 endpwent ()
68 endservent ()
69 eof (;*)
70 eq ($$)
71 eval undef
72 exec undef
73 exists undef
74 exit (;$)
75 exp (_)
76 fcntl (*$$)
77 fileno (*)
78 flock (*$)
79 for undef
80 foreach undef
81 fork ()
82 format undef
83 formline ($@)
84 ge ($$)
85 getc (;*)
86 getgrent ()
87 getgrgid ($)
88 getgrnam ($)
89 gethostbyaddr ($$)
90 gethostbyname ($)
91 gethostent ()
92 getlogin ()
93 getnetbyaddr ($$)
94 getnetbyname ($)
95 getnetent ()
96 getpeername (*)
97 getpgrp (;$)
98 getppid ()
99 getpriority ($$)
100 getprotobyname ($)
101 getprotobynumber ($)
102 getprotoent ()
103 getpwent ()
104 getpwnam ($)
105 getpwuid ($)
106 getservbyname ($$)
107 getservbyport ($$)
108 getservent ()
109 getsockname (*)
110 getsockopt (*$$)
111 given undef
112 glob undef
113 gmtime (;$)
114 goto undef
115 grep undef
116 gt ($$)
117 hex (_)
118 if undef
119 index ($$;$)
120 int (_)
121 ioctl (*$$)
122 join ($@)
123 keys (\[@%])
124 kill (@)
125 last undef
126 lc (_)
127 lcfirst (_)
128 le ($$)
129 length (_)
130 link ($$)
131 listen (*$)
132 local undef
133 localtime (;$)
134 lock (\$)
135 log (_)
136 lstat (*)
137 lt ($$)
138 m undef
139 map undef
140 mkdir (_;$)
141 msgctl ($$$)
142 msgget ($$)
143 msgrcv ($$$$$)
144 msgsnd ($$$)
145 my undef
146 ne ($$)
147 next undef
148 no undef
149 not ($)
150 oct (_)
151 open (*;$@)
152 opendir (*$)
153 or ()
154 ord (_)
155 our undef
156 pack ($@)
157 package undef
158 pipe (**)
159 pop (;\@)
160 pos undef
161 print undef
162 printf undef
163 prototype undef
164 push (\@@)
165 q undef
166 qq undef
167 qr undef
168 quotemeta (_)
169 qw undef
170 qx undef
171 rand (;$)
172 read (*\$$;$)
173 readdir (*)
174 readline (;*)
175 readlink (_)
176 readpipe (_)
177 recv (*\$$$)
178 redo undef
179 ref (_)
180 rename ($$)
181 require undef
182 reset (;$)
183 return undef
184 reverse (@)
185 rewinddir (*)
186 rindex ($$;$)
187 rmdir (_)
188 s undef
189 say undef
190 scalar undef
191 seek (*$$)
192 seekdir (*$)
193 select (;*)
194 semctl ($$$$)
195 semget ($$$)
196 semop ($$)
197 send (*$$;$)
198 setgrent ()
199 sethostent ($)
200 setnetent ($)
201 setpgrp (;$$)
202 setpriority ($$$)
203 setprotoent ($)
204 setpwent ()
205 setservent ($)
206 setsockopt (*$$$)
207 shift (;\@)
208 shmctl ($$$)
209 shmget ($$$)
210 shmread ($$$$)
211 shmwrite ($$$$)
212 shutdown (*$)
213 sin (_)
214 sleep (;$)
215 socket (*$$$)
216 socketpair (**$$$)
217 sort undef
218 splice (\@;$$@)
219 split undef
220 sprintf ($@)
221 sqrt (_)
222 srand (;$)
223 stat (*)
224 state undef
225 study undef
226 sub undef
227 substr ($$;$$)
228 symlink ($$)
229 syscall ($@)
230 sysopen (*$$;$)
231 sysread (*\$$;$)
232 sysseek (*$$)
233 system undef
234 syswrite (*$;$$)
235 tell (;*)
236 telldir (*)
237 tie (\[$@%*]$@)
238 tied (\[$@%*])
239 time ()
240 times ()
241 tr undef
242 truncate ($$)
243 uc (_)
244 ucfirst (_)
245 umask (;$)
246 undef undef
247 unless undef
248 unlink (@)
249 unpack ($;$)
250 unshift (\@@)
251 untie (\[$@%*])
252 until undef
253 use undef
254 utime (@)
255 values (\[@%])
256 vec ($$$)
257 wait ()
258 waitpid ($$)
259 wantarray ()
260 warn (@)
261 when undef
262 while undef
263 write (;*)
264 x unknown
265 xor ($$)
266 y undef