** Return false if folding can raise an error. ** Bitwise operations need operands convertible to integers; division ** operations cannot have 0 as divisor. */
| 1294 | ** operations cannot have 0 as divisor. |
| 1295 | */ |
| 1296 | static int validop (int op, TValue *v1, TValue *v2) { |
| 1297 | switch (op) { |
| 1298 | case LUA_OPBAND: case LUA_OPBOR: case LUA_OPBXOR: |
| 1299 | case LUA_OPSHL: case LUA_OPSHR: case LUA_OPBNOT: { /* conversion errors */ |
| 1300 | lua_Integer i; |
| 1301 | return (luaV_tointegerns(v1, &i, LUA_FLOORN2I) && |
| 1302 | luaV_tointegerns(v2, &i, LUA_FLOORN2I)); |
| 1303 | } |
| 1304 | case LUA_OPDIV: case LUA_OPIDIV: case LUA_OPMOD: /* division by 0 */ |
| 1305 | return (nvalue(v2) != 0); |
| 1306 | default: return 1; /* everything else is valid */ |
| 1307 | } |
| 1308 | } |
| 1309 | |
| 1310 | |
| 1311 | /* |
no test coverage detected