[about leaving the syntax as it is, only extend the import to include the previous (declaration) line]

On Wednesday, 14 December 2016 at 21:21:39 UTC, Jonathan M Davis wrote:
It also doesn't work with function prototypes. With the proposed syntax, you can do

    int foo(SysTime st) import(std.datetime);

but if the compiler has to look into the function body to get at the import, then a prototype like this would be out of luck.

You are right. I think this is the only shortcoming.
But how does that work with imports within the function anyway?
In this case you can't even today determine the dependencies of a function from it's prototype.

Also I hate prototypes: .di-files are pretty useless - they make not clear what is needed to include and for templates you need the whole code anyway. I think we don't loose much if now we have even symbols within a .di-file which are not declared there. The only good thing about prototypes is: they can be auto-generated. We only need to modify this generation by adding all function-local includes to the top of the .di-file. This would also improve the usefulness of such files by having a whole list of dependencies of a library - but this has nothing to do with this change! This is necessary independently, because local imports are very common today.


Reply via email to