saqut-compiler/tests/golden
saqut 786812c717 feat(string+error+null): ADR-024/025/021 uygulama — string concat, try/catch/throw, nullable akış-analizi
## String cilası (ADR-024)
- STRING_CONCAT opcode: s1 + s2 ve s1 += s2 → yeni string üretir
- Tip denetleyicide string + string → string; içerik == zaten vardı
- Golden: tests/golden/string/concat.sqt

## Hata yönetimi (ADR-025, #57)
- AST: TryStatementNode, ThrowStatementNode
- Parser: try { } catch (Error e) { }, throw <ifade>;
- IR: ENTER_TRY / LEAVE_TRY / THROW opcode'ları + backpatch
- VM: TryFrame yığını + pendingThrow_ unwind; runtime hatalar (DIV/0, OOB)
  artık yakalanabilir Error nesnesi olarak yükseltiliyor
- Builtin: Error{line,col,message,trace,code} sembol tablosuna kayıtlı
- Golden: tests/golden/error/basic_catch.sqt, throw_and_nested.sqt

## Null akış-analizi (ADR-021 — REVİZE, a!/??/?. yasak)
- Type: nullable bool alanı; asNullable/asNonNull/equalsBase/isNullLiteral
- fromName("int?") → nullable int; toString() → "int?"
- Parser: T? değişken/parametre/dönüş tipi; int? f() dispatch bug'ı düzeltildi
- IR: LOAD_NULL opcode; null literal → Value::null()
- Tip denetleyici:
  - checkAssign: T? ← null OK; T ← T? E003; T? ← T OK (widening)
  - Nullable operand aritmetikte/karşılaştırmada E003
  - MemberAccess: nullable nesnede doğrudan erişim E003
  - Nested: if (a != null) → then'de non-null
  - Guard: if (a == null) return; → sonrasında non-null
  - &&: sol null-check → sağ tarafta non-null
- Golden: tests/golden/null/{narrowing,and_narrowing,nullable_assign_error,nullable_operand_error}

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YAu3MGu3sWAUvTu7N9agPk
2026-06-20 21:34:25 +03:00
..
arithmetic fix(ir): %= bileşik atama IR üretiminde eksikti (B8) 2026-06-19 23:03:54 +03:00
array feat(array): GC-hazır nesne modeli + array runtime (ADR-020/022/023) 2026-06-20 16:18:23 +03:00
bitwise test(golden): #45 bitwise ve #38 modül-düzeyi değişken golden testleri 2026-06-20 15:18:07 +03:00
error feat(string+error+null): ADR-024/025/021 uygulama — string concat, try/catch/throw, nullable akış-analizi 2026-06-20 21:34:25 +03:00
fibonacci test: golden-test koşucusu + Value audit + saqut ir pipeline fix 2026-06-18 22:31:26 +03:00
float feat(float): float/double aritmetik runtime (#44) 2026-06-20 16:37:59 +03:00
global test(golden): #45 bitwise ve #38 modül-düzeyi değişken golden testleri 2026-06-20 15:18:07 +03:00
logic fix(ir): ! operatörü kopyalama yerine (x == 0) üretiyor (B2) 2026-06-19 16:15:46 +03:00
loops fix(ir): break/continue IR üretimi — döngü bağlamı yığını (B3) 2026-06-19 16:09:57 +03:00
null feat(string+error+null): ADR-024/025/021 uygulama — string concat, try/catch/throw, nullable akış-analizi 2026-06-20 21:34:25 +03:00
opt feat(run): --optimized bayrağı — optimize edilmiş IR üzerinden VM çalıştırma 2026-06-18 23:04:57 +03:00
string feat(string+error+null): ADR-024/025/021 uygulama — string concat, try/catch/throw, nullable akış-analizi 2026-06-20 21:34:25 +03:00
struct feat(struct+null): struct runtime + ValueKind::Null + E010 ADR-020 revizyonu 2026-06-20 16:33:51 +03:00