diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-02 14:46:25 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-02 14:46:25 +0000 |
commit | 306cf3ac0328cb52fad1371115aa5c3ab226b982 (patch) | |
tree | f48d4853223b8d310841e3cfa71155997220b73d | |
parent | 57d06d7b3f019bf3823548630da41c785828da22 (diff) | |
download | ruby-306cf3ac0328cb52fad1371115aa5c3ab226b982.tar.gz |
parse.y: valid suffix word only
* parse.y (parser_str_options): use valid suffix word only, as well as
numeric literal, for the backward comatibility.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 13 | ||||
-rw-r--r-- | test/ruby/test_string.rb | 7 |
3 files changed, 13 insertions, 12 deletions
@@ -1,3 +1,8 @@ +Mon Sep 2 23:46:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (parser_str_options): use valid suffix word only, as well as + numeric literal, for the backward comatibility. + Mon Sep 2 22:55:59 2013 Tanaka Akira <akr@fsij.org> * bignum.c (ISDIGIT): Unused macro removed. @@ -6000,8 +6000,8 @@ static int parser_str_options(struct parser_params *parser) { int c, options = 0; + const char *save_p = lex_p; - newtok(); while (c = nextc(), ISALPHA(c)) { switch (c) { #if STR_OPTION_FROZEN @@ -6015,18 +6015,11 @@ parser_str_options(struct parser_params *parser) break; #endif default: - tokadd(c); - break; + lex_p = save_p; + return 0; } } pushback(c); - - if (toklen()) { - tokfix(); - compile_error(PARSER_ARG "unknown string option%s - %s", - toklen() > 1 ? "s" : "", tok()); - } - return options; } diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb index 2e2872b9f8..5fdbaa61f4 100644 --- a/test/ruby/test_string.rb +++ b/test/ruby/test_string.rb @@ -2194,11 +2194,14 @@ class TestString < Test::Unit::TestCase end def test_unknown_string_option - assert_raises(SyntaxError) do + str = nil + assert_nothing_raised(SyntaxError) do eval(%{ - "hello"x + str = begin"hello"end }) end + assert_equal "hello", str + assert_not_predicate str, :frozen? end def test_frozen_string |