digitalmars.D.bugs - [Issue 3180] New: Need delegate covariance and contravariance
- d-bugmail puremagic.com Jul 15 2009
- d-bugmail puremagic.com Jul 15 2009
- d-bugmail puremagic.com Jul 17 2009
- d-bugmail puremagic.com Mar 16 2011
- d-bugmail puremagic.com Jun 08 2011
- d-bugmail puremagic.com Jun 08 2011
- d-bugmail puremagic.com Jun 08 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3180 Summary: Need delegate covariance and contravariance Product: D Version: unspecified Platform: Other OS/Version: Windows Status: NEW Keywords: spec Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: rayerd.wiz gmail.com import std.stdio; class A {} class B : A {} class X { A foo() { return new A; } } class Y : X { B foo() { return new B; } } class V { void foo(B){} } void main() { // Class Covariance (supported already) { X x = new X; Y y = new Y; A r = x.foo(); A s = y.foo(); B t = y.foo(); writeln(r); // A writeln(s); // B writeln(t); // B } // Delegate Covariance { A delegate() f = delegate A() { return new A; }; // Of course, OK. writeln(f()); // A //A delegate() g = delegate B() { return new B; }; // Need support the covariance //writeln(g()); // This should be B. } // Delegate Contravariance { V v = new V; void delegate(B) g = &v.foo; // Of course, OK. //void delegate(A) f = &v.foo; // Need suport the contravariance. } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 15 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3180 Steven Schveighoffer <schveiguy yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |schveiguy yahoo.com Severity|normal |enhancement --- Comment #1 from Steven Schveighoffer <schveiguy yahoo.com> 2009-07-15 18:13:10 PDT --- Your contravariance example is not valid, you cannot call foo(B) with an A. It should be: class V { void foo(A); } ... V v = new v; void delegate(B) g = &v.foo; // contravariance Also this is somewhat of a duplicate of bug 3075. Although you do bring up covariance for delegates, which should be implemented at the same time as contravariance. Sadly, Walter has decided the prior bug is an invalid enhancement request, so most likely nothing will come of this request either. I think the only possible way this may be included is if someone implements it and submits it as a patch to dmd. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 15 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3180 --- Comment #2 from Haruki Shigemori <rayerd.wiz gmail.com> 2009-07-17 16:55:58 PDT --- (In reply to comment #1)Your contravariance example is not valid, you cannot call foo(B) with an A. It should be: class V { void foo(A); } ... V v = new v; void delegate(B) g = &v.foo; // contravariance
Sorry, it is my mistake.Also this is somewhat of a duplicate of bug 3075. Although you do bring up covariance for delegates, which should be implemented at the same time as contravariance. Sadly, Walter has decided the prior bug is an invalid enhancement request, so most likely nothing will come of this request either.
OMG. It is so sad. There are both in C#.I think the only possible way this may be included is if someone implements it and submits it as a patch to dmd.
I am trying to make some dmd patchs, but it is difficult yet. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 17 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3180 Steven Schveighoffer <schveiguy yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dsimcha yahoo.com --- Comment #3 from Steven Schveighoffer <schveiguy yahoo.com> 2011-03-16 10:08:31 PDT --- *** Issue 5742 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 16 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3180 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bearophile_hugs eml.cc --- Comment #4 from yebblies <yebblies gmail.com> 2011-06-08 22:48:20 PDT --- *** Issue 3833 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 08 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3180 --- Comment #5 from yebblies <yebblies gmail.com> 2011-06-08 22:48:58 PDT --- *** Issue 4000 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 08 2011
http://d.puremagic.com/issues/show_bug.cgi?id=3180 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|spec |patch, rejects-valid CC| |yebblies gmail.com Summary|Need delegate covariance |Covariance of |and contravariance |delegates/function pointers Severity|enhancement |normal --- Comment #6 from yebblies <yebblies gmail.com> 2011-06-08 22:54:07 PDT --- The enhancement portion of the original report is a dupe of Issue 3075, which has been marked INVALID by Walter. In the comments he states that delegate covariance is supposed to work, so that part of the report is definitely a bug. https://github.com/D-Programming-Language/dmd/pull/96 should fix this report for function pointers. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 08 2011









d-bugmail puremagic.com 