Feature #16615

Updated by ted (Ted Johansson) almost 2 years ago

Given a method `.bar`, which defines an instance method `#bar` on a class, and returns the defined method's name as a symbol (`:baz`). 

 class Foo 


   bar :baz # On evaluation defines a method and returns its name. 
   # In current Ruby, that method will be public. The suggested 
   # behaviour is to make it private, since the class method 
   # which defines the instance method is in the private scope. 
   bar :baz 

 it would be neat if the dynamically defined instance method respected the scope in which its definition originated. (In this particular case `private`.) 

 Essentially the request is to extend the special powers of `attr_*` (being able to define methods that honour visibility scopes) to any method. 

 Note: I am aware that inline access scopes already work for dynamically defined methods, as they merely accept a symbol as an argument. 

 Edit: Changed `macro` to `bar` so people don't get hung up on the name of the method (which has no importance to the proposal.)