digitalmars.D.bugs - [Issue 8669] New: TemplateThisParameter should change member function's qualifier
- d-bugmail puremagic.com (62/62) Sep 16 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8669
- d-bugmail puremagic.com (10/10) Sep 16 2012 http://d.puremagic.com/issues/show_bug.cgi?id=8669
- d-bugmail puremagic.com (13/13) Mar 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8669
- d-bugmail puremagic.com (10/10) Mar 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8669
- d-bugmail puremagic.com (9/9) Mar 11 2013 http://d.puremagic.com/issues/show_bug.cgi?id=8669
http://d.puremagic.com/issues/show_bug.cgi?id=8669 Summary: TemplateThisParameter should change member function's qualifier Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: k.hara.pg gmail.com With current implementation, a member function with TemplateThisParameter is not generated based on each 'this' type. struct X { void foo(this T)() {} } void main() { X mx; mx.foo(); // T == X, and foo is mutable member function. // then we can call it with mutable object. immutable(X) ix; ix.foo(); // T == immutable(X), but foo is still *mutable* member function. // then we cannot call it with immutable object } foo is always instantiated as mutable member function, and always cannot be called with non-mutable object. I think this is not convenient in many cases. ==== Enhancement: If foo is called from immutable object, foo should be instantiated as immutable member function. Following is detailed explanation of compiler behavior to realize it. The declaration of foo is expanded as like follows. struct X { template foo(this T) { void foo() {} } } If T is immutable type, compiler would wrap the template body into StorageClassDeclaration. struct X { template foo(this T) { // if T == immutable immutable{ // <-- automatically wrapped by the compiler void foo() {} // now foo is immutable member function } } template foo(this T) { // if T == const const{ // <-- automatically wrapped by the compiler void foo() {} // now foo is const member function } } // as well, if T == shared, shared const, inout, and shared inout } This would make forwarding operations more convenient, e.g. std.typecons.Proxy. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 16 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8669 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull https://github.com/D-Programming-Language/dmd/pull/1121 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 16 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8669 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/31e57cd1e1606d156f2117c5bef4701005438fba fix Issue 8669 - TemplateThisParameter should change member function's qualifier https://github.com/D-Programming-Language/dmd/commit/391addfda30738089ca220f0d9f025e3842deb1f [enh] Issue 8669 - TemplateThisParameter should change member function's qualifier -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2013
http://d.puremagic.com/issues/show_bug.cgi?id=8669 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 06 2013
http://d.puremagic.com/issues/show_bug.cgi?id=8669 Commit pushed to master at https://github.com/D-Programming-Language/phobos https://github.com/D-Programming-Language/phobos/commit/0879a5ea45c08463b3a408f7e29e48ec8312be5b Improve test cases for qualified objects By fixing issue 8669, they are now working properly. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 11 2013