Some notes:

1. The ``Identifier :`` syntax is used for labels within a statement list.

2. The feature in question you are asking about is assertion clauses. D does not have this. https://www.eiffel.org/doc/solutions/Design_by_Contract_and_Assertions https://www.eiffel.org/doc/eiffel/Eiffel_programming_language_syntax#Assertions

3. Eiffel requires assertion clauses in the in condition (with the tag), but not in the out contract.

4. Instead of introducing new syntax specific to this task, I would suggest introduce having UDA's on statements. ``@AssertClause("more than zero") { ... }``

5. We support the class inheritance behavior of contracts. Right now this is butting heads against our exception handling behavior and is preventing us from making certain changes (that are not necessarily better).

6. The current behavior of contracts, when they get compiled in and executed isn't what is expected currently. This needs fixing.

7. Its unlikely the behavior of interfaces wrt. method behavior (such as no default body) is going to align with what you expect. Again, I want to resolve this but it isn't on my short term list.

If you come up with a concrete set of changes, then you would post it on the ideas forum as a starting point.

Classes in general are on my list of things that need work, but my attention is elsewhere and that lot of work is waiting on other work done by other people to both start and finish. Specifically related to TypeInfo removal.

  • Eiffel like repo... Brother Bill via Digitalmars-d-learn
    • Re: Eiffel ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn

Reply via email to