Sorun: unary ! dalı emitLoadSlot ile operandı kopyalıyordu — terslemiyordu. Sabitlerde sabit katlama doğru çalışıyordu; değişken operandlar her zaman orijinal değeri döndürüyordu. Düzeltme: BANG case'i EQUAL_EQUAL(operand, 0) olarak üretiliyor. !x → slots[result] = (slots[operand] == 0) ? 1 : 0 Sonuç her zaman 0 ya da 1; bool int olarak temsil edilmesiyle tutarlı. ~ (B2/F2 kapsamı dışı) eski TODO dalında kalmaya devam ediyor. Test: tests/golden/logic/not_operator.sqt — değişken operandla !0→1, !5→0, !!5→1, !!0→0, if(!x) dallanma. 17/17 test yeşil. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| CMakeFiles | ||
| Testing/Temporary | ||
| .ninja_deps | ||
| .ninja_log | ||
| CMakeCache.txt | ||
| CTestTestfile.cmake | ||
| build.ninja | ||
| cmake_install.cmake | ||