summaryrefslogtreecommitdiffstats
path: root/match.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-03-17 20:30:15 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-03-17 20:30:15 -0700
commitd268addccbf0cfdb19f84103f85874daf410e1a6 (patch)
tree4db5ade3b4a64ccf06d6a9b344e8a0625096fb07 /match.c
parent302c1d3aeb9e05c3d2888529589217292f7e1c02 (diff)
downloadtxr-d268addccbf0cfdb19f84103f85874daf410e1a6.tar.gz
txr-d268addccbf0cfdb19f84103f85874daf410e1a6.tar.bz2
txr-d268addccbf0cfdb19f84103f85874daf410e1a6.zip
Changing type function to not blow up on nil, which makes a lot of code
simpler. A pseudo type code is introduced called NIL with value 0. * lib.h (enum type): New enumeration value, NIL. (type): Function accepts object nil and maps it to code NIL. * eval.c (dwim_loc, op_dwim): test for nil obj and goto hack is gone, just handle NIL in the switch. * gc.c (make_obj, mark): Handle new NIL type code in switch. * hash.c (equal_hash): Handle NIL in the switch instead of nil test. * lib.c (code2type): Map new NIL type code to null. (typeof, typecheck): Code simplified. (class_check, car): Move nil test into switch. (eql, equal, consp, bignump, stringp, lazy_stringp, symbolp, functionp, vectorp, cobjp): Simplified. (length, sub, ref, refset, replace, obj_print, obj_pprint): Handle NIL in switch instead of nil test. goto hack removed from refset. * match.c (do_match_line, do_output_line): switch condition simplified. * regex.c (regexp): Simplified. (regex_nfa): Assert condition simplified.
Diffstat (limited to 'match.c')
-rw-r--r--match.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/match.c b/match.c
index f381dcd4..cad32714 100644
--- a/match.c
+++ b/match.c
@@ -1112,7 +1112,7 @@ static val do_match_line(match_line_ctx *c, val completely)
debug_check(elem, c->bindings, c->dataline, c->data_lineno,
c->pos, c->base);
- switch (elem ? type(elem) : 0) {
+ switch (type(elem)) {
case CONS: /* directive */
{
val directive = first(elem);
@@ -1583,7 +1583,7 @@ static void do_output_line(val bindings, val specline, val filter, val out)
for (; specline; specline = rest(specline)) {
val elem = first(specline);
- switch (elem ? type(elem) : 0) {
+ switch (type(elem)) {
case CONS:
{
val directive = first(elem);