I think the only real way you can run make a language server understand comptime code is using the compiler as a library, similar to how Nim does it - nimsuggest (the tool for autocompletion, definitions, etc) is basically the compiler itself with some nimsuggest-specific stuff, so it understand macros, templates, compile time code evaluation, etc.
Comments
I think the only real way you can run make a language server understand comptime code is using the compiler as a library, similar to how Nim does it - nimsuggest (the tool for autocompletion, definitions, etc) is basically the compiler itself with some nimsuggest-specific stuff, so it understand macros, templates, compile time code evaluation, etc.
Isn't that's how most LSP servers are implemented? I'm only vaguely familiar with clangd.
Yes. An LSP has to work along with the compiler, or it has to become an alternative compiler.
For example, from the article "Why LSP?" [1]
"It is known that compilers are complicated, and a language server is a compiler and then some."
[1]: https://matklad.github.io//2022/04/25/why-lsp.html
It's moving in that direction, but far from all are based on their compiler still.