saqut
|
435c8bcb96
|
feat(struct+null): struct runtime + ValueKind::Null + E010 ADR-020 revizyonu
- value.hpp: ValueKind::Nil → ValueKind::Null (saQut'ta null anahtar sözcüğü)
- object.hpp: StructObject : Object eklendi (alanlar sıralı Value[] olarak)
- instruction.hpp: STRUCT_NEW, FIELD_GET, FIELD_SET opcodes
- ir_generator: struct layout haritası (sembol tablosundan), VariableDecl struct init,
MemberAccess okuma/yazma codegen
- interpreter: STRUCT_NEW/FIELD_GET/FIELD_SET + referans semantiği
- ir_function: STRUCT_NEW/FIELD_GET/FIELD_SET dump
- symbol_table: structLayouts haritası + getFieldIndex/getFieldType yardımcıları
- symbol_collector: StructDecl her zaman structFields_ girişi açar; structLayouts doldurur
- E010 devre dışı — ADR-020: struct alanları referans semantiği taşır, by-value döngü yok
- type_checker: MemberAccess struct alan tipi çözümlendi; IndexExpression array eleman tipi
- parser: parseStatement'a "TypeName VarName" → parseVariableDecl desteği (struct değişkeni)
- golden test: tests/golden/struct/basic.sqt (21 test geçiyor)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-20 16:33:51 +03:00 |
saqut
|
f1cb983b69
|
feat(array): GC-hazır nesne modeli + array runtime (ADR-020/022/023)
- src/vm/object.hpp: Object, ArrayObject, Heap (v1: toplama yok, mark-sweep kancaları hazır)
- src/vm/value.hpp: ValueKind::Ref + Nil eklendi (ADR-020/021)
- src/ir/instruction.hpp: ARRAY_NEW/GET/SET/LEN opcodes
- src/ir/ir_generator: array literal + a[i] okuma/yazma codegen
- src/parser: [1,2,3] array literal, int[] tip sözdizimi (Java/C# stili)
- src/vm/interpreter: ARRAY_NEW/GET/SET/LEN, sınır kontrolü, referans semantiği
- EQUAL_EQUAL/NOT_EQUAL: Ref türü için kimlik karşılaştırması (ADR-023)
- type.hpp: Type::fromName "int[]" vb. array tipleri destekliyor
- golden test: tests/golden/array/ref_semantics.sqt (referans semantiği, kimlik ==)
- 20 golden test geçiyor
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-06-20 16:18:23 +03:00 |