digitalmars.D.bugs - [Issue 5980] New: Can't pass __traits value as const(char)*
- d-bugmail puremagic.com (30/30) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (9/9) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (12/28) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (10/10) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (11/11) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (29/29) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (7/9) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (6/6) May 11 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
- d-bugmail puremagic.com (12/12) Sep 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5980
http://d.puremagic.com/issues/show_bug.cgi?id=5980 Summary: Can't pass __traits value as const(char)* Product: D Version: future Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: Jesse.K.Phillips+D gmail.com CC: Jesse.K.Phillips+D gmail.com 11:03:10 PDT --- This worked in 2.052 but is failing to compile in the latest beta for 2.053. This is used by LuaD. struct A { int a; } void main() { foreach(field; __traits(allMembers, A)) { usefield(field); } } void usefield(const(char)* foo) { } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 11:09:35 PDT --- Oh and the error message: break.d(7): Error: cannot implicitly convert expression (field) of type const(im mutable(char)[]) to const(char)* -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kennytm gmail.comThis worked in 2.052 but is failing to compile in the latest beta for 2.053. This is used by LuaD. struct A { int a; } void main() { foreach(field; __traits(allMembers, A)) { usefield(field); } } void usefield(const(char)* foo) { }Why not use 'usefield(field.ptr)'? I don't think implicitly converting an array to a pointer is expected. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 11:33:58 PDT --- Well I invasion the code being expanded to: void main() { usefield("a"); } Which is expected to implicitly convert to const(char)* -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 Andrei Alexandrescu <andrei metalanguage.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrei metalanguage.com 12:29:17 PDT --- The conversion of a string literal to a immutable(char)* has been disallowed, and for arguably good reasons. You may want to use a.ptr instead. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Can't pass __traits value |foreach element of a type |as const(char)* |tuple of string literals is | |not implicitly convertible | |to immutable(char)* Actually it's a problem in foreach-ing a TupleExp of StringExp, not __traits. I changed the title to reflect that. ------------------------------------- template TypeTuple(T...) { alias T TypeTuple; } void main() { alias TypeTuple!"1" T; usefield(T[0]); // ok foreach (j; T) usefield(j); // error on 2.053 } void usefield(const(char)* foo) { } ------------------------------------- (Still, I think it's better to use .ptr then relying on it the implicit string literal -> pointer conversion.) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980The conversion of a string literal to a immutable(char)* has been disallowed, and for arguably good reasons. You may want to use a.ptr instead.-- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 12:44:19 PDT --- I must be confused, sorry. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 11 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5980 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |yebblies gmail.com Resolution| |FIXED Fixed in 2.055 beta, probably the same as issue 6220. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 06 2011