__FUNCTION__

Edward Diener eddielee_no_spam_here at tropicsoft.com
Sat Feb 28 20:47:10 PST 2009


Andrei Alexandrescu wrote:
> Edward Diener wrote:
>> I argued for this in the past on this NG but still no one seems to 
>> have picked up the idea that a full reflection library for D, 
>> supported fully by the compiler, would be a great thing. It would also 
>> allow RAD programming with D outside of the functionality one could 
>> use in 3rd party tools designed around full run-time reflection 
>> capabilities.
> 
> D2 will have reflection. (Walter doesn't know yet. He thinks D3 will 
> have reflection.) It will be compile-time reflection because only 
> run-time reflection only is missing the point.

The whole debate about "compile-time" and "run-time" reflection  is 
irrelevant as long as one can invoke it without having to inject code 
into an already existing construct.

It must work through run-time code which can ask such reflection 
questions as: enumerate for me all of the classes in a particular module 
etc., or enumerate for me all the functions in a class etc. . It must 
work by allowing code from outside of a construct to query that 
construct and get its accessible constructs. How that run-time code is 
written, whether using "compile-time" reflection using templates, or 
run-time classes accessible from a library whose reflection data is 
produced by the D compiler, is not important from the user's point of 
view as long as the user has the access he wants and can write 
relatively clean and clear code to get it.

Of course from within any given construct one should also be able to 
write code in a clear manner which accesses the inner constructs.

Access to constructs via reflection should follow the same protection 
features as any other code, so that public constructs are always 
accessible but private constructs are only accessible following their 
normal rules.

So I do not know what you mean by "only run-time reflection only is 
missing the point" but certainly the ability to use reflection at 
run-time is vitally important from outside of a construct to any 3rd 
party tool which wants to introspect already existing constructs and 
create objects from those constructs based on the information run-time 
reflection can return.



More information about the Digitalmars-d mailing list