January 20, 2019 preconditions and interfaces | ||||
---|---|---|---|---|
| ||||
Hi all, Playing with interfaces and preconditions in methods I get strange results with dmd-2.0.84.0 but also with dmd-nightly. My code is like this: ------------- import std.stdio; interface Thing2D { void width(int w) in { writeln("Thing2D.width contract w = ",w); assert(w > 0); } } class Line : Thing2D { override void width(int w) in { writeln("Line.width contract w = ",w); assert(w >= 0); } do { writeln("Line.width: w = ", w); } } void main() { auto l = new Line; l.width(-1); } --------------- 1) With dmd-2.084.0 I get: ./ifaceprecond Thing2D.width contract w = 2 Line.width: w = -1 2) With dmd-nightly (as of today) I get random values for interface's 'w': ./ifaceprecond Thing2D.width contract w = 647271536 Line.width: w = -1 I think this should be an error caught by the contract, isn't it? Thx! Antonio |
January 20, 2019 Re: preconditions and interfaces | ||||
---|---|---|---|---|
| ||||
Posted in reply to Antonio Corbi | On Sunday, 20 January 2019 at 15:39:49 UTC, Antonio Corbi wrote: > Hi all, > > Playing with interfaces and preconditions in methods I get strange results with dmd-2.0.84.0 but also with dmd-nightly. My code is like this: > ------------- > import std.stdio; > > interface Thing2D { > void width(int w) > in { > writeln("Thing2D.width contract w = ",w); > assert(w > 0); > } > } > > class Line : Thing2D { > override void width(int w) > in { > writeln("Line.width contract w = ",w); > assert(w >= 0); > } > do { > writeln("Line.width: w = ", w); > } > } > > void main() { > auto l = new Line; > l.width(-1); > } > > --------------- > > 1) With dmd-2.084.0 I get: > ./ifaceprecond > Thing2D.width contract w = 2 > Line.width: w = -1 > > 2) With dmd-nightly (as of today) I get random values for interface's 'w': > ./ifaceprecond > Thing2D.width contract w = 647271536 > Line.width: w = -1 > > I think this should be an error caught by the contract, isn't it? > > Thx! > Antonio Seems to be something known... https://forum.dlang.org/post/hficlieevnvzrnxywkzm@forum.dlang.org |
Copyright © 1999-2021 by the D Language Foundation