diff options
-rw-r--r-- | lib/Package/Stash/PP.pm | 8 | ||||
-rwxr-xr-x | t/07-edge-cases.t | 5 |
2 files changed, 6 insertions, 7 deletions
diff --git a/lib/Package/Stash/PP.pm b/lib/Package/Stash/PP.pm index 446642b..55dfddd 100644 --- a/lib/Package/Stash/PP.pm +++ b/lib/Package/Stash/PP.pm @@ -196,13 +196,7 @@ sub get_symbol { } } else { - if ($type eq 'CODE') { - # this effectively "de-vivifies" the code slot. if we don't do - # this, referencing the coderef at the end of this function - # will cause perl to auto-vivify a stub coderef in the slot, - # which isn't what we want - $self->add_symbol($variable); - } + return undef; } } diff --git a/t/07-edge-cases.t b/t/07-edge-cases.t index feec31e..cf75847 100755 --- a/t/07-edge-cases.t +++ b/t/07-edge-cases.t @@ -47,4 +47,9 @@ ok($stash->has_symbol('%added'), '%added'); my $constant = $stash->get_symbol('&FOO'); is(ref($constant), 'CODE', "expanded a constant into a coderef"); +# ensure get doesn't prevent subsequent vivification (not sure what the deal +# was here) +is(ref($stash->get_symbol('$glob')), '', "nothing yet"); +is(ref($stash->get_or_add_symbol('$glob')), 'SCALAR', "got an empty scalar"); + done_testing; |