This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Devel::Peek: test 2-arg form of Dump
[perl5.git] / ext / Devel-Peek / t / Peek.t
index 80a6fb0..425268a 100644 (file)
@@ -362,6 +362,7 @@ do_test('reference to named subroutine without prototype',
     OUTSIDE = $ADDR \\(MAIN\\)');
 
 if ($] >= 5.011) {
+# note the conditionals on ENGINE and INTFLAGS were introduced in 5.19.9
 do_test('reference to regexp',
         qr(tic),
 'SV = $RV\\($ADDR\\) at $ADDR
@@ -380,7 +381,8 @@ do_test('reference to regexp',
 '
     COMPFLAGS = 0x0 \(\)
     EXTFLAGS = 0x680000 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\)
-    INTFLAGS = 0x0
+(?:    ENGINE = $ADDR \(STANDARD\)
+)?    INTFLAGS = 0x0(?: \(\))?
     NPARENS = 0
     LASTPAREN = 0
     LASTCLOSEPAREN = 0
@@ -392,8 +394,8 @@ do_test('reference to regexp',
     SUBOFFSET = 0
     SUBCOFFSET = 0
     SUBBEG = 0x0
-    ENGINE = $ADDR
-    MOTHER_RE = $ADDR'
+(?:    ENGINE = $ADDR
+)?    MOTHER_RE = $ADDR'
 . ($] < 5.019003 ? '' : '
     SV = REGEXP\($ADDR\) at $ADDR
       REFCNT = 2
@@ -402,7 +404,8 @@ do_test('reference to regexp',
       CUR = 8
       COMPFLAGS = 0x0 \(\)
       EXTFLAGS = 0x680000 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\)
-      INTFLAGS = 0x0
+(?:      ENGINE = $ADDR \(STANDARD\)
+)?      INTFLAGS = 0x0(?: \(\))?
       NPARENS = 0
       LASTPAREN = 0
       LASTCLOSEPAREN = 0
@@ -414,8 +417,8 @@ do_test('reference to regexp',
       SUBOFFSET = 0
       SUBCOFFSET = 0
       SUBBEG = 0x0
-      ENGINE = $ADDR
-      MOTHER_RE = 0x0
+(?:    ENGINE = $ADDR
+)?      MOTHER_RE = 0x0
       PAREN_NAMES = 0x0
       SUBSTRS = $ADDR
       PPRIVATE = $ADDR
@@ -818,6 +821,7 @@ do_test('ENAME on a stash',
     FLAGS = \\(OOK,SHAREKEYS\\)
     IV = 1                                     # $] < 5.009
     NV = $FLOAT                                        # $] < 5.009
+    AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR
     KEYS = 0
     FILL = 0 \(cached = 0\)
@@ -842,6 +846,7 @@ do_test('ENAMEs on a stash',
     FLAGS = \\(OOK,SHAREKEYS\\)
     IV = 1                                     # $] < 5.009
     NV = $FLOAT                                        # $] < 5.009
+    AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR
     KEYS = 0
     FILL = 0 \(cached = 0\)
@@ -868,6 +873,7 @@ do_test('ENAMEs on a stash with no NAME',
     FLAGS = \\(OOK,OVERLOAD,SHAREKEYS\\)       # $] >=5.017
     IV = 1                                     # $] < 5.009
     NV = $FLOAT                                        # $] < 5.009
+    AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR
     KEYS = 0
     FILL = 0 \(cached = 0\)
@@ -920,6 +926,7 @@ do_test('small hash after keys',
     FLAGS = \\(PADMY,OOK,SHAREKEYS\\)
     IV = 1                                     # $] < 5.009
     NV = $FLOAT                                        # $] < 5.009
+    AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR  \\(0:[67],.*\\)
     hash quality = [0-9.]+%
     KEYS = 2
@@ -951,6 +958,7 @@ do_test('small hash after keys and scalar',
     FLAGS = \\(PADMY,OOK,SHAREKEYS\\)
     IV = 1                                     # $] < 5.009
     NV = $FLOAT                                        # $] < 5.009
+    AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR  \\(0:[67],.*\\)
     hash quality = [0-9.]+%
     KEYS = 2
@@ -983,6 +991,7 @@ do_test('large hash',
     FLAGS = \\(PADMY,OOK,SHAREKEYS\\)
     IV = 1                                     # $] < 5.009
     NV = $FLOAT                                        # $] < 5.009
+    AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR  \\(0:\d+,.*\\)
     hash quality = \d+\\.\d+%
     KEYS = 1000
@@ -1021,6 +1030,23 @@ SV = PVAV\($ADDR\) at $ADDR
     FLAGS = \(IOK,pIOK\)
     IV = 3
 ARRAY
+
+do_test('Dump @array,1', '@array,1', <<'ARRAY', '', '', 1);
+SV = PVAV\($ADDR\) at $ADDR
+  REFCNT = 1
+  FLAGS = \(\)
+  ARRAY = $ADDR
+  FILL = 2
+  MAX = 3
+  ARYLEN = 0x0
+  FLAGS = \(REAL\)
+  Elt No. 0
+  SV = IV\($ADDR\) at $ADDR
+    REFCNT = 1
+    FLAGS = \(IOK,pIOK\)
+    IV = 1
+ARRAY
+
 %hash = 1..2;
 do_test('Dump %hash', '%hash', <<'HASH', '', '', 1);
 SV = PVHV\($ADDR\) at $ADDR
@@ -1037,6 +1063,7 @@ SV = PVHV\($ADDR\) at $ADDR
     FLAGS = \(IOK,pIOK\)
     IV = 2
 HASH
+
 $_ = "hello";
 do_test('rvalue substr', 'substr $_, 1, 2', <<'SUBSTR', '', '', 1);
 SV = PV\($ADDR\) at $ADDR
@@ -1198,7 +1225,7 @@ unless ($Config{useithreads}) {
     pass "no crash with DeadCode";
     close OUT;
 }
-
+# note the conditionals on ENGINE and INTFLAGS were introduced in 5.19.9
 do_test('UTF-8 in a regular expression',
         qr/\x{100}/,
 'SV = IV\($ADDR\) at $ADDR
@@ -1213,7 +1240,8 @@ do_test('UTF-8 in a regular expression',
     STASH = $ADDR      "Regexp"
     COMPFLAGS = 0x0 \(\)
     EXTFLAGS = 0x680040 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\)
-    INTFLAGS = 0x0
+(?:    ENGINE = $ADDR \(STANDARD\)
+)?    INTFLAGS = 0x0(?: \(\))?
     NPARENS = 0
     LASTPAREN = 0
     LASTCLOSEPAREN = 0
@@ -1225,8 +1253,8 @@ do_test('UTF-8 in a regular expression',
     SUBOFFSET = 0
     SUBCOFFSET = 0
     SUBBEG = 0x0
-    ENGINE = $ADDR
-    MOTHER_RE = $ADDR'
+(?:    ENGINE = $ADDR
+)?    MOTHER_RE = $ADDR'
 . ($] < 5.019003 ? '' : '
     SV = REGEXP\($ADDR\) at $ADDR
       REFCNT = 2
@@ -1235,7 +1263,8 @@ do_test('UTF-8 in a regular expression',
       CUR = 13
       COMPFLAGS = 0x0 \(\)
       EXTFLAGS = 0x680040 \(CHECK_ALL,USE_INTUIT_NOML,USE_INTUIT_ML\)
-      INTFLAGS = 0x0
+(?:      ENGINE = $ADDR \(STANDARD\)
+)?      INTFLAGS = 0x0(?: \(\))?
       NPARENS = 0
       LASTPAREN = 0
       LASTCLOSEPAREN = 0
@@ -1247,8 +1276,8 @@ do_test('UTF-8 in a regular expression',
       SUBOFFSET = 0
       SUBCOFFSET = 0
       SUBBEG = 0x0
-      ENGINE = $ADDR
-      MOTHER_RE = 0x0
+(?:    ENGINE = $ADDR
+)?      MOTHER_RE = 0x0
       PAREN_NAMES = 0x0
       SUBSTRS = $ADDR
       PPRIVATE = $ADDR
@@ -1268,6 +1297,7 @@ do_test('UTF-8 in a regular expression',
   my $base_count = Devel::Peek::SvREFCNT(%hash);
   my $ref = \%hash;
   is(Devel::Peek::SvREFCNT(%hash), $base_count + 1, "SvREFCNT on non-scalar");
+  ok(!eval { &Devel::Peek::SvREFCNT(1) }, "requires prototype");
 }
 {
 # utf8 tests