diff options
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | t/comp/our.t | 49 |
2 files changed, 50 insertions, 0 deletions
@@ -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'); +} |