Template declaration of std.typecons.isTuple in -X JSON file.
realhet
real_het at hotmail.com
Thu Jan 16 00:54:12 UTC 2025
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](https://github.com/dlang/phobos/blob/336bed6d8ffec74d117b755866c5bd22e3d610a1/std/typecons.d#L2278C4-L2279C18)
>>
>> 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:
```json
{
"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](https://www.youtube.com/watch?v=GGrpEVsqCeY))
More information about the Digitalmars-d-learn
mailing list