[Issue 10889] New: Invariants are useless the way they are defined
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Aug 25 09:07:24 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10889
Summary: Invariants are useless the way they are defined
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: deadalnix at gmail.com
--- Comment #0 from deadalnix <deadalnix at gmail.com> 2013-08-25 09:07:22 PDT ---
To repeat what i posted in the newsgroup :
As they are defined now, invariant are plain useless. I find
myself disabling them one by one in my code as soon as cases get
outside simple trivia.
The problem is that invariant are checked at the beginning/end on
public function calls. As a consequence, it is impossible to use
any public method in an invariant.
For instance, just right now I did refactor a struct to use
bitfields, in order to make it more compact. Now I have to remove
the invariant as field access are now function calls.
Another typical situation is when you want to assert certain
properties in a class hierarchy, where calling virtual method is
part of the invariant check.
invariant should (and must to be useful) be inserted at callee
point, when the callee isn't itself subject to invariant
insertion, and around public memeber manipulation (when the
manipulator isn't subject to invariant insertion).
Any other pattern it doomed to create infinite recursion for non
trivial invariant checks.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list