From: shevegen@... Date: 2019-08-23T23:06:47+00:00 Subject: [ruby-core:94515] [Ruby master Feature#16123] Allow calling a private method with `self.` Issue #16123 has been updated by shevegen (Robert A. Heiler). I may not completely understand the issue description. What is the inconsistency? (That is a honest question, by the way; I am not fully understanding the issue domain.) I am not even entirely sure what a private attribute writer is either; can we use these terms when we can use e. g. send() at all times? I may not understand this, but I assume you can get the value of any method via .send() and assign it to the local variable? ---------------------------------------- Feature #16123: Allow calling a private method with `self.` https://bugs.ruby-lang.org/issues/16123#change-80951 * Author: dylants (Dylan Thacker-Smith) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- ## Problem There is an inconsistency between calling a private attribute writer being allowed with `self.value =` syntax and `self.value` not being allowed on a private attribute writer. Calling a private method in this way can be useful when trying to assign the return value of this private method to a local variable with the same name. ## Solution The attached patch handles this by compiling the calling into a function call by using the `VM_CALL_FCALL` flag, so it is as if the call were made without the `self.` prefix, except it won't be confused with local variables at the VM instruction level. It is also compiled like an assignment call, except I didn't use the `COMPILE_RECV` macro, since that would remove the `CHECK` macro usage around the `COMPILE` line. ---Files-------------------------------- 0001-Allow-calling-a-private-method-with-self.diff.txt (3.28 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: