digitalmars.D.bugs - [Issue 4648] New: "In" contracts in interfaces missbehaving
- d-bugmail puremagic.com (41/41) Aug 15 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4648
- d-bugmail puremagic.com (15/15) Jun 04 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4648
- d-bugmail puremagic.com (25/25) Jun 05 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4648
- d-bugmail puremagic.com (12/12) Jan 25 2012 http://d.puremagic.com/issues/show_bug.cgi?id=4648
http://d.puremagic.com/issues/show_bug.cgi?id=4648 Summary: "In" contracts in interfaces missbehaving Product: D Version: D2 Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: andrej.mitrovich gmail.com 12:59:13 PDT --- Code: interface I { int foo(int i) in { writeln(i); assert(i == 4); } } class Base : I { int foo(int i) { return i; } } import std.stdio; void main() { auto b = new Base; b.foo(4); } The writeln will output garbage, ex: 1630368629 core.exception.AssertError test(83): Assertion failure You can remove the writeln, but the assert still fails. I'm using the same syntax as defined in the docs: http://www.digitalmars.com/d/2.0/interface.html -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 15 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4648 Mike Shulman <viritrilbia+d gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |viritrilbia+d gmail.com PDT --- 'Out' contracts in interfaces seem to have the same problem: the arguments passed to the function get replaced by garbage. On my system (DMD v2.053 on Ubuntu) the precise value of the garbage appears to depend on what data members exist in the class which implements the interface. E.g. Andrej's code writeln outputs "0" for me, but if I add "int x;" to the definition of Base, it outputs instead "135115244". -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 04 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4648 Denis Karabaza <truesmiler gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |truesmiler gmail.com PDT --- Same problem, when overriding contracted function (D 2.053, windows and ubutnu). So, it seems to be about all the contract inheritance. class A { void f(int a) in { writeln(a); } out { writeln(a); } body {} } class B: A { override void f(int a) { writeln(a); } } void main() { A a = new B; a.f(42); // prints <garbage>, 42, <garbage> } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 05 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4648 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |DUPLICATE 12:41:12 PST --- *** This issue has been marked as a duplicate of issue 7335 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 25 2012