This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
if.pm: Better failure message for 'no if' if-0.0605
authorKarl Williamson <khw@cpan.org>
Fri, 27 Mar 2015 03:46:19 +0000 (21:46 -0600)
committerKarl Williamson <khw@cpan.org>
Wed, 16 Sep 2015 02:08:19 +0000 (20:08 -0600)
It previously always said 'use if', even if 'no if' was what was
specified

dist/if/if.pm
dist/if/t/if.t

index b118302..a18f8fc 100644 (file)
@@ -1,11 +1,13 @@
 package if;
 
-$VERSION = '0.0604';
+$VERSION = '0.0605';
 
 sub work {
   my $method = shift() ? 'import' : 'unimport';
-  die "Too few arguments to 'use if' (some code returning an empty list in list context?)"
-    unless @_ >= 2;
+  unless (@_ >= 2) {
+    my $type = ($method eq 'import') ? 'use' : 'no';
+    die "Too few arguments to '$type if' (some code returning an empty list in list context?)"
+  }
   return unless shift;         # CONDITION
 
   my $p = $_[0];               # PACKAGE
@@ -102,4 +104,3 @@ based on what version of Perl is running.
 Ilya Zakharevich L<mailto:ilyaz@cpan.org>.
 
 =cut
-
index e55bca3..4a2b351 100644 (file)
@@ -1,7 +1,7 @@
 #!./perl
 
 use strict;
-use Test::More tests => 6;
+use Test::More tests => 10;
 
 my $v_plus = $] + 1;
 my $v_minus = $] - 1;
@@ -30,3 +30,11 @@ like( $@, qr/while "strict refs" in use/, 'expected error message'),
 # Use 'open' =>, since pre-5.6.0 could interpret differently
 is( (eval "use if ($v_plus > \$]), 'open' => IN => ':crlf'; 12" || 0), 12,
     '"use if" with open');
+
+is(eval "use if ($v_plus > \$])", undef,
+   "Too few args to 'use if' returns <undef>");
+like($@, qr/Too few arguments to 'use if'/, "  ... and returns correct error");
+
+is(eval "no if ($v_plus > \$])", undef,
+   "Too few args to 'no if' returns <undef>");
+like($@, qr/Too few arguments to 'no if'/, "  ... and returns correct error");