1 ################################################################################
3 ## Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
4 ## Version 2.x, Copyright (C) 2001, Paul Marquess.
5 ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
7 ## This program is free software; you can redistribute it and/or
8 ## modify it under the same terms as Perl itself.
10 ################################################################################
22 __UNDEFINED__ WARN_ALL 0
23 __UNDEFINED__ WARN_CLOSURE 1
24 __UNDEFINED__ WARN_DEPRECATED 2
25 __UNDEFINED__ WARN_EXITING 3
26 __UNDEFINED__ WARN_GLOB 4
27 __UNDEFINED__ WARN_IO 5
28 __UNDEFINED__ WARN_CLOSED 6
29 __UNDEFINED__ WARN_EXEC 7
30 __UNDEFINED__ WARN_LAYER 8
31 __UNDEFINED__ WARN_NEWLINE 9
32 __UNDEFINED__ WARN_PIPE 10
33 __UNDEFINED__ WARN_UNOPENED 11
34 __UNDEFINED__ WARN_MISC 12
35 __UNDEFINED__ WARN_NUMERIC 13
36 __UNDEFINED__ WARN_ONCE 14
37 __UNDEFINED__ WARN_OVERFLOW 15
38 __UNDEFINED__ WARN_PACK 16
39 __UNDEFINED__ WARN_PORTABLE 17
40 __UNDEFINED__ WARN_RECURSION 18
41 __UNDEFINED__ WARN_REDEFINE 19
42 __UNDEFINED__ WARN_REGEXP 20
43 __UNDEFINED__ WARN_SEVERE 21
44 __UNDEFINED__ WARN_DEBUGGING 22
45 __UNDEFINED__ WARN_INPLACE 23
46 __UNDEFINED__ WARN_INTERNAL 24
47 __UNDEFINED__ WARN_MALLOC 25
48 __UNDEFINED__ WARN_SIGNAL 26
49 __UNDEFINED__ WARN_SUBSTR 27
50 __UNDEFINED__ WARN_SYNTAX 28
51 __UNDEFINED__ WARN_AMBIGUOUS 29
52 __UNDEFINED__ WARN_BAREWORD 30
53 __UNDEFINED__ WARN_DIGIT 31
54 __UNDEFINED__ WARN_PARENTHESIS 32
55 __UNDEFINED__ WARN_PRECEDENCE 33
56 __UNDEFINED__ WARN_PRINTF 34
57 __UNDEFINED__ WARN_PROTOTYPE 35
58 __UNDEFINED__ WARN_QW 36
59 __UNDEFINED__ WARN_RESERVED 37
60 __UNDEFINED__ WARN_SEMICOLON 38
61 __UNDEFINED__ WARN_TAINT 39
62 __UNDEFINED__ WARN_THREADS 40
63 __UNDEFINED__ WARN_UNINITIALIZED 41
64 __UNDEFINED__ WARN_UNPACK 42
65 __UNDEFINED__ WARN_UNTIE 43
66 __UNDEFINED__ WARN_UTF8 44
67 __UNDEFINED__ WARN_VOID 45
68 __UNDEFINED__ WARN_ASSERTIONS 46
70 __UNDEFINED__ packWARN(a) (a)
74 # define ckWARN(a) (PL_dowarn & G_WARN_ON)
76 # define ckWARN(a) PL_dowarn
80 #if { VERSION >= 5.004 } && !defined(warner)
84 warner(U32 err, const char *pat, ...)
92 sv = vnewSVpvf(pat, &args);
95 warn("%s", SvPV_nolen(sv));
98 #define warner Perl_warner
100 #define Perl_warner_nocontext Perl_warner
114 #if { VERSION >= 5.004 }
115 warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42);
121 #if { VERSION >= 5.004 }
122 Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42);
126 Perl_warner_nocontext()
128 #if { VERSION >= 5.004 }
129 Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42);
135 #if { VERSION >= 5.004 }
136 if (ckWARN(WARN_MISC))
137 Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42);
146 $SIG{'__WARN__'} = sub { $warning = $_[0] };
149 Devel::PPPort::warner();
150 ok("$]" >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq '');
153 Devel::PPPort::Perl_warner();
154 ok("$]" >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq '');
157 Devel::PPPort::Perl_warner_nocontext();
158 ok("$]" >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq '');
161 Devel::PPPort::ckWARN();
167 Devel::PPPort::ckWARN();
168 ok("$]" >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq '');