diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-10-30 15:46:56 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2018-10-30 15:46:56 -0300 |
| commit | e073cbc2e538369e0611abfc9948f301aea6aef3 (patch) | |
| tree | 6ef30a285092e8bcc15021b1d857a62dbab36fd6 /lvm.c | |
| parent | 2316ec4c24a475e091ec3153a5bd908801a3a109 (diff) | |
| download | lua-e073cbc2e538369e0611abfc9948f301aea6aef3.tar.gz lua-e073cbc2e538369e0611abfc9948f301aea6aef3.tar.bz2 lua-e073cbc2e538369e0611abfc9948f301aea6aef3.zip | |
Better error messages for invalid operands in numeric 'for'
"Better" and similar to error messages for invalid function arguments.
*old message: 'for' limit must be a number
*new message: bad 'for' limit (number expected, got table)
Diffstat (limited to 'lvm.c')
| -rw-r--r-- | lvm.c | 8 |
1 files changed, 4 insertions, 4 deletions
| @@ -1681,7 +1681,7 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
| 1681 | int stopnow; | 1681 | int stopnow; |
| 1682 | if (unlikely(!forlimit(plimit, &ilimit, 1, &stopnow))) { | 1682 | if (unlikely(!forlimit(plimit, &ilimit, 1, &stopnow))) { |
| 1683 | savestate(L, ci); /* for the error message */ | 1683 | savestate(L, ci); /* for the error message */ |
| 1684 | luaG_runerror(L, "'for' limit must be a number"); | 1684 | luaG_forerror(L, plimit, "limit"); |
| 1685 | } | 1685 | } |
| 1686 | initv = (stopnow ? 0 : ivalue(init)); | 1686 | initv = (stopnow ? 0 : ivalue(init)); |
| 1687 | setivalue(plimit, ilimit); | 1687 | setivalue(plimit, ilimit); |
| @@ -1732,13 +1732,13 @@ void luaV_execute (lua_State *L, CallInfo *ci) { | |||
| 1732 | lua_Number ninit; lua_Number nlimit; lua_Number nstep; | 1732 | lua_Number ninit; lua_Number nlimit; lua_Number nstep; |
| 1733 | savestate(L, ci); /* in case of errors */ | 1733 | savestate(L, ci); /* in case of errors */ |
| 1734 | if (unlikely(!tonumber(plimit, &nlimit))) | 1734 | if (unlikely(!tonumber(plimit, &nlimit))) |
| 1735 | luaG_runerror(L, "'for' limit must be a number"); | 1735 | luaG_forerror(L, plimit, "limit"); |
| 1736 | setfltvalue(plimit, nlimit); | 1736 | setfltvalue(plimit, nlimit); |
| 1737 | if (unlikely(!tonumber(pstep, &nstep))) | 1737 | if (unlikely(!tonumber(pstep, &nstep))) |
| 1738 | luaG_runerror(L, "'for' step must be a number"); | 1738 | luaG_forerror(L, pstep, "step"); |
| 1739 | setfltvalue(pstep, nstep); | 1739 | setfltvalue(pstep, nstep); |
| 1740 | if (unlikely(!tonumber(init, &ninit))) | 1740 | if (unlikely(!tonumber(init, &ninit))) |
| 1741 | luaG_runerror(L, "'for' initial value must be a number"); | 1741 | luaG_forerror(L, init, "initial value"); |
| 1742 | setfltvalue(init, luai_numsub(L, ninit, nstep)); | 1742 | setfltvalue(init, luai_numsub(L, ninit, nstep)); |
| 1743 | } | 1743 | } |
| 1744 | pc += GETARG_Bx(i); | 1744 | pc += GETARG_Bx(i); |
