diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-28 18:04:39 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-28 18:04:39 +0000 |
commit | 34387d1a0273329ec0c9cf02c098b12552f4302b (patch) | |
tree | f89eba7a07fbc4e4889813f3fbc555125a5f1810 /parse.y | |
parent | ff0147a92052fac2263c39092385014d241c6ca7 (diff) | |
download | ruby-34387d1a0273329ec0c9cf02c098b12552f4302b.tar.gz |
* parse.y (reg_fragment_setenc_gen): US-ASCII script special code.
* parse.y (reg_fragment_check_len, reg_compile_gen): no need such
trick.
[ruby-dev:33399]
* test/ruby/test_m17n.rb (test_regexp_usacii_literal): add tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -8501,6 +8501,15 @@ reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options) } rb_enc_associate(str, rb_ascii8bit_encoding()); } + else if (parser->enc == rb_usascii_encoding()) { + if (rb_enc_str_coderange(str) != ENC_CODERANGE_7BIT) { + /* raise in re.c */ + rb_enc_associate(str, rb_usascii_encoding()); + } + else { + rb_enc_associate(str, rb_ascii8bit_encoding()); + } + } return; error: @@ -8513,10 +8522,6 @@ static void reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options) { VALUE err; - if (!RE_OPTION_ENCODING_IDX(options) && - parser->enc == rb_usascii_encoding()) { - options |= RE_OPTION_ARG_ENCODING_NONE; - } reg_fragment_setenc_gen(parser, str, options); err = rb_reg_check_preprocess(str); if (err != Qnil) { @@ -8610,10 +8615,6 @@ reg_compile_gen(struct parser_params* parser, VALUE str, int options) { VALUE re; - if (!RE_OPTION_ENCODING_IDX(options) && - parser->enc == rb_usascii_encoding()) { - options |= RE_OPTION_ARG_ENCODING_NONE; - } reg_fragment_setenc(str, options); re = rb_reg_compile(str, options & RE_OPTION_MASK); if (NIL_P(re)) { |