Ah, this is interesting. In the AOP work I've been doing, something
along these lines is a absolute must inorder to prevent method name
clashes and thus have fully reusable Aspects. My solution was to have
another scoping mechinism akin to public, private, protected, called
"local". It differs in that methods defined in the local scope are
always called locally in the context of that module, but not in the
context of any other. For instance:
class C
def x ; 1 ; end
end
class D
def y ; x ; end
local
def x ; 2 ; end
end
d = D.new
d.y #=> 2
d.x #=> 1
T.