Skip to content

Commit 6b2b510

Browse files
dkorpelclaude
authored andcommitted
Fix dlang#18518 - Add mixin template members to -X json output
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1a1f0e9 commit 6b2b510

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

compiler/src/dmd/json.d

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,16 @@ public:
806806
{
807807
objectStart();
808808
jsonProperties(d);
809+
if (d.members)
810+
{
811+
propertyStart("members");
812+
arrayStart();
813+
foreach (member; (*d.members))
814+
{
815+
member.accept(this);
816+
}
817+
arrayEnd();
818+
}
809819
objectEnd();
810820
}
811821

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
REQUIRED_ARGS: -Xf- -o-
3+
PERMUTE_ARGS:
4+
TEST_OUTPUT:
5+
----
6+
[
7+
{
8+
"kind" : "module",
9+
"file" : "compilable$?:windows=\\|/$json18518.d",
10+
"members" : [
11+
{
12+
"kind" : "template",
13+
"protection" : "public",
14+
"line" : $n$,
15+
"char" : $n$,
16+
"name" : "Mix",
17+
"parameters" : [
18+
{
19+
"name" : "T",
20+
"kind" : "type"
21+
}
22+
],
23+
"members" : [
24+
{
25+
"name" : "mixmember",
26+
"kind" : "variable",
27+
"line" : $n$,
28+
"char" : $n$,
29+
"type" : "T"
30+
}
31+
]
32+
},
33+
{
34+
"name" : "S",
35+
"kind" : "struct",
36+
"protection" : "public",
37+
"line" : $n$,
38+
"char" : $n$,
39+
"members" : [
40+
{
41+
"name" : "Mix!int",
42+
"kind" : "mixin",
43+
"protection" : "public",
44+
"line" : $n$,
45+
"char" : $n$,
46+
"members" : [
47+
{
48+
"name" : "mixmember",
49+
"kind" : "variable",
50+
"protection" : "public",
51+
"line" : $n$,
52+
"char" : $n$,
53+
"deco" : "i",
54+
"originalType" : "T",
55+
"offset" : 0
56+
}
57+
]
58+
}
59+
]
60+
}
61+
]
62+
}
63+
]
64+
----
65+
66+
https://github.com/dlang/dmd/issues/18518
67+
*/
68+
69+
mixin template Mix(T)
70+
{
71+
T mixmember;
72+
}
73+
74+
struct S
75+
{
76+
mixin Mix!int;
77+
}

0 commit comments

Comments
 (0)