[Test] Struct + Array Birlikte Kullanım Senaryosu #103
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#103
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
structveint[]dil kimliğinde "var" olarak işaretli ama bu ikisinin birlikte kullanıldığı (struct içinde array, array of struct) bir örnek henüz yazılmadı. Bu kombinasyon, value-semantics (değer semantiği) kopyalama davranışını (bkz. #79 "Array ve Struct'ların Runtime Bellek Düzeni") en çok zorlayan senaryodur.Test Kodu (
examples/tests/struct_array.sqt)Beklenen Çıktı
Açık Sorular / Bağlı Fazlar
int notlar[3];sözdizimi (struct alanı olarak sabit-boyutlu array) — parser bunu destekliyor mu, yoksaint[3] notlar;mı olmalı? Dil kimliğinde array sözdizimiint[]olarak yazılmış ama boyutlu hali ([3]) henüz örneklenmemiş — bu issue, sözdizimini netleştirme ihtiyacını da gösterir.Ogrenci kopya = ali;satırının gerçekten derin kopya yapması (struct içindeki array dahil) — bu, #79'daki "struct kopyalama IR'de alan-alan mı genişler" sorusunun somut test vakasıdır. Eğerkopya.notlar[0] = 0;satırıali.notlar[0]'ı da değiştirirse (yüzeysel kopya/shallow copy), bu value semantics kuralının ihlalidir — kritik bir bug.İmza/Yorum: Bu test, "value semantics" kilitli kararının (dil kimliği tablosu) en sıkı sınandığı yer — diğer tüm testler geçse bile bu test başarısızsa, dilin temel garantisi bozulmuş demektir.