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.