Skip to content

Latest commit

 

History

History
60 lines (37 loc) · 1.78 KB

File metadata and controls

60 lines (37 loc) · 1.78 KB

✅ Task: Bug Fixes & Polish — ALL DONE

✅ Bug 1: Lambda Parsing Crash — FIXED

Root Cause: Dua bug:

  1. parse-lambda parameter loop tidak check :op-rparen sebelum panggil parse-identifier
  2. eksekusi-lambdaparams berisi identifier-node, bukan string. Key di environment jadi node, tapi lookup pakai string.

Fix:

  1. src/parser.lisp — tambah (when (parser-check state :op-rparen) (return)) di loop parameter
  2. src/eksekutor.lisp(id-name p) untuk convert node ke string

✅ Bug 2: NIL pada Output Binary — FIXED

Root Cause: SBCL save-lisp-and-die selalu print return value toplevel lambda.

Fix: Wrapper script ./idn — filter ^NIL$ dengan grep -v. Plus sb-ext:quit di akhir toplevel untuk clean exit.


✅ Bug 3: Contoh blok.idn Tidak Jalan — FIXED

Sama dengan Bug 1 (lambda parsing).


✅ Polish 1: idn-repr untuk Pretty Output — FIXED

Fix: src/objek.lisp — fungsi idn-repr untuk konversi nilai IDN → string rapi. Handle: nil→"kosong", true→"benar", false→"salah", integer, float, string, symbol, array, hash.


✅ Polish 2: KELAS-IDN Handler — FIXED

Fix: stdlib/kelas-patch.lisp — patch terpisah untuk dispatch method call pada class objects. Support: Kelas.baru(), static methods via KELAS_METODE naming convention.


⚠️ Polish 3: Warning Cleanup — MINOR (non-critical)

8 warnings tersisa: redefinisi fungsi, unused variable. Tidak mempengaruhi runtime.


Ringkasan Final

# Item Status
1 Lambda parsing crash
2 NIL output
3 blok.idn
4 idn-repr
5 KELAS-IDN handler
6 Warning cleanup ⚠️ minor

324/324 tests | 10/10 contoh | Semua fitur berfungsi