Sorun: IR üretici && ve || için case içermiyordu, default koluna düşüp LOAD_CONST 0 üretiyordu — değişken operandlarda her zaman false dönüyordu (sabit katlama yolu zaten doğruydu). Düzeltme: her iki operatör artık dallanma olarak üretiliyor: a && b → JIF_FALSE (a false ise b'yi atla) a || b → JIF_TRUE (a true ise b'yi atla) JIF_TRUE yeni opcode olarak eklendi (instruction.hpp + interpreter.cpp). do-while'ın mevcut "== 1 karşılaştırması" geçici çözümü bu opcode'dan faydalanabilir — ayrı düzeltme (B4). Test: tests/golden/logic/short_circuit.sqt — yan etkinin gerçekten atlandığını çıktıyla kanıtlar (12/12 test yeşil). ADR: docs/adr/ADR-008-kisa-devre-mantiksal-operatorler.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| adr | ||
| adr-frontend-analiz.md | ||
| architecture.md | ||
| fikirler.md | ||
| issues.md | ||
| perf-after.txt | ||
| perf-before.txt | ||
| prcontext.md | ||
| roadmap-frontend.md | ||
| todo.md | ||
| transkript-frontend-tasarim.md | ||