More exception stuff
This commit is contained in:
+7
-3
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user