diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-27 07:38:23 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-27 07:38:23 +0000 |
commit | fd640aec82f65134d589d9603d0ed669e90ebb60 (patch) | |
tree | cbb9ada083fba81a8e10338d47db0010e7b4ae0c | |
parent | ce2b982cd2c839fa736375e7906057785f4f3738 (diff) | |
download | ruby-fd640aec82f65134d589d9603d0ed669e90ebb60.tar.gz |
* re.c (rb_reg_s_union): show encodings in error message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | re.c | 23 |
2 files changed, 21 insertions, 6 deletions
@@ -1,3 +1,7 @@ +Thu Dec 27 16:37:06 2007 Tanaka Akira <akr@fsij.org> + + * re.c (rb_reg_s_union): show encodings in error message. + Thu Dec 27 15:25:16 2007 Tanaka Akira <akr@fsij.org> * encoding.c (rb_enc_codelen): show codepoint in error message. @@ -2631,13 +2631,15 @@ rb_reg_s_union(VALUE self, VALUE args0) if (!has_ascii_incompat) has_ascii_incompat = enc; else if (has_ascii_incompat != enc) - rb_raise(rb_eArgError, "regexp encodings differ"); + rb_raise(rb_eArgError, "incompatible encodings: %s and %s", + rb_enc_name(has_ascii_incompat), rb_enc_name(enc)); } else if (rb_reg_fixed_encoding_p(v)) { if (!has_ascii_compat_fixed) has_ascii_compat_fixed = enc; else if (has_ascii_compat_fixed != enc) - rb_raise(rb_eArgError, "regexp encodings differ"); + rb_raise(rb_eArgError, "incompatible encodings: %s and %s", + rb_enc_name(has_ascii_compat_fixed), rb_enc_name(enc)); } else { has_asciionly = 1; @@ -2652,7 +2654,8 @@ rb_reg_s_union(VALUE self, VALUE args0) if (!has_ascii_incompat) has_ascii_incompat = enc; else if (has_ascii_incompat != enc) - rb_raise(rb_eArgError, "regexp encodings differ"); + rb_raise(rb_eArgError, "incompatible encodings: %s and %s", + rb_enc_name(has_ascii_incompat), rb_enc_name(enc)); } else if (rb_enc_str_asciionly_p(e)) { has_asciionly = 1; @@ -2661,12 +2664,20 @@ rb_reg_s_union(VALUE self, VALUE args0) if (!has_ascii_compat_fixed) has_ascii_compat_fixed = enc; else if (has_ascii_compat_fixed != enc) - rb_raise(rb_eArgError, "regexp encodings differ"); + rb_raise(rb_eArgError, "incompatible encodings: %s and %s", + rb_enc_name(has_ascii_compat_fixed), rb_enc_name(enc)); } v = rb_reg_s_quote(Qnil, e); } - if (has_ascii_incompat && (has_asciionly || has_ascii_compat_fixed)) { - rb_raise(rb_eArgError, "regexp encodings differ"); + if (has_ascii_incompat) { + if (has_asciionly) { + rb_raise(rb_eArgError, "ASCII incompatible encoding: %s", + rb_enc_name(has_ascii_incompat)); + } + if (has_ascii_compat_fixed) { + rb_raise(rb_eArgError, "incompatible encodings: %s and %s", + rb_enc_name(has_ascii_incompat), rb_enc_name(has_ascii_compat_fixed)); + } } rb_str_append(source, v); |