diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib.c | 6 | ||||
-rw-r--r-- | lib.h | 8 |
3 files changed, 17 insertions, 5 deletions
@@ -1,3 +1,11 @@ +2014-10-26 Kaz Kylheku <kaz@kylheku.com> + + * lib.c (type_check): Function moved to header file inline. + (throw_mismatch): New function. + + * lib.h (throw_mismatch): Declared. + (type_mismatch): Declaration turned into inline function. + 2014-10-25 Kaz Kylheku <kaz@kylheku.com> * hash.c (hash_begin): Use coerce macro instead of raw C cast. @@ -183,11 +183,9 @@ val typeof(val obj) } } -val type_check(val obj, int typecode) +val throw_mismatch(val obj, type_t t) { - if (type(obj) != typecode) - type_mismatch(lit("~s is not of type ~s"), obj, code2type(typecode), nao); - return t; + type_mismatch(lit("~s is not of type ~s"), obj, code2type(t), nao); } val type_check2(val obj, int t1, int t2) @@ -414,7 +414,13 @@ extern alloc_bytes_t gc_bytes; val identity(val obj); val typeof(val obj); -val type_check(val obj, int); +val throw_mismatch(val obj, type_t); +INLINE val type_check(val obj, type_t typecode) +{ + if (type(obj) != typecode) + throw_mismatch(obj, typecode); + return t; +} val type_check2(val obj, int, int); val type_check3(val obj, int, int, int); val class_check(val cobj, val class_sym); |