summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--parse.y13
-rw-r--r--test/ruby/test_string.rb7
3 files changed, 13 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fd567aaad..ace72e1045 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/parse.y b/parse.y
index a167d8c087..064e977e9a 100644
--- a/parse.y
+++ b/parse.y
@@ -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