digitalmars.D.bugs - [Issue 21812] New: __traits(allMembers) on types with value tuples
- d-bugmail puremagic.com (41/41) Apr 08 2021 https://issues.dlang.org/show_bug.cgi?id=21812
https://issues.dlang.org/show_bug.cgi?id=21812 Issue ID: 21812 Summary: __traits(allMembers) on types with value tuples return ghost members Product: D Version: D2 Hardware: All OS: All Status: NEW Keywords: wrong-code Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: schveiguy gmail.com Consider the following code: ----- struct S(A...) { A args; } void main() { pragma(msg, __traits(allMembers, S!(int, float))); } ---- This outputs the following: tuple("args", "__args_field_0", "__args_field_1") The members __args_field_0 and __args_field_1 don't exist on the type: --- S!(int, float) s; // all of these produce the error: no property __args_field_0 for type S!(int, float) writeln(s.__args_field_0); writeln(__traits(getMember, s, "__args_field_0")); pragma(msg, __traits(identifier, __traits(getMember, typeof(s), "__args_field_0"))); --- I would contend that __traits(allMembers) should not ever return strings that are not accessible in any way as a member. --
Apr 08 2021