A common flaw with things like code-d and (in my limited experience) Visual-D, these plugins are unable to resolve even simple things like:
struct S(T)
{
T a;
}
...
S!int.init.// No autocompletion from this point.
I was wondering if functionality can be added onto the compiler (DMD at least, due to its speed) which allows for external tooling to gain accurate information about the code?
Take the above struct for example, maybe when the plugin detects the following:
S!int myS;
It could make a call to the compiler like: dmd myapp.d -reflect "myapp.S!(int)"
, where the compiler would return all the info it can (It's a struct, it has a member of int called a, etc.)
It's just a rough idea, but I hope you can see what I'm trying to suggest, and why I feel it's at least worth asking about.
In other words, build some much needed language service functionality into the compiler, to allow the actual language servers to provide a much higher quality experience. Naively assuming it's as simple as that :3