digitalmars.D.bugs - [Issue 4545] New: Alias to members possible without "this" instance
- d-bugmail puremagic.com (37/37) Aug 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (15/15) Aug 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (20/20) Aug 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (14/26) Aug 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (11/26) Aug 07 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (9/9) Jan 23 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (14/14) Jan 23 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (15/15) Jan 24 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (12/16) Jan 24 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (13/20) Jan 24 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (11/11) Jan 24 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
- d-bugmail puremagic.com (12/12) Jan 30 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4545
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Summary: Alias to members possible without "this" instance Product: D Version: D2 Platform: Other OS/Version: Windows Status: NEW Keywords: accepts-invalid, spec Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: tomeksowi gmail.com PDT --- I'm tearing up bug 4533 to have member-related alias problems in a separate bug. You can alias members from *outside*: class A { void foo() {} } alias A.foo goo; This compiles. It fails only if goo is called but should fail already at the alias declaration. Also, Andrej Mitrovic found a similar issue documented, but not implemented: In the docs (http://www.digitalmars.com/d/2.0/declaration.html), there's this code: void main() { struct S { static int i; } S s; alias s.i a; // illegal, s.i is an expression alias S.i b; // ok b = 4; // sets S.i to 4 } But this [illegal expression] will compile. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 01 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Jacob Carlborg <doob me.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |doob me.com I think your first example should be legal because you can create a delegate out of the alias and an instance of A. void delegate () dg; dg.ptr = new A; dg.funcptr = &goo; dg(); // this works -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 01 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Stewart Gordon <smjg iname.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |smjg iname.com Version|D2 |D1 & D2 I'm not sure. The existence of .funcptr seems to contradict http://www.digitalmars.com/d/1.0/type.html#delegates "There are no pointers-to-members in D, but a more useful concept called delegates are supported." See also bug 2557. Applies to D1 as well, though new A must be cast. Moreover, you don't need to go through an alias - DMD 1.062 accepts even dg.funcptr = &A.foo; But non-static members of structs/classes/unions are still compile-time entities, and they have properties. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4545I'm not sure. The existence of .funcptr seems to contradict http://www.digitalmars.com/d/1.0/type.html#delegates "There are no pointers-to-members in D, but a more useful concept called delegates are supported."Just after that it says: "Delegates are an aggregate of two pieces of data: an object reference and a function pointer.". You must always have a pointer to a member, then you add a context and gets a delegate. How about static members, you can have pointers to those, regular function pointers. I don't know why the docs are written like that. Probably because the concept is a little different compared to C++'s member pointers. D's delegates are basically just syntax sugar for a C++'s member pointer and a instance of the same class.See also bug 2557. Applies to D1 as well, though new A must be cast. Moreover, you don't need to go through an alias - DMD 1.062 accepts even dg.funcptr = &A.foo;I used an alias because an alias was used in the first example.But non-static members of structs/classes/unions are still compile-time entities, and they have properties.-- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4545It really should say "a pointer to a non-static member function".I'm not sure. The existence of .funcptr seems to contradict http://www.digitalmars.com/d/1.0/type.html#delegates "There are no pointers-to-members in D, but a more useful concept called delegates are supported."Just after that it says: "Delegates are an aggregate of two pieces of data: an object reference and a function pointer.".You must always have a pointer to a member, then you add a context and gets a delegate. How about static members, you can have pointers to those, regular function pointers. I don't know why the docs are written like that. Probably because the concept is a little different compared to C++'s member pointers. D's delegates are basically just syntax sugar for a C++'s member pointer and a instance of the same class.No, because delegate types don't care the least what class the function is a member of. This is why they're more useful - whatever is using the delegate need not know anything about the class, and so (for instance) a library can use a delegate just like a plain function pointer. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 07 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Commit pushed to https://github.com/D-Programming-Language/d-programming-language.org https://github.com/D-Programming-Language/d-programming-language.org/commit/eedb99442ac037495ae12c3a7732aad72a074bf6 fix Issue 4545 - Alias to members possible without 'this' instance -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 23 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED 21:38:52 PST --- I'm not sure what to do with this. I did make some minor tweaks to the delegate description. If more should be done, please be specific. I don't agree that the behavoior Tomasz is reporting is a bug; it's expected. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 23 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Denis <verylonglogin.reg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED CC| |verylonglogin.reg gmail.com Resolution|FIXED | --- --- alias s.i a; // illegal, s.i is an expression --- is still in the docs and compilable. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 24 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution| |INVALID 01:42:22 PST ------ alias s.i a; // illegal, s.i is an expression --- is still in the docs and compilable.And it's not a bug. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 24 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4545 ---As I understood everywhere in `statement.dd` "illegal" means incorrect statement and it shouldn't be compilable. So "illegal" in `expression.dd` is expected to do so too. You reply means for me that those "illegal" statements doesn't compile with dmd but it is implementation specific and an other D compiler may compile them fine and it will result in undefined behavior. It will be a hell. Or am I mistaken somewhere? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ---------- alias s.i a; // illegal, s.i is an expression --- is still in the docs and compilable.And it's not a bug.
Jan 24 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4545 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|INVALID | 02:27:17 PST --- My mistake. I should read more carefully. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 24 2012
http://d.puremagic.com/issues/show_bug.cgi?id=4545 yebblies <yebblies gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED CC| |yebblies gmail.com Resolution| |DUPLICATE *** This issue has been marked as a duplicate of issue 4062 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 30 2012