More exception stuff

This commit is contained in:
2026-09-03 11:33:44 -07:00
parent dc313fafa0
commit 2533b0db7d
15 changed files with 200 additions and 76 deletions
+7 -3
View File
@@ -353,6 +353,8 @@ DECLARE_FUNCTION(setplist, (LispVal * sym, LispVal *plist));
DECLARE_FUNCTION(get, (LispVal * sym, LispVal *key, LispVal *def));
DECLARE_FUNCTION(put, (LispVal * sym, LispVal *key, LispVal *val));
noreturn void signal_value_constant(LispVal *value);
static ALWAYS_INLINE LispVal *SYMBOL_VALUE(LispVal *sym) {
assert(SYMBOLP(sym));
LispSymbol *s = (LispSymbol *) sym;
@@ -379,12 +381,11 @@ static ALWAYS_INLINE bool DYNAMIC_SYMBOL_P(LispVal *sym) {
return ((LispSymbol *) sym)->flags & SYMBOL_DYNAMIC;
}
static ALWAYS_INLINE void SET_SYMBOL_VALUE(LispVal *sym, LispVal *value) {
static inline void SET_SYMBOL_VALUE(LispVal *sym, LispVal *value) {
assert(SYMBOLP(sym));
LispSymbol *s = (LispSymbol *) sym;
if (CONST_VALUE_P(sym)) {
// TODO throw
abort();
signal_value_constant(sym);
}
switch (s->value_type) {
case SYMBOL_NORMAL:
@@ -425,6 +426,9 @@ MAKE_CONDITION_CLASS(error);
DECLARE_SYMBOL(type_error);
MAKE_CONDITION_CLASS(type_error);
DECLARE_SYMBOL(value_constant_error);
MAKE_CONDITION_CLASS(value_constant_error);
// Defined in lisp code (eventually) but used in read.c
DECLARE_SYMBOL(backquote);
DECLARE_SYMBOL(comma);