DI Generation Needs your Help!

Adam Wilson flyboynw at gmail.com
Mon Dec 19 12:24:18 PST 2011


On Mon, 19 Dec 2011 04:57:54 -0800, so <so at so.so> wrote:

> On Mon, 19 Dec 2011 14:43:07 +0200, Jakob Ovrum <jakobovrum at gmail.com>  
> wrote:
>
>> On Monday, 19 December 2011 at 12:11:32 UTC, so wrote:
>>> On Mon, 19 Dec 2011 10:11:25 +0200, Adam Wilson <flyboynw at gmail.com>  
>>> wrote:
>>>
>>>> Everything else is left alone. Templates and mixins are not addressed  
>>>> with this code and *should* not be modified. That's where I need your  
>>>> help, the test cases I have written cover some basic scenarios but I  
>>>> don't have the capability to test these changes with the diverse code  
>>>> base that the community has created.
>>>
>>> I am not exactly sure about your problem with templates and mixins but  
>>> i'll give it a try regardless :)
>>> Since with templates there is no distinction between definition and  
>>> decleration,
>>> exposing them IMO should be solely based on thier module access  
>>> signatures.
>>>
>>> private struct A() // hide
>>> public struct B()  // expose
>>>
>>> Now if B or some another exposed structure in ".di" should call A,
>>> compiler will take care of it by outputting an error as usual.
>>
>> And if the public template tries to access the private one?
>>
>> Private module members must be treated like any other unless the  
>> compiler can prove it removed all references to the private member.
>
> You are right it was obscure, i'll try to clarify.
> By "B or some another exposed structure" i meant things resides  
> "completely" in ".di" file.
> Things like Templates, mixins and if we get them one day inlined  
> functions.
> In this scenario a "original.d" file should be interpreted as:
>
> original.d
>    public void A()()
>    private void B()()
>
> whatitwasmeant.di
>    public void A()()
>
> whatitwasmeant.d
>    private void B()()
>
> Here B can call A but not the opposite.
> A simple doesn't see B here. Things that resides completely in ".di"  
> file have no way to access the things in its ".d" file unless it wasn't  
> "exported".
> Imagine the final/generated ".di" file IS the user and the original ".d"  
> file is the library designer. While i think this is the right way, it  
> probably not that easy to implement.

So the consensus is to keep all private members/imports/etc?

-- 
Adam Wilson
Project Coordinator
The Horizon Project
http://www.thehorizonproject.org/


More information about the Digitalmars-d mailing list