[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: 5.1
- From: Glenn Maynard <glenn@...>
- Date: Mon, 17 Oct 2005 23:20:20 -0400
On Mon, Oct 17, 2005 at 05:56:49PM -0500, Rici Lake wrote:
> I'm getting quite used to the run-time "warning"; it looks like this:
>
> foo:27: attempt to call a table value
The point of the warning is to give it in advance, during the deprecation
period, before it becomes an error. A "warning" that's put in quotes
because it's a fatal error isn't a warning. :)
> Now, Lua has no compile-time warning mechanism, and it is not
> particularly clear how one would even add one to the compiler (possibly
> an optional callback function to accept warnings?), but in principle it
> is easy enough to detect most instances of the "missing-pairs" problem
> at compile-time: you simply check for the case in "for <varlist> in
> <exprlist> do" where <exprlist> is a single expression which is not a
> function call of some kind. That's an imperfect check, but it would be
> good enough for a warning.
The case I was thinking of is
function f(it) for x,y in it do print(x) end end
t = { 1, 2, 3 }
f( pairs(t) )
However, that doesn't work. It's obvious why with a little poking. I
keep finding Lua's multiple-results unintuitive and rather forced compared
to the rest of the language; I guess I'll get used to them eventually.
> I'm not sure why Lua deserves any more Yucking than C in this pair of
> vaguely comparable cases, although one would certainly prefer Lua to be
> less Yuckworthy.
A runtime warning mechanism would be Yuck, since it would mean runtime
overhead if enabled and not catch things as quickly as a compile-time
warning. (Never mind compilation done at run-time ...)
--
Glenn Maynard