[Altyapı] Value Tipi Audit — struct'tan önce tagged union temizliği #114

Closed
opened 2026-06-18 22:21:02 +03:00 by saqut · 1 comment
Owner

Giriş (Nedir, Neden Önemli?)

`string` tipi eklendikten sonra `Value` soyutlamasının gerçekten temiz bir tagged union/variant olup olmadığını doğrula. Struct aynı `Value` altyapısının üstüne oturacak; şu an kirli veya yamama yapılmışsa struct o kirliliği katlar. Yeni özellik ekleme yok — sadece audit ve gerekirse refactor.


Kontrol Listesi

Mevcut durumu oku:

  • `src/vm/value.hpp` — `ValueKind` enum eksiksiz mi? (`INT`, `FLOAT`, `BOOL`, `STRING`, `VOID` en azından)
  • `string` eklenmesi apar topar mı yapıldı? Eski `int`-varsayımlı yollar var mı?
  • `Value` kopyalanırken `std::string` doğru kopyalanıyor mu? (rule of 5 / `std::variant` kullanımı)
  • Interpreter'da tip denetimi yapılan yerler: `ADD`, `LESS`, `EQUAL_EQUAL` vb. — string + int karışınca ne oluyor?
  • `CALLHOST` / `print` her `ValueKind` için doğru string'e çeviriyor mu?

Temizlenecekler (varsa):

  • Tekrarlayan `if kind == INT ... else if kind == STRING` blokları → visit pattern veya metot
  • `switch` içinde eksik `case`'ler (derleyici uyarısını aç: `-Wswitch`)
  • Magic cast'ler (`(int)value` gibi) → tip-güvenli erişim

Başarı Kriterleri

  • `value.hpp` okunduğunda `ValueKind` + saklama yapısı tek bakışta anlaşılıyor
  • `-Wall -Wextra -Wswitch` ile sıfır uyarı
  • Mevcut testler (fibonacci, golden runner çıktıları) hâlâ geçiyor — regresyon yok
  • Struct alanı eklemek için `Value` değişmesine gerek yok (veya net bir ekleme noktası var)

Bağımlılıklar

#113 (golden runner) bitmeden bu issue'nun "regresyon yok" kriteri doğrulanamaz — önce #113, sonra bu.
Struct issue'su bu issue'ya bağımlı: Value temiz değilse struct açılmaz.

### Giriş (Nedir, Neden Önemli?) \`string\` tipi eklendikten sonra \`Value\` soyutlamasının gerçekten temiz bir tagged union/variant olup olmadığını doğrula. Struct aynı \`Value\` altyapısının üstüne oturacak; şu an kirli veya yamama yapılmışsa struct o kirliliği katlar. Yeni özellik ekleme yok — sadece audit ve gerekirse refactor. --- ### Kontrol Listesi **Mevcut durumu oku:** - [ ] \`src/vm/value.hpp\` — \`ValueKind\` enum eksiksiz mi? (\`INT\`, \`FLOAT\`, \`BOOL\`, \`STRING\`, \`VOID\` en azından) - [ ] \`string\` eklenmesi apar topar mı yapıldı? Eski \`int\`-varsayımlı yollar var mı? - [ ] \`Value\` kopyalanırken \`std::string\` doğru kopyalanıyor mu? (rule of 5 / \`std::variant\` kullanımı) - [ ] Interpreter'da tip denetimi yapılan yerler: \`ADD\`, \`LESS\`, \`EQUAL_EQUAL\` vb. — string + int karışınca ne oluyor? - [ ] \`CALLHOST\` / \`print\` her \`ValueKind\` için doğru string'e çeviriyor mu? **Temizlenecekler (varsa):** - Tekrarlayan \`if kind == INT ... else if kind == STRING\` blokları → visit pattern veya metot - \`switch\` içinde eksik \`case\`'ler (derleyici uyarısını aç: \`-Wswitch\`) - Magic cast'ler (\`(int)value\` gibi) → tip-güvenli erişim --- ### Başarı Kriterleri - [ ] \`value.hpp\` okunduğunda \`ValueKind\` + saklama yapısı tek bakışta anlaşılıyor - [ ] \`-Wall -Wextra -Wswitch\` ile sıfır uyarı - [ ] Mevcut testler (fibonacci, golden runner çıktıları) hâlâ geçiyor — regresyon yok - [ ] Struct alanı eklemek için \`Value\` değişmesine gerek yok (veya net bir ekleme noktası var) --- ### Bağımlılıklar **#113** (golden runner) bitmeden bu issue'nun "regresyon yok" kriteri doğrulanamaz — önce #113, sonra bu. Struct issue'su bu issue'ya bağımlı: Value temiz değilse struct açılmaz.
saqut added the
kalite-mimari
label 2026-06-18 22:21:11 +03:00
Author
Owner

Audit tamamlandı. Bulgular: stale yorum ('ŞU AN SADECE INT') temizlendi, toString() eklendi, isTruthy/typeName switch'leri exhaustive hale getirildi. Bool-as-Int kararı yorumla belgelendi. Struct için ekleme noktası net — ValueKind + yeni field yeterli.

Audit tamamlandı. Bulgular: stale yorum ('ŞU AN SADECE INT') temizlendi, `toString()` eklendi, `isTruthy/typeName` switch'leri exhaustive hale getirildi. Bool-as-Int kararı yorumla belgelendi. Struct için ekleme noktası net — ValueKind + yeni field yeterli.
saqut closed this issue 2026-06-18 22:31:40 +03:00
Sign in to join this conversation.
No description provided.