Interface - "Implements or Inherit", to make a new comparer class

Public forum to share code snippets, screen shorts, experiences, etc.
User avatar
Phil Hepburn
Posts: 743
Joined: Sun Sep 11, 2016 2:16 pm

Interface - "Implements or Inherit", to make a new comparer class

Post by Phil Hepburn »

Hi Frank,

Before we discuss the syntax of how we would like things, it is the 'meaning' that we must get right.

If we don't get Polymorphism correct then we are doomed. The Implements / Inherit issue was becoming a 'can't type' that issue! Before we define our syntax to exclude 'this or that', we do need to know what MUST be done to get the Polymorphism right.

Having said all that I don't consider myself knowledgeable at all in this field, so I warn others, and then stand aside ;-0)

For my 'feel' on this, I would say we just leave stuff as it is, until we see a problem to fix. Remember that I started this thread with two ways to do the same thing - both worked, and I ask for clarity. So to me this is not a reason to go and change 'stuff', with the possibility of breaking something.

How thinks you 'Batman' ?

Cheers,
Phil.
P.S. next big question, who is Batman ? Robert, Nikos or Chris ??
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Interface - "Implements or Inherit", to make a new comparer class

Post by wriedmann »

Hi Phil,

if I understand Robert correctly, you can write

Code: Select all

class MyClass inherit IMyInterface
or

Code: Select all

class MyClass implements IMyInterface
and the compiler generates exactly the same code - if IMyInterface is an interface, it used the "interface" meaning, and if IMyInterface would be a class, it would be use the "inherit" meaning.

I like X# explicite declaration of "implements" and "inherit" because it makes code easier to read, without thinking if a thing is a class (from which inherit) or an interface (which implement).

Personally, I would like a compiler error or warning if "implement" is used with a class or "inherit" is used with an interface.

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
User avatar
Phil Hepburn
Posts: 743
Joined: Sun Sep 11, 2016 2:16 pm

Interface - "Implements or Inherit", to make a new comparer class

Post by Phil Hepburn »

Hi Wolfgang,

Okay' I go along with what you explain ;-0)

Seems good to me, and in-line with what I was thinking about.

Well done, clean and clear, and good common sense too I feel.

Are you still in the Yucatan ? Did you find the meteor ? Any signs of the odd dinosaur ? 

Hope your journey is a safe one if you still have to return home.

Regards,
Phil.
Frank Maraite
Posts: 178
Joined: Sat Dec 05, 2015 10:44 am
Location: Germany

Interface - "Implements or Inherit", to make a new comparer class

Post by Frank Maraite »

Wolfgang, Phil,
Wolfgang Riedmann wrote: I like X# explicite declaration of "implements" and "inherit" because it makes code easier to read, without thinking if a thing is a class (from which inherit) or an interface (which implement).

Personally, I would like a compiler error or warning if "implement" is used with a class or "inherit" is used with an interface.

Wolfgang
that's right.

Indeed it is different:

- with inherting a class we inherit both an interface (all public members) and an, some times partially in case of abstract classes, implementation of this interface.
- otherwise we have to implement this interface completly.

So I would say together with the warning Wolfgang mentioned it would be perfect.

Frank
User avatar
robert
Posts: 4520
Joined: Fri Aug 21, 2015 10:57 am
Location: Netherlands

Interface - "Implements or Inherit", to make a new comparer class

Post by robert »

Wolfgang,
Wolfgang wrote: Personally, I would like a compiler error or warning if "implement" is used with a class or "inherit" is used with an interface.
I will see what I can do, but this does not have a high priority:
The translation from INHERIT and IMPLEMENTS to the ":" operator is done after the parsing stage when we transform the Antlr parse tree into a Roslyn parse tree. At that moment all we have is type names and no knowledge about whether these are classes or interfaces.
In a later compiler stage (the Binder) the compiler looks up the type names and then we can determine if the types are class or interface.

At that stage we could look back at the original Antlr parse tree and figure out if the type name was part of an INHERIT clause or part of an IMPLEMENTS clause and issue a warning.

We can probably implement this on a rainy Sunday afternoon, but right now we are chasing the last remaining issues in the VO/Vulcan compatibility.

Things like:

- The difference between LONG(p) and LONG(_CAST,p) for different types of p (PTR, BYTE PTR, VOSTRUCT PTR etc)
- The difference between PTR(p), PTR(u), PTR(_CAST,p) and PTR(_CAST,u) where p is a pointer and u a USUAL

I thought I understood this perfectly but Chris just found some cases where things are not what you would expect...

Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
Frank Maraite
Posts: 178
Joined: Sat Dec 05, 2015 10:44 am
Location: Germany

Interface - "Implements or Inherit", to make a new comparer class

Post by Frank Maraite »

Robert,
Robert van der Hulst wrote: We can probably implement this on a rainy Sunday afternoon, but right now we are chasing the last remaining issues in the VO/Vulcan compatibility.
I totally agree. It's kind of beauty, not a technical requirement.

Frank
User avatar
Phil Hepburn
Posts: 743
Joined: Sun Sep 11, 2016 2:16 pm

Interface - "Implements or Inherit", to make a new comparer class

Post by Phil Hepburn »

I agree Robert and Frank,

keep this for when you have done the necessary stuff, there is plenty of that I should think ;-0)

At least we have as good as C#, so no need to panic.

You will have to wait a bit longer for your true 'beauty' Frank !

Speak soon,
Phil.
P.S. X# coding going well this morning - will post in Pearls later.
User avatar
wriedmann
Posts: 3755
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Interface - "Implements or Inherit", to make a new comparer class

Post by wriedmann »

Hi Robert,

IMHO this syntax check has a very low priority - there are much more important things to do, even on a rainy day.

Wolfgang

@Phil: yes, I'm in Yucatan, today in Merida after visiting the pyramids in Uxmal yesterday. We have our return flight in the night from Saturday to Sunday
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Post Reply