summaryrefslogtreecommitdiff
path: root/error.c
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2023-01-30 18:07:47 +0900
committerYusuke Endoh <mame@ruby-lang.org>2023-02-20 10:33:06 +0900
commit7d5794bad56c0af15646ecfc12c2dc1a8b8c45d9 (patch)
treebd75f73b5a741419ee8520566ea3fa331a538798 /error.c
parent0e830e6373b334a806dddb57c13f233674bd0054 (diff)
downloadruby-7d5794bad56c0af15646ecfc12c2dc1a8b8c45d9.tar.gz
error.c: Use "undefined local variable or method `...' for main"
... for the toplevel.
Diffstat (limited to 'error.c')
-rw-r--r--error.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/error.c b/error.c
index 727697542f..806f62ad35 100644
--- a/error.c
+++ b/error.c
@@ -2065,7 +2065,7 @@ name_err_mesg_to_str(VALUE obj)
mesg = ptr[NAME_ERR_MESG__MESG];
if (NIL_P(mesg)) return Qnil;
else {
- struct RString s_str, d_str;
+ struct RString s_str, c_str, d_str;
VALUE c, s, d = 0, args[4], c2;
int state = 0;
rb_encoding *usascii = rb_usascii_encoding();
@@ -2117,7 +2117,12 @@ object:
klass = CLASS_OF(obj);
if (RB_TYPE_P(klass, T_CLASS) && FL_TEST(klass, FL_SINGLETON)) {
s = FAKE_CSTR(&s_str, "");
- c = rb_any_to_s(obj);
+ if (obj == rb_vm_top_self()) {
+ c = FAKE_CSTR(&c_str, "main");
+ }
+ else {
+ c = rb_any_to_s(obj);
+ }
break;
}
else {