| 470 | |
| 471 | |
| 472 | void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) { |
| 473 | switch (var->k) { |
| 474 | case VLOCAL: { |
| 475 | freeexp(fs, ex); |
| 476 | exp2reg(fs, ex, var->u.s.info); |
| 477 | return; |
| 478 | } |
| 479 | case VUPVAL: { |
| 480 | int e = luaK_exp2anyreg(fs, ex); |
| 481 | luaK_codeABC(fs, OP_SETUPVAL, e, var->u.s.info, 0); |
| 482 | break; |
| 483 | } |
| 484 | case VGLOBAL: { |
| 485 | int e = luaK_exp2anyreg(fs, ex); |
| 486 | luaK_codeABx(fs, OP_SETGLOBAL, e, var->u.s.info); |
| 487 | break; |
| 488 | } |
| 489 | case VINDEXED: { |
| 490 | int e = luaK_exp2RK(fs, ex); |
| 491 | luaK_codeABC(fs, OP_SETTABLE, var->u.s.info, var->u.s.aux, e); |
| 492 | break; |
| 493 | } |
| 494 | default: { |
| 495 | lua_assert(0); /* invalid var kind to store */ |
| 496 | break; |
| 497 | } |
| 498 | } |
| 499 | freeexp(fs, ex); |
| 500 | } |
| 501 | |
| 502 | |
| 503 | void luaK_self (FuncState *fs, expdesc *e, expdesc *key) { |
no test coverage detected