digitalmars.D.bugs - [Issue 1570] New: Wrong return for address operator
- d-bugmail puremagic.com (41/41) Oct 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (8/8) Nov 08 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (10/10) Sep 09 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (13/17) Sep 09 2008 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (21/27) Jun 28 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (7/9) Jun 28 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (7/11) Jun 28 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (8/8) Jun 28 2011 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (9/9) Jan 21 2012 http://d.puremagic.com/issues/show_bug.cgi?id=1570
- d-bugmail puremagic.com (9/9) Jan 21 2012 http://d.puremagic.com/issues/show_bug.cgi?id=1570
http://d.puremagic.com/issues/show_bug.cgi?id=1570 Summary: Wrong return for address operator Product: D Version: 2.005 Platform: PC OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: PetSerAl gmail.com import std.stdio; void main() { b v=new b; v.f; v.a.f; (&v.f)(); (&v.a.f)(); } class a { void f() { writeln("class a"); } } class b:a { void f() { writeln("class b"); } } This program write: class b class a class b class b --
Oct 11 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1570 smjg iname.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |smjg iname.com ------- Comment #1 from smjg iname.com 2007-11-08 08:04 ------- What is v.a and where's it documented? Should it work? --
Nov 08 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1570 smjg iname.com changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid, wrong-code ------- Comment #2 from smjg iname.com 2008-09-09 14:56 ------- Since I can't at the moment find any evidence in the spec that v.a is a valid expression, I'm marking this as accepts-invalid. If I'm wrong, please show me where it's defined. --
Sep 09 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1570 ------- Comment #3 from jarrett.billingsley gmail.com 2008-09-09 15:17 ------- (In reply to comment #2)Since I can't at the moment find any evidence in the spec that v.a is a valid expression, I'm marking this as accepts-invalid. If I'm wrong, please show me where it's defined.a is the class a, which for some reason is accessible through a reference to class b. If you capitalize the class names it makes it a lot clearer. I think it might actually be somehow related to the thing about typeof(this) and non-virtual calls made on the expressions page: http://www.digitalmars.com/d/1.0/expression.html In any case it doesn't seem to be explicitly documented, but I wonder if there's a use for it. It breaks encapsulation by allowing you to manually access a base class's implementation of a method, and with single inheritance there's no need to select the implementation from several base classes. --
Sep 09 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1570 Stewart Gordon <smjg iname.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |accepts-invalid Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla digitalmars.com --- Comment #5 from Stewart Gordon <smjg iname.com> 2011-06-18 02:59:01 PDT --- (In reply to comment #4)It seems to me that sample code is valid. Because dmd frontend has v.a as DotTypeExp explicitly and keeps its information,a is not a member of v. So the expression is invalid. Unless you can find something in the spec that states otherwise.then resolve overloads of f as A.f. Therefore v.a.f should call A.f is right (but not documented) behavior. -> Remove 'accepts-invalid' from keywords.How can a case of the compiler accepting something that the spec doesn't allow be neither accepts-invalid nor a spec issue? --- Comment #6 from Walter Bright <bugzilla digitalmars.com> 2011-06-28 12:45:57 PDT --- v.a is supposed to work, and it means look up the name in the scope of the base class a. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 28 2011
http://d.puremagic.com/issues/show_bug.cgi?id=1570 --- Comment #7 from Stewart Gordon <smjg iname.com> 2011-06-28 13:00:09 PDT --- (In reply to comment #6)v.a is supposed to work, and it means look up the name in the scope of the base class a.Nice try. Now supply a link to the relevant bit of the spec. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 28 2011
http://d.puremagic.com/issues/show_bug.cgi?id=1570 --- Comment #8 from Walter Bright <bugzilla digitalmars.com> 2011-06-28 13:28:55 PDT --- (In reply to comment #7)(In reply to comment #6)If it's not in the spec, it needs to be. Wanna do a pull request? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------v.a is supposed to work, and it means look up the name in the scope of the base class a.Nice try. Now supply a link to the relevant bit of the spec.
Jun 28 2011
http://d.puremagic.com/issues/show_bug.cgi?id=1570 --- Comment #9 from Walter Bright <bugzilla digitalmars.com> 2011-06-28 14:15:21 PDT --- Fix for compiler, not spec yet: https://github.com/D-Programming-Language/dmd/commit/2d8f2c76d514e56ccef0f8e77e844f0093c7c4ff https://github.com/D-Programming-Language/dmd/commit/2c491bcd6bdf482a212b8ef28bb73cdfa6b60155 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 28 2011
http://d.puremagic.com/issues/show_bug.cgi?id=1570 --- Comment #10 from github-bugzilla puremagic.com 2012-01-21 21:08:25 PST --- Commit pushed to https://github.com/D-Programming-Language/d-programming-language.org https://github.com/D-Programming-Language/d-programming-language.org/commit/9d331033cfa109d8b44e687803cbbbbfc4f4bfe2 fix Issue 1570 - Wrong return for address operator -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 21 2012
http://d.puremagic.com/issues/show_bug.cgi?id=1570 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 21 2012