aboutsummaryrefslogtreecommitdiffstats
path: root/vm_method.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-03 08:40:11 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-30 19:12:05 +0900
commit1351374bd14d4d134726889ba195609b4f745ea6 (patch)
treece0572daee12c90e24a105b63d3cec6301ff4797 /vm_method.c
parent52ef2477e41caed01a4edc2f667306740d9b589c (diff)
downloadruby-1351374bd14d4d134726889ba195609b4f745ea6.tar.gz
Split visibility cases
Diffstat (limited to 'vm_method.c')
-rw-r--r--vm_method.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/vm_method.c b/vm_method.c
index 2b2e28e10c..d8d1552432 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -1304,10 +1304,15 @@ rb_method_boundp(VALUE klass, ID id, int ex)
}
if (me != NULL) {
- if ((ex & ~BOUND_RESPONDS) &&
- ((METHOD_ENTRY_VISI(me) == METHOD_VISI_PRIVATE) ||
- ((ex & BOUND_RESPONDS) && (METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED)))) {
- return 0;
+ if (ex & ~BOUND_RESPONDS) {
+ switch (METHOD_ENTRY_VISI(me)) {
+ case METHOD_VISI_PRIVATE:
+ return 0;
+ case METHOD_VISI_PROTECTED:
+ if (ex & BOUND_RESPONDS) return 0;
+ default:
+ break;
+ }
}
if (me->def->type == VM_METHOD_TYPE_NOTIMPLEMENTED) {