G_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore
authorNiko Tyni <ntyni@debian.org>
Sat, 6 Nov 2010 13:18:15 +0000 (06:18 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 6 Nov 2010 13:29:35 +0000 (06:29 -0700)
Commit 2f8edad0d37e91319b6ba10b3745327ea49c179 made G_ARRAY
equal to G_SCALAR | G_VOID, contrary to perlcall.pod.

Bring the documentation up to date and add a test to prevent a similar
(although unlikely) accident in the future.

ext/XS-APItest/t/call.t
pod/perlcall.pod

index caa86c4..fd968b8 100644 (file)
@@ -11,7 +11,7 @@ use strict;
 
 BEGIN {
     require '../../t/test.pl';
-    plan(435);
+    plan(436);
     use_ok('XS::APItest')
 };
 
@@ -149,6 +149,15 @@ for my $test (
 
 };
 
+{
+       # these are the ones documented in perlcall.pod
+       my @flags = (G_DISCARD, G_NOARGS, G_EVAL, G_KEEPERR);
+       my $mask = 0;
+       $mask |= $_ for (@flags);
+       is(unpack('%32b*', pack('l', $mask)), @flags,
+         "G_DISCARD and the rest are separate bits");
+}
+
 foreach my $inx ("", "aabbcc\n", [qw(aa bb cc)]) {
     foreach my $outx ("", "xxyyzz\n", [qw(xx yy zz)]) {
        my $warn;
index 1694848..e32e77e 100644 (file)
@@ -121,10 +121,9 @@ been warned.
 
 =head1 FLAG VALUES
 
-The C<flags> parameter in all the I<call_*> functions is a bit mask
-which can consist of any combination of the symbols defined below,
-OR'ed together.
-
+The C<flags> parameter in all the I<call_*> functions is one of G_VOID,
+G_SCALAR, or G_ARRAY, which indicate the call context, OR'ed together
+with a bit mask of any combination of the other G_* symbols defined below.
 
 =head2  G_VOID