On Tuesday, 3 January 2017 at 12:57:22 UTC, Andrei Alexandrescu wrote:
On 01/03/2017 02:19 AM, Dominikus Dittes Scherkl wrote:
On Monday, 2 January 2017 at 21:23:19 UTC, Andrei Alexandrescu wrote:
DIP1005 gives consideration to the speed of compilation aspect in larger proportion than speed's importance; the first and foremost benefit of DIP1005 is it closes the gap on dependency encapsulation,
which had been very successfully narrowed by local imports.
I love that idea. But I still can't see why this requires any new syntax. Simply extending the scope of local inports to include the
function header is enough.

I'll mention this possibility in the DIP.
Good.

Only for .di-generation it may be useful to move all local imports to the declaration (maybe with this new syntax "with" before it) - but that should be done with ALL local imports, because today the .di-files are
incomplete and will stay so if the new syntax is introduced but
"old-style" local imports still valid and not exported to the .di.
Or the old local imports become deprecated together with the
introduction of the new "with" syntax and vanish soon after that.

Local imports don't pertain to the interface, they are an implementation detail. Why would those be made a part of the .di?
.di are needed to ship with a library. If a function locally imports some type, the library is dependant on that import, so if I want to use the library, I have to install all stuff it depends on too. And to find out, what exactly the library depends on the .di is the place I look, so there need to be mentioned each and every import - no matter how deeply local that may be. If that is not the case it renders .di-files completely useless to me (as they are at the moment), because I need to find out the dependencies somewhere else (e.g. in some documentation of the library). While it is likely that the dependencies of a library may be documented somewhere, this is not guaranteed. But .di-files are guaranteed to ship with a lib because else it cannot link - at least if it contains any templates, which is about 100% sure for a language like D. So I would like to see local imports in the .di-file, even if they are not strictly needed to compile because the imported types are not exposed in the function signature.



Reply via email to