DIP10005: Dependency-Carrying Declarations is now available for community feedback

Dominikus Dittes Scherkl via Digitalmars-d digitalmars-d at puremagic.com
Thu Dec 15 09:07:35 PST 2016


On Thursday, 15 December 2016 at 16:16:51 UTC, Walter Bright 
wrote:
> On 12/14/2016 5:26 AM, Dominikus Dittes Scherkl wrote:
>> Why not leave it as it is and only change the compiler to
>> perform inputs _within_ a function before evaluating the 
>> declaration, so that
>> the symbols imported can be used in the declaration?
>>
>> e.g.
>>
>> fun(Range x) if(isInputRange!x)
>> {
>>    import std.range;
>>    auto a = x.front();
>> }
>
> That would make it problematic to have function declarations.

Yeah, but declarations ARE already problematic, because local 
imports are not visible from them, so only having a declaration 
file (.di) at the moment already is not enough to determine the 
dependencies.
And as I understand you, you don't plan to remove the local 
imports as they are now? (would be a really huge breaking change!)

So, I no longer propose to change nothing except the internal 
compiler behaviour.
Now I propose to additionally change the .di-file generation to 
also add all local imports to the start of the declaration file, 
so that having this file gives ALL dependencies of the declared 
stuff.


More information about the Digitalmars-d mailing list