## 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 |
||
|---|---|---|
| .. | ||
| adr | ||
| adr-frontend-analiz.md | ||
| architecture.md | ||
| fikirler.md | ||
| issues.md | ||
| perf-after.txt | ||
| perf-before.txt | ||
| prcontext.md | ||
| roadmap-frontend.md | ||
| sonnet-handoff.md | ||
| todo.md | ||
| transkript-frontend-tasarim.md | ||