aboutsummaryrefslogtreecommitdiffstats
path: root/error.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-20 23:49:31 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-20 23:49:31 +0000
commitf3dac884d3c7835a74762238f820f88b332d95c6 (patch)
treefdd4d99a31b59f1bd4f08b5ec7d0b7537339a1c8 /error.c
parentfeb39eac80be5664a15474642245c01005b874e6 (diff)
downloadruby-f3dac884d3c7835a74762238f820f88b332d95c6.tar.gz
* compile.c (iseq_compile_each): add debug information to NODE_STR
strings as default. [Feature #11725] * insns.def (freezestring): add new instruction to support adding debug information for dynamically constracted strings. * compile.c (iseq_compile_each): support adding debug information for NODE_DSTR with freezestring instruction. * error.c (rb_error_frozen): change the debug information ID name id_debug_created_info and this field should have a 2 element array containing path and line information. * defs/id.def: ditto. * test/ruby/test_rubyoptions.rb: catch up this fix. * test/ruby/test_iseq.rb: now frozen strings are not same. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'error.c')
-rw-r--r--error.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/error.c b/error.c
index 3dbdb5240f..816d704a1e 100644
--- a/error.c
+++ b/error.c
@@ -2241,12 +2241,13 @@ rb_error_frozen(const char *what)
void
rb_error_frozen_object(VALUE frozen_obj)
{
- VALUE path, line;
- const ID created_path = id_debug_created_path;
- const ID created_line = id_debug_created_line;
+ VALUE debug_info;
+ const ID created_info = id_debug_created_info;
+
+ if (!NIL_P(debug_info = rb_attr_get(frozen_obj, created_info))) {
+ VALUE path = rb_ary_entry(debug_info, 0);
+ VALUE line = rb_ary_entry(debug_info, 1);
- if (!NIL_P(path = rb_attr_get(frozen_obj, created_path)) &&
- !NIL_P(line = rb_attr_get(frozen_obj, created_line))) {
rb_raise(rb_eRuntimeError, "can't modify frozen %"PRIsVALUE", created at %"PRIsVALUE":%"PRIsVALUE,
CLASS_OF(frozen_obj), path, line);
}