www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Abstract class contracts

reply "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
Why does D require that in-contracts on a class method must have a
method body? Based on my understanding of TDPL, in-contracts are
supposed to be inherited by derived classes, aren't they? Currently I
can't seem to convince DMD to accept an in-contract on an abstract base
class method:

	abstract class Base {
		abstract int method(int j)
		in { assert(j < 10); }; // <-- compile error
	}

What's the rationale for this? Doesn't it defeat the purpose of DbC (I
want the abstract base class to "set the rules" as to what are
acceptable parameters to methods)?


T

-- 
Кто везде - тот нигде.
Feb 25 2013
parent Timon Gehr <timon.gehr gmx.ch> writes:
On 02/25/2013 08:36 PM, H. S. Teoh wrote:
 Why does D require that in-contracts on a class method must have a
 method body? Based on my understanding of TDPL, in-contracts are
 supposed to be inherited by derived classes, aren't they? Currently I
 can't seem to convince DMD to accept an in-contract on an abstract base
 class method:

 	abstract class Base {
 		abstract int method(int j)
 		in { assert(j < 10); }; // <-- compile error
 	}

 What's the rationale for this? Doesn't it defeat the purpose of DbC (I
 want the abstract base class to "set the rules" as to what are
 acceptable parameters to methods)?
...

http://d.puremagic.com/issues/show_bug.cgi?id=6549 Even more annoying is the following issue: http://d.puremagic.com/issues/show_bug.cgi?id=6856
Feb 25 2013