rb_method_name_error: do not goto into a branch

I'm not necessarily against every goto in general, but jumping into a
branch is definitely a bad idea.  Better refactor.
This commit is contained in:
卜部昌平 2020-06-16 12:00:49 +09:00
parent 2390a8bd2e
commit 8b9b51bb3b
Notes: git 2020-06-29 11:06:55 +09:00

6
proc.c
View File

@ -1865,7 +1865,7 @@ rb_method_name_error(VALUE klass, VALUE str)
{ {
#define MSG(s) rb_fstring_lit("undefined method `%1$s' for"s" `%2$s'") #define MSG(s) rb_fstring_lit("undefined method `%1$s' for"s" `%2$s'")
VALUE c = klass; VALUE c = klass;
VALUE s; VALUE s = Qundef;
if (FL_TEST(c, FL_SINGLETON)) { if (FL_TEST(c, FL_SINGLETON)) {
VALUE obj = rb_ivar_get(klass, attached); VALUE obj = rb_ivar_get(klass, attached);
@ -1878,13 +1878,11 @@ rb_method_name_error(VALUE klass, VALUE str)
default: default:
break; break;
} }
goto normal_class;
} }
else if (RB_TYPE_P(c, T_MODULE)) { else if (RB_TYPE_P(c, T_MODULE)) {
s = MSG(" module"); s = MSG(" module");
} }
else { if (s == Qundef) {
normal_class:
s = MSG(" class"); s = MSG(" class");
} }
rb_name_err_raise_str(s, c, str); rb_name_err_raise_str(s, c, str);