add TODO tests for slow our() declaration
Yitzchak Scott-Thoennes [Thu, 19 Sep 2002 22:34:01 +0000 (15:34 -0700)]
Subject: Re: [perl #17376] Bug Report - our(%)
Message-ID: <JNri9gzkgSBB092yn@efn.org>

p4raw-id: //depot/perl@17921

MANIFEST
t/comp/our.t [new file with mode: 0644]

index 6c4c5bd..7b7201c 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2346,6 +2346,7 @@ t/comp/cpp.t                      See if C preprocessor works
 t/comp/decl.t                  See if declarations work
 t/comp/hints.t                 See if %^H works
 t/comp/multiline.t             See if multiline strings work
+t/comp/our.t                   Tests for our declaration
 t/comp/package.t               See if packages work
 t/comp/proto.t                 See if function prototypes work
 t/comp/redef.t                 See if we get correct warnings on redefined subs
diff --git a/t/comp/our.t b/t/comp/our.t
new file mode 100644 (file)
index 0000000..c381c41
--- /dev/null
@@ -0,0 +1,49 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+print "1..6\n";
+
+{
+    package TieAll;
+    # tie, track, and report what calls are made
+    my @calls;
+    sub AUTOLOAD {
+        for ($AUTOLOAD =~ /TieAll::(.*)/) {
+            if (/TIE/) { return bless {} }
+            elsif (/calls/) { return join ',', splice @calls }
+            else {
+               push @calls, $_;
+              # FETCHSIZE doesn't like undef
+              # if FIRSTKEY, see if NEXTKEY is also called
+               return 1 if /FETCHSIZE|FIRSTKEY/;
+               return;
+            }
+        }
+    }
+}
+
+tie $x, 'TieAll';
+tie @x, 'TieAll';
+tie %x, 'TieAll';
+
+{our $x;}
+is(TieAll->calls, '', 'our $x has no runtime effect');
+{our ($x);}
+is(TieAll->calls, '', 'our ($x) has no runtime effect');
+{our %x;}
+is(TieAll->calls, '', 'our %x has no runtime effect');
+
+{
+    local $TODO = 'perl #17376';
+    {our (%x);}
+    is(TieAll->calls, '', 'our (%x) has no runtime effect');
+    {our @x;}
+    is(TieAll->calls, '', 'our @x has no runtime effect');
+    {our (@x);}
+    is(TieAll->calls, '', 'our (@x) has no runtime effect');
+}