fix JIT SETUi/SETMi/SETCi missing unset variable checks
This commit is contained in:
parent
de5bcfe211
commit
e8caed529c
@ -216,9 +216,9 @@ INS B i_PRED2(B x, Scope* sc, u32* bc, Body* v1, Body* v2) { POS_UPD;
|
||||
return gotoNextBodyJIT(sc, q_N(sc->vars[2])? v1 : v2);
|
||||
}
|
||||
INS B i_SETNi( B x, Scope* sc, u32 p ) { v_setI(sc, p, inc(x), false, false); return x; }
|
||||
INS B i_SETUi( B x, Scope* sc, u32 p, u32* bc) { POS_UPD; v_setI(sc, p, inc(x), true, false); return x; }
|
||||
INS B i_SETMi(B f, B x, Scope* sc, u32 p, u32* bc) { POS_UPD; B r = c2(f,v_getI(sc, p, false),x); dec(f); v_setI(sc, p, inc(r), true, false); return r; }
|
||||
INS B i_SETCi(B f, Scope* sc, u32 p, u32* bc) { POS_UPD; B r = c1(f,v_getI(sc, p, false) ); dec(f); v_setI(sc, p, inc(r), true, false); return r; }
|
||||
INS B i_SETUi( B x, Scope* sc, u32 p, u32* bc) { POS_UPD; v_setI(sc, p, inc(x), true, true); return x; }
|
||||
INS B i_SETMi(B f, B x, Scope* sc, u32 p, u32* bc) { POS_UPD; B r = c2(f,v_getI(sc, p, true),x); dec(f); v_setI(sc, p, inc(r), true, false); return r; }
|
||||
INS B i_SETCi(B f, Scope* sc, u32 p, u32* bc) { POS_UPD; B r = c1(f,v_getI(sc, p, true) ); dec(f); v_setI(sc, p, inc(r), true, false); return r; }
|
||||
INS void i_SETNv(B x, Scope* sc, u32 p ) { v_setI(sc, p, x, false, false); }
|
||||
INS void i_SETUv(B x, Scope* sc, u32 p, u32* bc) { POS_UPD; v_setI(sc, p, x, true, false); }
|
||||
INS void i_SETMv(B f, B x, Scope* sc, u32 p, u32* bc) { POS_UPD; B r = c2(f,v_getI(sc, p, false),x); dec(f); v_setI(sc, p, r, true, false); }
|
||||
|
||||
@ -40,6 +40,10 @@ a←"zero"‿"one" ⋄ !a≡a⊸{𝕩?1⊑𝕨;0⊑𝕨}¨0‿1
|
||||
!"Assignment: Mismatched shape for spread assignment" % ⟨⟩←⟨1⟩
|
||||
⟨⟩←⟨⟩ %% ⟨⟩
|
||||
|
||||
# mid-update assignment; precise behavior here isn't particularly important, but it should at least be consistent
|
||||
a←↕2 ⋄ a {𝕊: a←"foo" ⋄ {𝕊:a!↩0}⎊•CurrentError @}↩ ⋄ %% "foo"
|
||||
!"Reading variable that was optimized out by F↩ after error" % a←"foo" ⋄ ! "foo"≡{𝕊:a!↩@}⎊•CurrentError @ ⋄ •Type a
|
||||
|
||||
# namespaces
|
||||
⟨a,b⟩←•BQN"{x⇐1‿2⋄a⇐3‿4⋄y←5‿6⋄b⇐7‿8}" ⋄ a‿b %% ⟨3‿4 ⋄ 7‿8⟩
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user