Date: Tue, 11 Aug 2026 21:47:48 +0200
On 8/11/26 21:12, Ville Voutilainen via Std-Proposals wrote:
> On Tue, 11 Aug 2026 at 22:11, Henry Skoglund via Std-Proposals
> <std-proposals_at_[hidden]> wrote:
>>
>> On 2026-08-11 21:05, Simon Schröder wrote:
>>> This reminds me (in case you are continuing with the proposal): You should discuss if once a variable has been poisoned, if the same name can be reused for a different variable.
>> Hi, once poisoned I think it should not be allowed to be reused. I.e.
>> issue a compiler error like:
>> double raw;
>> forget raw;
>> int raw; // <--- error: raw is forgotten and cannot be resurrected
>
> Exactly. Make name lookup still find the name, but make it an error to
> find a poisoned name.
Except this particular example doesn't do name lookup.
You're matching declarations.
What about this situation:
int x;
void f()
{
forget x;
++x; // error
double x; // error?
}
Or this:
int x;
forget x;
void g()
{
int x; // ok?
}
Jens
> On Tue, 11 Aug 2026 at 22:11, Henry Skoglund via Std-Proposals
> <std-proposals_at_[hidden]> wrote:
>>
>> On 2026-08-11 21:05, Simon Schröder wrote:
>>> This reminds me (in case you are continuing with the proposal): You should discuss if once a variable has been poisoned, if the same name can be reused for a different variable.
>> Hi, once poisoned I think it should not be allowed to be reused. I.e.
>> issue a compiler error like:
>> double raw;
>> forget raw;
>> int raw; // <--- error: raw is forgotten and cannot be resurrected
>
> Exactly. Make name lookup still find the name, but make it an error to
> find a poisoned name.
Except this particular example doesn't do name lookup.
You're matching declarations.
What about this situation:
int x;
void f()
{
forget x;
++x; // error
double x; // error?
}
Or this:
int x;
forget x;
void g()
{
int x; // ok?
}
Jens
Received on 2026-08-11 19:47:54
