Commit Graph

4 Commits

Author SHA1 Message Date
saqut 4accdf8484 fix(ast,dce): #35 bellek sızıntısı + #36 W003 uyarısı
#35 — Her AST düğüm tipine sanal yıkıcı eklendi; ~ASTNode() children
vektörünü, alt sınıf yıkıcıları typed pointer'larını (condition, Left/Right,
initExpr, params…) özyinelemeli siler. FunctionDeclNode yıkıcısı incomplete
type uyarısını önlemek için .cpp'ye taşındı. DCE'deki erase sırası da
düzeltildi: remove_if → delete → erase (önceki sırayla dangling pointer
üzerinde dynamic_cast yapılıyordu → segfault).

#36 — DeadCodeElimPass artık DiagnosticEngine& alıyor; unreachable düğüm
işaretlendiğinde W003 raporu üretiliyor (saqut run --optimized ile görünür).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-19 23:20:11 +03:00
abdussamedulutas 68d52d744d feat(faz1): AST'i Expression/Statement olarak ayır + analiz alanları (#70)
- ast_node.hpp: ExpressionNode (resolvedType + isConstant/foldedValue TODO)
  ve StatementNode (isReachable) ara taban sınıfları; core/type.hpp dahil.
- İfade düğümleri (Literal, Identifier, Binary, Postfix, Call, Member,
  Index) → ExpressionNode; toJson'a resolvedType (çözülmemişse null).
- Deyim düğümleri (Block/If/While/For/DoWhile/Return/Break/Continue/
  ExpressionStatement + VariableDecl) → StatementNode; toJson'a isReachable.
- IdentifierNode'a Symbol* resolvedSymbol (TODO faz-2, ileri bildirim).
- Faz 0 düzeltmesi: diagnostic.hpp kendi jsonEscape'ini kaldırdı, tools.hpp'
  dekini kullanıyor (ODR çakışması önlendi).

Doğrulama: -Wall -Wextra temiz; saqut ast fibonacci.sqt geçerli JSON
(48 resolvedType:null, 20 isReachable:true); parser-stress regresyon temiz;
Faz 0 birim testleri geçiyor.
2026-06-16 00:47:50 +03:00
abdussamedulutas 3f6c2ee4c9 chore: JsonObject builder, LiteralType enum, token.hpp doc cleanup 2026-05-27 10:53:18 +03:00
abdussamedulutas 0fbe742de0 refactor: modularize parser and AST components 2026-05-27 09:42:14 +03:00