Commit Graph

7 Commits

Author SHA1 Message Date
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
abdussamedulutas dbe49f909d chore: .gitignore — CMake versiyona özgü dosyaları hariç tut 2026-06-18 19:52:33 +03:00
abdussamedulutas 482fe14a45 chore: __pycache__ gitignore 2026-06-16 00:32:29 +03:00
abdussamedulutas 71c67317c4 chore: scripts/gitea.py'yi gitignore'la (parola sızıntısını önle)
Yerel API istemcisi kimlik bilgisini ~/.git-credentials'tan okur; asla
commit edilmemeli.
2026-06-16 00:22:47 +03:00
abdussamedulutas b08205c03f Rev 2026-05-26 00:00:21 +03:00
abdussamedulutas b4c8226357 VSCode deugging için çalışma ortamı oluşturuldu 2025-12-28 15:42:31 +03:00
abdussamedulutas 41aec36d19 delimiters ve operators eklendi 2025-12-23 13:50:09 +03:00