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









Jesse Phillips <jessekphillips+D gmail.com> 