| Subject: | Re: warning: toplevel constant XX referenced by YY::XX | |
|---|---|---|
| From: | Thomas Sondergaard (tho...@FirstNameGoesHereSondergaard.com) | |
| Date: | Sep 4, 2003 8:45:47 am | |
| List: | org.ruby-lang.ruby-talk | |
Refine Search
| From | Sent On | Attachments |
|---|---|---|
| Thomas | Sep 2, 2003 2:51 am | |
| Thomas | Sep 3, 2003 2:21 am | |
| Yukihiro Matsumoto | Sep 3, 2003 5:41 am | |
| Thomas | Sep 4, 2003 3:25 am | |
| Yukihiro Matsumoto | Sep 4, 2003 4:56 am | |
| Thomas Sondergaard | Sep 4, 2003 8:45 am |
| Subject: | Re: warning: toplevel constant XX referenced by YY::XX | |
|---|---|---|
| From: | Thomas Sondergaard (tho...@FirstNameGoesHereSondergaard.com) | |
| Date: | Sep 4, 2003 8:45:47 am | |
| List: | org.ruby-lang.ruby-talk | |
Yes, but I think we need to wait for a while to make a transition. So can you wait for a moment, probably until 1.8.1?
Yes, sure.
By the way, you may have problems also for constant name conflict.
module Foo Foo1 = 42 end
class Bar include Foo def Bar.const_missing(id) id end end p Bar::Foo1 p Bar::Foo2
Is it OK for you?
Strictly speaking this is a problem for me, but not something that is likely to cause too many problems in the real world.
As I see it const_missing and method_missing are called too late to serve their purpose correctly. They should be called before looking in parent scopes. The way it works now is probably a pragmatic (in the generic sense) trade off, that avoids trading too much performance for a niche feature. Maybe the real solution is to introduce a new built-in object, say, DynamicObject that invokes the *_missing methods earlier in the resolution sequence. This would require that method invocation and constant lookup suffered one extra layer of indirection, but it could be implemented in C and probably wouldn't make a noticable performance difference. Or maybe this "dynamicity" property could just be a flag on the class, I dunno.
This is just me thinking out loud. You are the language expert, I am just a hack.
Cheers,
Thomas

