digitalmars.D.learn - use of Class Invariants
- %u (12/12) Dec 08 2010 At the moment most of my public member functions are littered with these...
- Jonathan M Davis (5/19) Dec 08 2010 If an invariant fails, it throws an AssertError which will give you stac...
- %u (3/22) Dec 08 2010 That is what I am missing, a stack trace.
- Jesse Phillips (2/4) Dec 08 2010 I don't think the Windows stack trace is compete yet. Works in Linux.
- Trass3r (2/4) Dec 08 2010 Well tango includes stack traces if you import the right module.
At the moment most of my public member functions are littered with these kind of in-out clauses. in{ assert(wellformed, toString); } out{ assert(wellformed, toString); } They just beg for invariants, I though.. But invariants don't report the location of failure of contract, only the location of failure within the invariant. This seems kind of limiting. Am I missing something here?
Dec 08 2010
On Wednesday 08 December 2010 00:22:23 %u wrote:At the moment most of my public member functions are littered with these kind of in-out clauses. in{ assert(wellformed, toString); } out{ assert(wellformed, toString); } They just beg for invariants, I though.. But invariants don't report the location of failure of contract, only the location of failure within the invariant. This seems kind of limiting. Am I missing something here?If an invariant fails, it throws an AssertError which will give you stack trace. That stack trace should include which function called the invariant. So, it _does_ tell you which function resulted in the invariant failing. - Jonathan M Davis
Dec 08 2010
== Quote from Jonathan M Davis (jmdavisProg gmx.com)'s articleOn Wednesday 08 December 2010 00:22:23 %u wrote:That is what I am missing, a stack trace. How do I see a stack trace? dmd1(win)At the moment most of my public member functions are littered with these kind of in-out clauses. in{ assert(wellformed, toString); } out{ assert(wellformed, toString); } They just beg for invariants, I though.. But invariants don't report the location of failure of contract, only the location of failure within the invariant. This seems kind of limiting. Am I missing something here?If an invariant fails, it throws an AssertError which will give you stack trace. That stack trace should include which function called the invariant. So, it _does_ tell you which function resulted in the invariant failing. - Jonathan M Davis
Dec 08 2010
%u Wrote:That is what I am missing, a stack trace. How do I see a stack trace? dmd1(win)I don't think the Windows stack trace is compete yet. Works in Linux.
Dec 08 2010
That is what I am missing, a stack trace. How do I see a stack trace? dmd1(win)Well tango includes stack traces if you import the right module. For D2/Win use http://3d.benjamin-thaut.de/?p=15
Dec 08 2010