Thread overview
invariant bug or documentation error.
Feb 05, 2005
Dave
Feb 05, 2005
Dave
Feb 06, 2005
Thomas Kuehne
February 05, 2005
Private member g() in an invariant block causes a stack overflow, contrary to the doc.: http://digitalmars.com/d/class.html

class Foo
{
    int i = 10;
    private int g() { return i = 1; }
    this(){}
    invariant
    {
        g(); // Causes Stack Overflow after constructor is called
        assert(i >= 10);
    }
}

void main()
{
    Foo f = new Foo();
    assert(f); // or when this is executed
    f.g();       // or when this is called.
}


February 05, 2005
This applies to dmd v0.111.

In article <cu30gc$29cb$1@digitaldaemon.com>, Dave says...
>
>Private member g() in an invariant block causes a stack overflow, contrary to the doc.: http://digitalmars.com/d/class.html
>
>class Foo
>{
>    int i = 10;
>    private int g() { return i = 1; }
>    this(){}
>    invariant
>    {
>        g(); // Causes Stack Overflow after constructor is called
>        assert(i >= 10);
>    }
>}
>
>void main()
>{
>    Foo f = new Foo();
>    assert(f); // or when this is executed
>    f.g();       // or when this is called.
>}
>
>


February 06, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Dave schrieb am Sat, 5 Feb 2005 11:43:33 -0600:
> Private member g() in an invariant block causes a stack overflow, contrary to the doc.: http://digitalmars.com/d/class.html
>
> class Foo
> {
>     int i = 10;
>     private int g() { return i = 1; }
>     this(){}
>     invariant
>     {
>         g(); // Causes Stack Overflow after constructor is called
>         assert(i >= 10);
>     }
> }
>
> void main()
> {
>     Foo f = new Foo();
>     assert(f); // or when this is executed
>     f.g();       // or when this is called.
> }

Added to DStress as http://dstress.kuehne.cn/run/invariant_19.d http://dstress.kuehne.cn/run/invariant_20.d http://dstress.kuehne.cn/run/invariant_21.d http://dstress.kuehne.cn/run/invariant_22.d

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCBf073w+/yD4P9tIRAsoAAJ4k1hQqgPd9b0fWTgR3PWKgzo9JoQCfXMnx
WDW/MkhZ5PQ+D80YqF5Nyz8=
=62nc
-----END PGP SIGNATURE-----