Thanks for the sample file. The D parser already understands templates, but it puts them under "Modules". There was a bug with 'static assert' confusing the parser, the line:
static assert( num < TL.length, "Name '"~name~"' is not found");
Here the '<' symbol made the parser look for a closing '>' char (for C++). I've just fixed this in Git by handling static assert like static if, ignoring the () bracketed part. (Changing the C++ <> parsing would make the parser diverge from ctags more so I wanted to avoid that if possible).
Of course, nested templates should be parsed as a child of any parent symbol, so I'll rename this request to reflect that.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
example D file with templates
Thanks for the sample file. The D parser already understands templates, but it puts them under "Modules". There was a bug with 'static assert' confusing the parser, the line:
static assert( num < TL.length, "Name '"~name~"' is not found");
Here the '<' symbol made the parser look for a closing '>' char (for C++). I've just fixed this in Git by handling static assert like static if, ignoring the () bracketed part. (Changing the C++ <> parsing would make the parser diverge from ctags more so I wanted to avoid that if possible).
Of course, nested templates should be parsed as a child of any parent symbol, so I'll rename this request to reflect that.
Nested template blocks should now appear under their parent.
Now implemented in Git.
Here the '<' symbol made the parser look for a closing '>' char (for C++).
In D < and > symbols not used as brackets (this was done deliberately). So, for .d files parsing of <> can be disabled.
I was aware D doesn't use <>. I've now made a small change to ignore them.