On Thursday, 22 January 2015 at 11:50:55 UTC, Steven
Schveighoffer wrote:
On 1/21/15 6:03 PM, Paolo Invernizzi wrote:
On Wednesday, 21 January 2015 at 20:32:14 UTC, Steven
Schveighoffer wrote:
On 1/21/15 3:37 AM, Paolo Invernizzi wrote:
On Wednesday, 21 January 2015 at 03:02:53 UTC, Steven
Schveighoffer
wrote:
On 1/20/15 9:04 PM, ketmar via Digitalmars-d wrote:
If he does it wrong, it gives him a stack trace on where to
look. What
is different here than any other programming error?
Are you suggesting that newcomers should learn D by
discovering it day
by day from stack traces?
No, I was saying if something causes an exception/error, it
is a
programming error, and there just isn't any way for a
compiler to
prevent people from making *any* mistakes.
But calling sometimes-allocating functions inside a dtor that
don't
allocate when you call them *that* time shouldn't be banned
by the
compiler.
You can't ban them, either now with an annotated @nogc
destructor:
SetFunctionAttributes.
Right, but the runtime will still catch it if it allocates. I
think the correct place to check it is where it's checked now.
-Steve
I have troubles following your reasoning, so I must have lost
something.
- the proposal was to have a default @nogc in the dtor.
- the rebuttal was that "functions that don't allocate when you
call them *THAT TIME* shouldn't be banned".
- I just noticed that also with destructor marked @nogc, if you
know and trust a @gc function you can use it with the help of
traits and casts.
- the reply was that the runtime will catch it "if it allocate",
that I don't understand what is related with the notice, or with
the original proposal.
I don't see nothing strange in turning into the default the CT
check about avoiding GC allocations in destructors, that's the
vast majority of uses cases, and force an explicit cast/traits if
the programmer want to mark in the code "hey, I know that using
the GC in the DTOR is a bad, but trust this cast, in any case If
I'm wrong the runtime will signal you".
Sorry if I feel pedantic in the discussion, but being a not
native english speaker (and a little in a hurry when writing in
the forums) I just wanted to be clear in my exposition... ;-)
--
Paolo