lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Roberto Ierusalimschy kirjoitti 17.2.2009 kello 20:14:

I do not see why the need for the <scoped_statements>. It would be
simpler to add only a new form of locals. Something like

local finalized f, g = ...

that calls ":close()" (or __gc??) when it goes out of scope.  Of
you can (should?) use a conventional do-end around it:

And all of that can easily be done using token modifiers.

Case solved?  :)

I do not see how this can be done with token modifiers, if we want to
handle exceptional exits too.

-- Roberto

Yes, you are right. Token modifiers would cope with the normal exits (break/return/end of scope) but they couldn't "see" an error happening in some called function, for example. Not without a pcall.

As to the coroutine issue, would it be valid to just say a coroutine switch (yield/resume) is not allowed to take place within a finalizable scope. Would that be too restricted in practice? If not, then the coroutine problem vanishes.

I do have one working solution to this, which is the Lanes approach. But I know it's not the generic answer.