[Mono-list] Design by Contract
Stephen Touset
stephen@touset.org
Wed, 29 Dec 2004 13:04:21 -0500
--=-AAUAhkePVtSEQn21v3i5
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
On Tue, 2004-12-28 at 20:31 -0500, Joshua Tauberer wrote:
> I've thought about this a few times and even tried hacking some
> rudimentary DBC support into Mono using attributes. The difficulty in
> this depends on what you want out of DBC. I was going for something that
> would see contract violations at compile time (which turned out to be way
> over my head, so I didn't get far). Just adding assertions automatically
> would be much easier, or even easy.
I was just looking for runtime checking of contract violations, not
compile-time.
> Adding pre/post-condition assertions would just mean going into the parts
> of mcs for methods and properties, looping through the attributes on the
> method/parameters, and adding some object creations (to instantiate the
> attributes) and method invocations (to have the attribute perform the
> check) in the generated IL. Not much, really.
Well...this was actually my next step: adding support in mcs. However, I
don't really have the desire to maintain a fork of mcs, and I was hoping
to test the water to see if this is something that the mono folks would
be opposed to, since it's not strictly C#.
=46rom rom what I can tell, there appears to be no way to add the ability to
do DBC-like checking to C# programs without modifying the compiler
itself. A perl script could theoretically just convert attributes into
code, but contract inheritance quickly becomes a thorny issue.
So, is support for DBC something that anyone would be willing to see in
mcs? Is it even something the mcs folks would allow as a patch, or would
I need to maintain a separate fork of mcs (something I'm not really
willing to do)?
--=20
Stephen Touset <stephen@touset.org>
--=-AAUAhkePVtSEQn21v3i5
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.5 (GNU/Linux)
iD8DBQBB0vGl+fMdKwQeHvYRAiJ2AJ9GOiibwUOfIWqwgDUojsx5rZzSfQCfebng
1boMwOa3Ouh3EvkwqQxtiPk=
=tWBx
-----END PGP SIGNATURE-----
--=-AAUAhkePVtSEQn21v3i5--