[Issue 14696] destructor for temporary called before statement is complete with conditional operator

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Nov 28 14:15:45 UTC 2019


https://issues.dlang.org/show_bug.cgi?id=14696

Suleyman Sahmi (سليمان السهمي) <sahmi.soulaimane at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
                 CC|                            |sahmi.soulaimane at gmail.com
         Resolution|FIXED                       |---

--- Comment #12 from Suleyman Sahmi (سليمان السهمي) <sahmi.soulaimane at gmail.com> ---
The following case is still affected:

```
extern(C) void puts(const char*);

struct S
{
    int i;
    ~this() { puts("D"); }
}

S makeS(int i) { return S(i); }

void main()
{
    int var = true ? 1 : makeS(makeS(1).i - 1).i;
}
```

The program prints "D" at runtime which means the destructor is called when it
shouldn't.

--


More information about the Digitalmars-d-bugs mailing list