summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST1
-rw-r--r--t/comp/our.t49
2 files changed, 50 insertions, 0 deletions
diff --git a/MANIFEST b/MANIFEST
index 6c4c5bd9d0..7b7201c95b 100644
--- 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
index 0000000000..c381c413ff
--- /dev/null
+++ b/t/comp/our.t
@@ -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');
+}