Don't warn about "ambiguous without parens" for ctrl-glob
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Mon, 16 Apr 2012 00:05:52 +0000 (01:05 +0100)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 21 May 2012 23:51:42 +0000 (16:51 -0700)
This fixes the following bogus warning [perl #112456]:

  $ perl -e 'undef *^H'
  Warning: Use of "undef" without parentheses is ambiguous at -e line 1.

Compare to the non-warning variant:

    $ perl -e 'undef *{^H}'

t/lib/warnings/toke
toke.c

index dd8dc3d..a9106fb 100644 (file)
@@ -662,6 +662,8 @@ yelp at foo line 30.
 ########
 # toke.c
 my $a = rand + 4 ;
+$a = rand *^H ;
+$a = rand $^H ;
 EXPECT
 Warning: Use of "rand" without parentheses is ambiguous at - line 2.
 ########
diff --git a/toke.c b/toke.c
index 1d18550..6cc0336 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -8892,8 +8892,6 @@ S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRL
        bracket = s;
        s++;
     }
-    else if (ck_uni)
-       check_uni();
     if (s < send) {
         if (UTF) {
             const STRLEN skip = UTF8SKIP(s);
@@ -8911,6 +8909,8 @@ S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRL
        *d = toCTRL(*s);
        s++;
     }
+    else if (ck_uni && !bracket)
+       check_uni();
     if (bracket) {
        if (isSPACE(s[-1])) {
            while (s < send) {