diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-14 14:56:40 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-02-14 14:56:40 +0000 |
commit | 67d0ce36f5c9405434a5a97230ca3593dbe86974 (patch) | |
tree | a8a2dfa0919de4474ca831af579f936bf4b0ba48 /parse.y | |
parent | 5aa388c23c12747fd63827e93200fa0d90a7733c (diff) |
* parse.y (reg_compile_gen): appends error message from
rb_reg_compile() to one from reg_fragment_setenc().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -8546,7 +8546,7 @@ reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options) } return; -error: + error: compile_error(PARSER_ARG "regexp encoding option '%c' differs from source encoding '%s'", c, rb_enc_name(rb_enc_get(str))); @@ -8648,12 +8648,17 @@ static VALUE reg_compile_gen(struct parser_params* parser, VALUE str, int options) { VALUE re; + VALUE err; reg_fragment_setenc(str, options); + err = rb_errinfo(); re = rb_reg_compile(str, options & RE_OPTION_MASK); if (NIL_P(re)) { - RB_GC_GUARD(re) = rb_obj_as_string(rb_errinfo()); - compile_error(PARSER_ARG "%s", RSTRING_PTR(re)); + ID mesg = rb_intern("mesg"); + VALUE m = rb_attr_get(err, mesg); + rb_str_cat(m, "\n", 1); + rb_str_append(m, rb_attr_get(rb_errinfo(), mesg)); + rb_set_errinfo(err); return Qnil; } return re; |