On Tuesday, 26 December 2017 at 15:38:14 UTC, Joakim wrote:
On Tuesday, 26 December 2017 at 13:27:38 UTC, RazvanN wrote:
On Thursday, 21 December 2017 at 03:31:16 UTC, Joakim wrote:
On Wednesday, 20 December 2017 at 18:21:33 UTC, Andrei
Alexandrescu wrote:
A tool (call it depend - heh) to automate that would be
awesome. For example, this run would make all imported names
explicit:
depend --explicit *.d
This run would push all imports down to the innermost scope
of usage:
depend --pushdown *.d
Andrei
I'm on it. I tried using a version of Seb's frontend library
yesterday but with the standard dmd main and tried running it
on std.stdio, but it asserted in asmSemantic because of an
asm block somewhere in druntime, so I'm back to using a
tweaked full dmd with the backend simply disabled again:
I ran into the same issue. The problem was that currently the
frontend
doesn't set the version identifiers. There's a PR which tries
to fix it [1],
but if you want to go back at using the compiler library via
Seb's interface
you just have to call this method [2] in the initialization
step.
I doubt that's it, as I noted I was running the standard dmd
main from mars.d. More likely it tries to run asmSemantic on
an asm block in core.atomic and asserts because that function's
stubbed out when there's no backend.
Anyway I am working on this sort of tool also, so maybe we can
unite our efforts.
As in the `depend` import-scoping tool that Andrei wanted
above? If so, that'd be great, as you know the frontend much
better than me. I've been meaning to investigate how to
extract a scope tree from the frontend, as I've never done much
with dmd.
Let me know how far you've gotten and what you want it to do
initially, and maybe I can pitch in with your effort.
Yes, that was the tool I was talking about. I was thinking that
the first
version of the tool just outputs for each import what the used
symbols are;
for example : if you import std.stdio and use 3 symbols from it,
the tool will output "std.stdio: sym1, sym2, sym2" and then the
programmer can update the code accordingly. After developing this
initial version we can think on how to improve it.
For now, my tool only identifies imported non-templated
functions, but I plan on adding support variables, types etc.
We can chat on slack more about this if you are interested.