Hello --

This question grows out of playing around with a question from Clemens W.,
although I'm afraid it doesn't shed any light on Clemens's question...
just more darkness...

# Define two new methods for Module, one eval'd, one not:

  eval('class Module; def test(); end; end;');

  class Module
    private
    def thing
    end
  end

# Test both methods for respond_to? and for being private:

  if Module.respond_to?(:test) then puts "responds to test"
  else puts "does not respond to test"
  end

  if Module.private_methods.include? "test" then puts "test is private"
  else puts "test is not private"
  end

  if Module.respond_to?(:thing) then puts "responds to thing"
  else puts "does not respond to thing"
  end

  if Module.private_methods.include? "thing" then puts "thing is private"
  else puts "thing is not private"
  end

__END__

Output:

  responds to test
  test is private
  does not respond to thing
  thing is private


And various other permutations also produce asymmetrical results.  (I won't
inline all of them -- available upon request :-)

I can get it symmetrical by putting "private;" in the eval -- but the thing
is it claims it *is* private anyway....

Rays of light welcome.


David

-- 
David Alan Black
home: dblack / candle.superlink.net
work: blackdav / shu.edu
Web:  http://pirate.shu.edu/~blackdav