summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2002-08-08 19:47:44 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2002-08-08 19:47:44 +0000
commit8e7ae056e33b3389a21755f55fa95e623bcad80f (patch)
treed5a1fc5b264589f78cef03a3ea2326335e5e2a84
parent8dd4f5d2359f61079da3f00ffb623878fc66461a (diff)
downloadperl-8e7ae056e33b3389a21755f55fa95e623bcad80f.tar.gz
Fix bug #16080 : an attribute list should end at '}'
p4raw-id: //depot/perl@17704
-rw-r--r--t/op/attrs.t8
-rw-r--r--toke.c2
2 files changed, 8 insertions, 2 deletions
diff --git a/t/op/attrs.t b/t/op/attrs.t
index dc604f31af..264de8a510 100644
--- a/t/op/attrs.t
+++ b/t/op/attrs.t
@@ -8,7 +8,7 @@ BEGIN {
require './test.pl';
}
-plan tests => 37;
+plan tests => 39;
$SIG{__WARN__} = sub { die @_ };
@@ -50,6 +50,12 @@ eval_ok 'my ($x,$y) : ;';
eval 'my ($x,$y) : plugh;';
like $@, qr/^Invalid SCALAR attribute: ["']?plugh["']? at/;
+# bug #16080
+eval '{my $x : plugh}';
+like $@, qr/^Invalid SCALAR attribute: ["']?plugh["']? at/;
+eval '{my ($x,$y) : plugh(})}';
+like $@, qr/^Invalid SCALAR attribute: ["']?plugh\(}\)["']? at/;
+
sub A::MODIFY_SCALAR_ATTRIBUTES { return }
eval 'my A $x : plugh;';
like $@, qr/^SCALAR package attribute may clash with future reserved word: ["']?plugh["']? at/;
diff --git a/toke.c b/toke.c
index 761f0e7c58..6bacaeaf93 100644
--- a/toke.c
+++ b/toke.c
@@ -3049,7 +3049,7 @@ Perl_yylex(pTHX)
break; /* require real whitespace or :'s */
}
tmp = (PL_expect == XOPERATOR ? '=' : '{'); /*'}(' for vi */
- if (*s != ';' && *s != tmp && (tmp != '=' || *s != ')')) {
+ if (*s != ';' && *s != '}' && *s != tmp && (tmp != '=' || *s != ')')) {
char q = ((*s == '\'') ? '"' : '\'');
/* If here for an expression, and parsed no attrs, back off. */
if (tmp == '=' && !attrs) {