On 06/25/2012 05:26 PM, Manu wrote:
I suspect this isn't possible in a compiled language like D, but I wonder anyway, has anyone considered partial classes in D? Are they technically possible? How would they work? Would it depend on link-time code generation?
Ideally yes, but it should be possible to initialize the relevant data structures at program load time. (druntime is already able to locate class type infos by their fully qualified names, so it should be
feasible.)
I can imagine an implementation where each 'part' occupies a separate allocation, and some pointer in Object or somewhere like that (somewhere near the typeinfo pointer) binds them together. I often find myself wanting to add some extra pizazz to classes using template/mixin magic, but I may not have control over the original code where it is defined...
How can you declare the class as partial if you do not have control over the original code?
C# at least can do this, and it's very useful in many situations...
I think the blocking issues are in the frontend: partial classes as done in C# require the 'namespace' feature. D conflates modules and name spaces.
