digitalmars.D.bugs - [Issue 7726] New: 'virtual' keyword please
- d-bugmail puremagic.com (19/19) Mar 18 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (9/9) Mar 18 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (10/10) Mar 18 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (25/25) Mar 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (21/21) Mar 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (17/17) Mar 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (33/33) Mar 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (33/33) Mar 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (9/9) Mar 19 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
- d-bugmail puremagic.com (12/15) Mar 21 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7726
http://d.puremagic.com/issues/show_bug.cgi?id=7726 Summary: 'virtual' keyword please Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: critical Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: turkeyman gmail.com Used in conjunction with 'final:' at the top of the class, gives access to explicit virtual code. Allow implementation of such a policy for a large code team. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 18 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla digitalmars.com Severity|critical |enhancement -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 18 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 Piotr Szturmaj <pszturmaj tlen.pl> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pszturmaj tlen.pl --- Instead, please use final: at the bottom of the class. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 18 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 Then I can't use private:, since that suffers from the same problem of not having a corresponding 'public'. { [public virtual methods] private: [data members] final: [non-virtual methods] // are now private } { [public virtual methods] final: [non-virtual methods] private: [data members] // error because of the 'final:' bug } This all leads to messy, and rather difficult to follow classes. I like to keep associated stuff together. I also really like the virtual keyword, it states in the API clearly how to extend the class, and you can grep for it. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 --- You can tag individual members with public/private and final. final: and final { } are just for convenience. You can also try something like this: { void virtualMethod() {} private: int privateMember; public final: void finalMethod() { } // public } I guess you are opting for virtual: keyword to just disable existing final: specifier. There are other possible solutions without adding a new keyword: - Use default: to restore public and virtual. - Use negation, like !final: to disable specifiers that differ from public and virtual. But I'm ok with current approach. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 No actually, I want a 'virtual' keyword to write in front of virtual methods. Not 'virtual:', I don't believe that would be very useful. every programmer that exists expects: class MyClass { final: this() void method(); property void thing(int t) {} property int thing() {} } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 *crap, I tapped tab and the 'commit' button gained focus, and when I pressed space bar, it posted.* class MyClass { final: this(); property void property1(int t) property int property1() property void thing(int t) property int thing() void doThing() void addUnrelated(Unrelated x); Unrelated getUnrelated(); virtual void updateUnrelateds(); // etc. private: virtual void update(); virtual void draw(); void handlerDelegate(); void handlerDelegate2(); int data1; float data2; ... } Ie. logically group stuff, mark the occasional virtual explicitly, continue as final. This looks like a fairly realistic class to me. I really want to be able to explicitly mark each function that is virtual in this way. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 --- You can write it like this: class MyClass { final { this(); property void property1(int t) property int property1() property void thing(int t) property int thing() void doThing() void addUnrelated(Unrelated x); Unrelated getUnrelated(); } void updateUnrelateds(); // etc. private: void update(); void draw(); final { void handlerDelegate(); void handlerDelegate2(); } int data1; float data2; ... } IMHO it makes no sense to introduce virtual keyword since virtual in D is the default... -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 Yeah, I'll do that in the mean time, but it's not a 'solution'. I still can't grep for virtual (important). And it's really ugly; breaks indentation policy, separates things in and out of braces. D is meant to be cleaner and tidier than C++. Certainly not messier. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 19 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7726 timon.gehr gmx.ch changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |timon.gehr gmx.chevery programmer that exists expects:I'd be careful with strong/wrong statements of this kind. They make your argument seem feeble even if it is not. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 21 2012