[Issue 3578] New: Impossible to run a struct invariant using assert(s)
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Dec 5 08:24:57 PST 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3578
Summary: Impossible to run a struct invariant using assert(s)
Product: D
Version: 1.041
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: llucax at gmail.com
--- Comment #0 from Leandro Lucarella <llucax at gmail.com> 2009-12-05 08:24:54 PST ---
This fails to compile (with -unittest):
---
struct S {
invariant() { assert (false); }
unittest { S s; assert (s); }
}
---
With this error message:
inv.d(3): Error: expression s of type S does not have a boolean value
With both DMD 1 and 2 (tested with DMD 1.041 and DMD 2.037. Changing struct to
class compiles fine (and dumps a core if you run it, of course ;).
Thes specs are not clear on this in both D1 and D2. Invariant is only mentioned
in structs, but I guess it's more likely to think that the description of class
invariant apply to structs too, so I guess this should be supported in both D1
and D2.
If it's a change to big to make it in D1, I think the specs should be updated
to clarify the differences between struct and class invariants. In D2 I don't
see why the language should not be updated to support this, since there is no
other way to trigger an invariant check (and, for example, invariant is not
executed when a struct is constructed or when using alias this, I think).
--
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