summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Pit <vince@profvince.com>2009-11-28 13:27:02 +0100
committerVincent Pit <vince@profvince.com>2009-11-28 13:27:02 +0100
commit17c59fdf7540adaf656e96fe6d48b58dab391dc0 (patch)
tree8ebc8c43e0cc725ea00bee7431183cac05cbe5fc
parent162177c1aed1991639f7f0da64e918c034e1148a (diff)
downloadperl-17c59fdf7540adaf656e96fe6d48b58dab391dc0.tar.gz
Allow a closing brace after an "use VERSION"
This fixes [perl #70884] : use VERSION in BLOCK without semicolon -> syntax error
-rwxr-xr-xt/comp/use.t14
-rw-r--r--toke.c3
2 files changed, 15 insertions, 2 deletions
diff --git a/t/comp/use.t b/t/comp/use.t
index fade9fec1a..c9b76d79a4 100755
--- a/t/comp/use.t
+++ b/t/comp/use.t
@@ -6,7 +6,7 @@ BEGIN {
$INC{"feature.pm"} = 1; # so we don't attempt to load feature.pm
}
-print "1..69\n";
+print "1..73\n";
# Can't require test.pl, as we're testing the use/require mechanism here.
@@ -62,6 +62,18 @@ sub isnt ($$;$) {
_ok ('isnt', @_);
}
+eval "use 5"; # implicit semicolon
+is ($@, '');
+
+eval "use 5;";
+is ($@, '');
+
+eval "{use 5}"; # [perl #70884]
+is ($@, '');
+
+eval "{use 5 }"; # [perl #70884]
+is ($@, '');
+
# new style version numbers
eval q{ use v5.5.630; };
diff --git a/toke.c b/toke.c
index 173ded4ddc..dfcb034b0f 100644
--- a/toke.c
+++ b/toke.c
@@ -3807,7 +3807,8 @@ S_tokenize_use(pTHX_ int is_use, char *s) {
s = SKIPSPACE1(s);
if (isDIGIT(*s) || (*s == 'v' && isDIGIT(s[1]))) {
s = force_version(s, TRUE);
- if (*s == ';' || (s = SKIPSPACE1(s), *s == ';')) {
+ if (*s == ';' || *s == '}'
+ || (s = SKIPSPACE1(s), (*s == ';' || *s == '}'))) {
start_force(PL_curforce);
NEXTVAL_NEXTTOKE.opval = NULL;
force_next(WORD);