On Wednesday, 15 January 2025 at 21:55:30 UTC, monkyyy wrote:
>On Wednesday, 15 January 2025 at 21:00:35 UTC, realhet wrote:
>On Wednesday, 15 January 2025 at 20:27:18 UTC, Steven Schveighoffer wrote:
>On Wednesday, 15 January 2025 at 12:01:21 UTC, realhet wrote:
>Also seems like invalid syntax. Where does this come from?
It's in std.typecons.d -> git link
It's in the declaration of enum isTuple(T) = ....
> >github: f(Specs...)(Tuple!Specs tup)
your post: template f(Specs...)f(T.init);
thats quite the important detail, its pattern matching
Thanks, I understand it now. It indeed valid in the typecons.d module.
- A declaration of a template function f with empty body {}
- And the it calls the f function with the T.init parameter.
And this is how I got that weird template declaration later:
Run this commmand:
ldc2 -o- -X c:\d\ldc2\import\std\typecons.d
The resulting typecons.json file will fontain information about the isTuple declaration:
{
"kind" : "template",
"protection" : "public",
"line" : 2277,
"char" : 6,
"name" : "isTuple",
"parameters" : [
{
"name" : "T",
"kind" : "type"
}
],
"members" : [
{
"name" : "isTuple",
"kind" : "variable",
"line" : 2277,
"char" : 6,
"storageClass" : [
"enum"
],
"init" : "__traits(compiles, ()\r\n{\r\ntemplate f(Specs...)f(T.init);\r\n}\r\n)"
}
]
}
And there it is, inside the "init" field.
So it seems like that X Json exporter had a little bug there. It misinterprets the 'f' function declaration and the 'f' function calling statements.
Otherwise I'm happy because I've managed to put together a 6MB DLang-ish file with all the declarations in Phobos. And the only error was this.
(Why I do this? -> I want to make something like IntelliSense. Now that I have all the data loaded from the X Json files, I transformed them into a large D source to be able to verify. This is what it looks like: youtube link)