summaryrefslogtreecommitdiff
path: root/pit/src/runtime/symtab.c
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-07-21 21:19:25 -0400
committerLLLL Colonq <llll@colonq>2026-07-21 21:19:25 -0400
commitf10714830fd8a65129d261df3436b885cee871cd (patch)
treeacbbfcaf3f83d73c6343be1d03d9fcd69c3fb3a5 /pit/src/runtime/symtab.c
parenta5e153d8558a43fbdc78f5b9fdaff426feea4654 (diff)
pit: Improve backtraces
Diffstat (limited to 'pit/src/runtime/symtab.c')
-rw-r--r--pit/src/runtime/symtab.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/pit/src/runtime/symtab.c b/pit/src/runtime/symtab.c
index d2bc51e..33ed3ba 100644
--- a/pit/src/runtime/symtab.c
+++ b/pit/src/runtime/symtab.c
@@ -72,6 +72,12 @@ void pit_symtab_fset(pit_runtime *rt, pit_value sym, pit_value v) {
if (pit_value_sort(ent->function) != PIT_VALUE_SORT_REF) {
ent->function = pit_value_cell_new(rt, PIT_NIL);
}
+ if (pit_value_sort(v) == PIT_VALUE_SORT_REF) {
+ pit_value_heavy *h = pit_value_ref_deref(rt, pit_value_as_ref(rt, v));
+ if (h && h->hsort == PIT_VALUE_HEAVY_SORT_FUNC) {
+ h->in.func.nm = sym;
+ }
+ }
pit_value_cell_set(rt, ent->function, v, sym);
}
bool pit_symtab_is_symbol_macro(pit_runtime *rt, pit_value sym) {