RFC: 2 enhancement DIPs that need feedback
Basile B.
b2.temp at gmx.com
Thu May 22 09:31:51 UTC 2025
On Wednesday, 21 May 2025 at 04:55:50 UTC, Walter Bright wrote:
> On 5/14/2025 9:56 AM, Timon Gehr wrote:
>> Go ahead and implement it. It's harder, not a simplification.
>> Suddenly, whenever you are parsing any expression, you will
>> have to take into account the possibility that it is actually
>> a variable declaration. The way DMD deals with lvalues is also
>> ill-equipped to allow this to be added easily. Furthermore,
>> you now have to do proper scope handling for short-circuiting
>> operations.
>
> There's also a problem with handling destruction of the
> declaration.
I dont think so. I consider that, based on default
initialization, which has to always happen, even if an AndAnd LHS
has evaluated to true and then that the RHS is a VarDeclExp, then
its matching variable is always destructible.
To be clear the AST for
```d
if (MyStruct ms0 = call0) && (MyStruct ms1 == call1) {}
```
is to be thought as
```d
{
MyStruct ms0; // def init, ms0 is in valid state
MyStruct ms1; // def init, ms1 is in valid state
if (ms0 = call0) && (ms1 == call1) {}
// ...
// right before the end of the scope
ms0.__dtor();
ms1.__dtor();
}
```
In practice that scenario almost never happen, since VarDeclExp
are 99% of the time used for pointers or simple numeric types.
More information about the Digitalmars-d
mailing list