diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2021-08-07 14:48:32 +0100 |
---|---|---|
committer | Paul Evans <leonerd@leonerd.org.uk> | 2021-09-10 20:08:40 +0100 |
commit | 1d0d673f78c5c03a0f3c97ceeb7686e9388e0611 (patch) | |
tree | 388abd531263b971a0bfa2762402a33a3c0148ca /ext/Devel-Peek | |
parent | 914bb57489325d34ddbb7c0557c53df7baa84d86 (diff) | |
download | perl-1d0d673f78c5c03a0f3c97ceeb7686e9388e0611.tar.gz |
Add SvIsBOOL() macro to test for SVs being boolean-intent
These are identified as being static shared COW strings whose string
buffer points directly at PL_Yes / PL_No
Define sv_setbool() and sv_setbool_mg() macros
Use sv_setbool() where appropriate
Have sv_dump() annotate when an SV's PV buffer is one of the PL_(Yes|No) special booleans
Diffstat (limited to 'ext/Devel-Peek')
-rw-r--r-- | ext/Devel-Peek/t/Peek.t | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/ext/Devel-Peek/t/Peek.t b/ext/Devel-Peek/t/Peek.t index 63a002879a..63face8cd1 100644 --- a/ext/Devel-Peek/t/Peek.t +++ b/ext/Devel-Peek/t/Peek.t @@ -240,6 +240,30 @@ do_test('reference to scalar', COW_REFCNT = 1 '); +do_test('immediate boolean', + !!0, +'SV = PVNV\\($ADDR\\) at $ADDR + REFCNT = \d+ + FLAGS = \\(.*\\) + IV = 0 + NV = 0 + PV = $ADDR "" \[BOOL PL_No\] + CUR = 0 + LEN = 0 +') if $] >= 5.035004; + +do_test('assignment of boolean', + do { my $tmp = !!1 }, +'SV = PVNV\\($ADDR\\) at $ADDR + REFCNT = \d+ + FLAGS = \\(.*\\) + IV = 1 + NV = 1 + PV = $ADDR "1" \[BOOL PL_Yes\] + CUR = 1 + LEN = 0 +') if $] >= 5.035004; + my $c_pattern; if ($type eq 'N') { $c_pattern = ' |