[Fikir] Dil-İçi Test Bloğu (test { }) ve Yerleşik Test Çalıştırıcı #96

Open
opened 2026-06-14 22:14:09 +03:00 by saqut · 0 comments
Owner

Giriş (Nedir, Neden Önemli?)

Rust'ın #[test] ve Go'nun _test.go dosyaları gibi, modern diller test yazmayı dilin/araç zincirinin bir parçası haline getiriyor. saQut için de "fonksiyonumu yazdım, hemen yanına küçük bir test ekleyeyim" akışı düşünülebilir — derleyicinin kendi examples/fibonacci.sqt gibi referans programlarını doğrulaması için bile yararlı olur.


Gelişme (Olası Yaklaşımlar)

  • Sözdizimi fikri: test "fibonacci(5) dogru sonucu verir" { assert(fibonacci(5) == 5); }test ve assert yeni anahtar kelimeler/builtin'ler olarak eklenir.
  • saqut test file:kaynak.sqt: dosyadaki tüm test bloklarını çalıştırır, assert başarısız olursa hangi test/satır olduğunu raporlar (DiagnosticEngine'in bir "test sonucu" varyantı gibi düşünülebilir).
  • Bu özellik aslında assert builtin'i (FFI/builtin kataloğu issue'suyla ilişkili) + basit bir "bu bloğu normal akıştan ayrı çalıştır" kuralı kadar küçük olabilir — büyük bir çerçeveye gerek yok.

Açık Sorular

  • test blokları normal derlemede (saqut run) tamamen yok sayılır mı (production kodundan ayrışma), yoksa özel bir bayrakla mı dahil edilir?
  • Bu, dilin sözdizimine mi (yeni anahtar kelime) yoksa sadece bir kütüphane fonksiyonu (assert(...) + isim kuralına dayalı dosya/fonksiyon tarama) düzeyinde mi kalmalı — ikincisi dil kimliğini (kilitli kararlar) bozmaz.

İmza/Yorum: "Günümüzde frameworklerde olan ama derleyiciye gömülü gelebilecek" taleplere iyi bir örnek — minimal versiyonu (assert builtin'i) çok düşük maliyetli.

### Giriş (Nedir, Neden Önemli?) Rust'ın `#[test]` ve Go'nun `_test.go` dosyaları gibi, modern diller test yazmayı dilin/araç zincirinin **bir parçası** haline getiriyor. saQut için de "fonksiyonumu yazdım, hemen yanına küçük bir test ekleyeyim" akışı düşünülebilir — derleyicinin kendi `examples/fibonacci.sqt` gibi referans programlarını doğrulaması için bile yararlı olur. --- ### Gelişme (Olası Yaklaşımlar) - Sözdizimi fikri: `test "fibonacci(5) dogru sonucu verir" { assert(fibonacci(5) == 5); }` — `test` ve `assert` yeni anahtar kelimeler/builtin'ler olarak eklenir. - `saqut test file:kaynak.sqt`: dosyadaki tüm `test` bloklarını çalıştırır, `assert` başarısız olursa hangi test/satır olduğunu raporlar (DiagnosticEngine'in bir "test sonucu" varyantı gibi düşünülebilir). - Bu özellik aslında `assert` builtin'i (FFI/builtin kataloğu issue'suyla ilişkili) + basit bir "bu bloğu normal akıştan ayrı çalıştır" kuralı kadar küçük olabilir — büyük bir çerçeveye gerek yok. --- ### Açık Sorular - `test` blokları normal derlemede (`saqut run`) tamamen yok sayılır mı (production kodundan ayrışma), yoksa özel bir bayrakla mı dahil edilir? - Bu, dilin **sözdizimine** mi (yeni anahtar kelime) yoksa sadece bir **kütüphane fonksiyonu** (`assert(...)` + isim kuralına dayalı dosya/fonksiyon tarama) düzeyinde mi kalmalı — ikincisi dil kimliğini (kilitli kararlar) bozmaz. *İmza/Yorum:* "Günümüzde frameworklerde olan ama derleyiciye gömülü gelebilecek" taleplere iyi bir örnek — minimal versiyonu (`assert` builtin'i) çok düşük maliyetli.
saqut added the
fikir
gelecek-vizyon
labels 2026-06-14 22:14:09 +03:00
Sign in to join this conversation.
No description provided.