From e72fbb7b2104fb27c7255d46338cf79354fea00b Mon Sep 17 00:00:00 2001 From: yugui Date: Sun, 30 Nov 2008 09:25:14 +0000 Subject: merges r20391 and r20398 from trunk into ruby_1_9_1. * regparse.c (is_invalid_quantifier_target): Perl and old Ruby accepts quantifier on anchors. [ruby-core:20161] git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_9_1@20426 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ regparse.c | 4 ++++ test/ruby/test_regexp.rb | 4 +++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 51c2c3590..4b82b9f7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Nov 29 19:19:32 2008 Yukihiro Matsumoto + + * regparse.c (is_invalid_quantifier_target): Perl and old Ruby + accepts quantifier on anchors. [ruby-core:20161] + Sat Nov 29 00:18:30 2008 Yukihiro Matsumoto * cont.c (fiber_alloc): separate allocation and initialization. diff --git a/regparse.c b/regparse.c index c7b42eaf7..8a02966de 100644 --- a/regparse.c +++ b/regparse.c @@ -2112,6 +2112,7 @@ conv_backslash_value(int c, ScanEnv* env) return c; } +#if 0 /* no invalid quantifier */ static int is_invalid_quantifier_target(Node* node) { @@ -2143,6 +2144,9 @@ is_invalid_quantifier_target(Node* node) } return 0; } +#else +#define is_invalid_quantifier_target(node) 0 +#endif /* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */ static int diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb index fdfef04b4..d6441c957 100644 --- a/test/ruby/test_regexp.rb +++ b/test/ruby/test_regexp.rb @@ -604,11 +604,13 @@ class TestRegexp < Test::Unit::TestCase check(/\Aa{0}+\z/, "", %w(a aa aab)) check(/\Aa{1}+\z/, %w(a aa), ["", "aab"]) check(/\Aa{1,2}b{1,2}\z/, %w(ab aab abb aabb), ["", "aaabb", "abbb"]) + check(/(?!x){0,1}/, [ ['', 'ab'], ['', ''] ]) + check(/c\z{0,1}/, [ ['c', 'abc'], ['c', 'cab']], ['abd']) + check(/\A{0,1}a/, [ ['a', 'abc'], ['a', '____abc']], ['bcd']) failcheck('.{100001}') failcheck('.{0,100001}') failcheck('.{1,0}') failcheck('{0}') - failcheck('(?!x){0,1}') end def test_parse_comment -- cgit