summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-28 18:04:39 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-28 18:04:39 +0000
commit34387d1a0273329ec0c9cf02c098b12552f4302b (patch)
treef89eba7a07fbc4e4889813f3fbc555125a5f1810 /parse.y
parentff0147a92052fac2263c39092385014d241c6ca7 (diff)
* 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.y17
1 files changed, 9 insertions, 8 deletions
diff --git a/parse.y b/parse.y
index a6fed50670..3718d99a2b 100644
--- a/parse.y
+++ b/parse.y
@@ -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)) {