digitalmars.D.learn - Contracts for interfaces and abstract classes
I'm on ubuntu x64 using dmd 2.060 and the following gives an exception: rdmd --main -unittest -version=useInterface mml/sets.d while the following runs just fine: rdmd --main -unittest -version=useAbstractClass mml/sets.d The exception is: object.Exception src/object_.d(108): need opCmp for class mml.sets.ArraySet!(int).ArraySet ---------------- /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(bool mml.sets.Set!(int).Set.add(const(int)).void __ensure(ref const(bool))+0x15) [0x416b25] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(bool mml.sets.ArraySet!(int).ArraySet.add(const(int))+0xae) [0x416c6e] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(void mml.sets.__unittest1()+0x30) [0x416aac] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(void mml.sets.__modtest()+0x9) [0x417051] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(extern (C) bool core.runtime.runModuleUnitTests().int __foreachbody314(ref object.ModuleInfo*)+0x30) [0x41bc5c] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(int rt.minfo.moduleinfos_apply(scope int delegate(ref object.ModuleInfo*))+0x55) [0x41a119] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(runM duleUnitTests+0xae) [0x41bb22] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(extern (C) int rt.dmain2.main(int, char**).void runAll()+0x22) [0x418f5e] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x2a) [0x4188aa] /tmp/.rdmd-1000/rdmd-sets.d-6930C9CC42761331FC9D9AEC14A3F32C/sets(main+0xd1) [0x418835] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7fc94ce5276d] see link for mml/sets.d: http://codepad.org/A9B6WeJH Why should the fact that I used an interface cause Object.opCmp(Object o) to be called?
Aug 19 2012
Sorry, the title of the thread might be irrelevant, it's just that I was playing around with contracts when I noticed the problem.
Aug 20 2012