Bug 630 – Obscure, unimplemented features related to in/out contracts

Status
RESOLVED
Resolution
FIXED
Severity
major
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
All
OS
All
Creation time
2006-12-02T20:34:00Z
Last change time
2014-02-15T13:18:54Z
Keywords
rejects-valid, spec
Assigned to
bugzilla
Creator
smjg
Blocks
511, 677

Comments

Comment #0 by smjg — 2006-12-02T20:34:24Z
Issue 302 talks of a long-unimplemented part of D: inheritance of in/out contracts. This is about some lesser-known DBC features that are in the D spec. "The compiler can be adjusted to verify that every in and inout parameter is referenced in the in { }, and every out and inout parameter is referenced in the out { }." Admittedly, this seems pointless (leading to convoluted code just to use all the variables), but it's there. "The in-out statement can also be used inside a function, for example, it can be used to check the results of a loop:" There are workarounds for this, but that doesn't excuse anything. I vaguely recall Walter mentioning an intention to remove these from the spec, but nothing's happened about this either way.
Comment #1 by matti.niemenmaa+dbugzilla — 2006-12-03T03:03:37Z
"The in-out statement can also be used inside a function, for example, it can be used to check the results of a loop:" It is noted in the spec that "[t]his is not implemented at this time." The parameter-checking paragraph could use such a comment as well.
Comment #2 by larsivar — 2006-12-03T03:47:45Z
(In reply to comment #1) > It is noted in the spec that "[t]his is not implemented at this time." The > parameter-checking paragraph could use such a comment as well. > The spec has for a long time been the documentation for the compiler, which is the wrong way to do it. The spec is a spec, and whether there exists a compiler that implements it or not, should not be part of it. DMD's own documentation, should mention it though.
Comment #3 by smjg — 2006-12-03T06:08:09Z
Whether DMD's documentation mentions it doesn't alter the fact that the fact that DMD doesn't implement it is a bug. Because DMD is supposed to be a D compiler, not a some-subset-of-D compiler.
Comment #4 by bugzilla — 2006-12-27T01:59:29Z
Fixed DMD 0.178