digitalmars.D.bugs - [Issue 4968] New: inout is sticky to function return type
- d-bugmail puremagic.com (35/35) Oct 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4968
- d-bugmail puremagic.com (34/34) Oct 04 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4968
- d-bugmail puremagic.com (9/9) May 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4968
- d-bugmail puremagic.com (14/14) May 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4968
- d-bugmail puremagic.com (11/11) Aug 31 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4968
http://d.puremagic.com/issues/show_bug.cgi?id=4968 Summary: inout is sticky to function return type Product: D Version: D2 Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: tomash.brechko gmail.com 14:57:27 PDT --- Call to writeln(f(i)) below won't compile because dmd 2.049 thinks f() returns "inout(int)", so "void writeln(T...)(T args)" expands to "void writeln(inout(int)...(inout(int) args)", and inout parameter requires inout return type. Rewriting "void" as "inout(void)" helps, but obviously is wrong. import std.stdio; inout(int) f(inout int i) { return i; } void main() { int i; writeln(typeof(f(i)).stringof); // Outputs "inout(int)", not "int". int j = f(i); writeln(i); // Works OK :). writeln(f(i)); // Won't compile :(. } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 01 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4968 Steven Schveighoffer <schveiguy yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |schveiguy yahoo.com 06:06:46 PDT --- This is a good catch. Although inout doesn't work currently, so don't expect much yet. IMO, this is how the compiler should behave: void foo(T)(T t) { writeln(typeof(t).stringof); } inout(int) f(inout(int) i) { return i; } void main() { int i; const int j; immutable int k; foo(f(i)); foo(f(j)); foo(f(k)); } should print: int const(int) immutable(int) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 04 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4968 Created an attachment (id=964) test patch function, delegate, etc.) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4968 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- obsolete| | Created an attachment (id=965) Improvement Posted pull request: https://github.com/D-Programming-Language/dmd/pull/58 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4968 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |DUPLICATE *** This issue has been marked as a duplicate of issue 3748 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 31 2011