The tokenizer should expect an operator after qw().
Rafael Garcia-Suarez [Tue, 24 May 2005 11:22:21 +0000 (11:22 +0000)]
This fixes [perl #35885] qw and x operators doesn't mix

p4raw-id: //depot/perl@24560

t/op/repeat.t
toke.c

index e728413..d1083e8 100755 (executable)
@@ -6,7 +6,7 @@ BEGIN {
 }
 
 require './test.pl';
-plan(tests => 41);
+plan(tests => 42);
 
 # compile time
 
@@ -151,3 +151,6 @@ is(77, scalar ((1,7)x2),    'stack truncation');
     }
     is($y, 'abcdabcd');
 }
+
+# [perl #35885]
+is( (join ',', (qw(a b c) x 3)), 'a,b,c,a,b,c,a,b,c', 'x on qw produces list' );
diff --git a/toke.c b/toke.c
index d496f48..874f8ab 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -4956,6 +4956,7 @@ Perl_yylex(pTHX)
            s = scan_str(s,FALSE,FALSE);
            if (!s)
                missingterm((char*)0);
+           PL_expect = XOPERATOR;
            force_next(')');
            if (SvCUR(PL_lex_stuff)) {
                OP *words = Nullop;