Inline imports redivivus
Petar
Petar
Mon Jul 26 10:38:44 UTC 2021
On Saturday, 24 July 2021 at 17:52:03 UTC, Andrei Alexandrescu
wrote:
> On 7/23/21 5:15 PM, user1234 wrote:
>> On Friday, 23 July 2021 at 18:57:08 UTC, Steven Schveighoffer
>> wrote:
>>> On 7/23/21 9:55 AM, Andrei Alexandrescu wrote:
>>>> Mathias Lang just told me the bug preventing inline imports
>>>> from working has been fixed, so I reopened this:
>>>>
>>>> https://github.com/dlang/druntime/pull/1756
>>>>
>>>> I think it's a very useful facility, more clearly so for
>>>> large projects, and deserves a fair shake of the stick.
>>>>
>>>> If it works well in practice, a future language proposal
>>>> could take `_import!"std.datetime".SysTime` to the simpler
>>>> and better `import(std.datetime).SysTime`. Using it as a
>>>> library facility seems like a good step.
>>>
>>> No comments on the inline-import mechanism. I'm not too
>>> concerned with the problem it solves (I'm OK adding imports
>>> when needed).
>>>
>>> Just FYI, `import(somefilenamestring)` already is taken.
>>>
>>> -Steve
>>
>> It's possible to make the difference during semantic. If the
>> expression between parens gives a StringExp ->
>> ImportExpression, if that gives a ModuleDeclaration -> the new
>> inline import.
>
> Yah but that'd be awfully confusing...
I agree it could be confusing. That said I would really prefer if
whatever we choose is an expression, as expressions are much
easier to manipulate than statements via meta-programming - think
of what you can put in an `AliasSeq`.
Even better, if can just use ranges to manipulate import lists.
And no, [stringly typed][1] API is not the answer :D Perhaps
something like a first-class `Symbol` type.
[1]: http://wiki.c2.com/?StringlyTyped
More information about the Digitalmars-d
mailing list