[Issue 7726] 'virtual' keyword please

2014-02-12 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=7726


Andrej Mitrovic andrej.mitrov...@gmail.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||andrej.mitrov...@gmail.com
 Resolution||DUPLICATE


--- Comment #9 from Andrej Mitrovic andrej.mitrov...@gmail.com 2014-02-12 
12:58:06 PST ---
*** This issue has been marked as a duplicate of issue 11616 ***

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 7726] 'virtual' keyword please

2012-03-21 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726


timon.g...@gmx.ch changed:

   What|Removed |Added

 CC||timon.g...@gmx.ch


--- Comment #8 from timon.g...@gmx.ch 2012-03-21 12:45:15 PDT ---
(In reply to comment #4)
 What I want is the ability to work exactly the same way C++,C# is, and how
 every 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: ---


[Issue 7726] 'virtual' keyword please

2012-03-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726



--- Comment #2 from Manu turkey...@gmail.com 2012-03-19 04:09:50 PDT ---
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: ---


[Issue 7726] 'virtual' keyword please

2012-03-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726



--- Comment #3 from Piotr Szturmaj psztur...@tlen.pl 2012-03-19 05:08:26 PDT 
---
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: ---


[Issue 7726] 'virtual' keyword please

2012-03-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726



--- Comment #5 from Manu turkey...@gmail.com 2012-03-19 06:33:04 PDT ---
*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: ---


[Issue 7726] 'virtual' keyword please

2012-03-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726



--- Comment #6 from Piotr Szturmaj psztur...@tlen.pl 2012-03-19 07:00:07 PDT 
---
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: ---


[Issue 7726] 'virtual' keyword please

2012-03-19 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726



--- Comment #7 from Manu turkey...@gmail.com 2012-03-19 10:02:13 PDT ---
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: ---


[Issue 7726] 'virtual' keyword please

2012-03-18 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726


Walter Bright bugzi...@digitalmars.com changed:

   What|Removed |Added

 CC||bugzi...@digitalmars.com
   Severity|critical|enhancement


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 7726] 'virtual' keyword please

2012-03-18 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=7726


Piotr Szturmaj psztur...@tlen.pl changed:

   What|Removed |Added

 CC||psztur...@tlen.pl


--- Comment #1 from Piotr Szturmaj psztur...@tlen.pl 2012-03-18 13:07:32 PDT 
---
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: ---