X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Flisp%2Fao_lisp_error.c;h=937739e97259701cec8a496fd7d5ea8eae02d2c2;hp=7ad7b2b523f8cf0fde6c3dc4038f8404b86a66b6;hb=11c79167cdd56015bbd1645db2d4394dcb4f0fbb;hpb=9126ae10b3c5acf0055caa31b1f08215675af784 diff --git a/src/lisp/ao_lisp_error.c b/src/lisp/ao_lisp_error.c index 7ad7b2b5..937739e9 100644 --- a/src/lisp/ao_lisp_error.c +++ b/src/lisp/ao_lisp_error.c @@ -16,23 +16,30 @@ #include static void -ao_lisp_error_cons(char *name, struct ao_lisp_cons *cons) +ao_lisp_error_poly(char *name, ao_poly poly) { int first = 1; printf("\t\t%s(", name); - if (cons) { - while (cons) { - if (!first) - printf("\t\t "); - else - first = 0; - ao_lisp_poly_print(cons->car); - printf("\n"); - cons = ao_lisp_poly_cons(cons->cdr); - } - printf("\t\t )\n"); - } else - printf(")\n"); + if (ao_lisp_poly_type(poly) == AO_LISP_CONS) { + struct ao_lisp_cons *cons = ao_lisp_poly_cons(poly); + + if (cons) { + while (cons) { + if (!first) + printf("\t\t "); + else + first = 0; + ao_lisp_poly_print(cons->car); + printf("\n"); + cons = ao_lisp_poly_cons(cons->cdr); + } + printf("\t\t )\n"); + } else + printf(")\n"); + } else { + ao_lisp_poly_print(poly); + printf("\n"); + } } static void tabs(int indent) @@ -87,8 +94,8 @@ ao_lisp_stack_print(void) printf("\t\texpr: "); ao_lisp_poly_print(s->list); printf("\n"); printf("\t\tstate: %s\n", state_names[s->state]); // printf("\t\tmacro: %s\n", s->macro ? "true" : "false"); - ao_lisp_error_cons ("sexprs: ", ao_lisp_poly_cons(s->sexprs)); - ao_lisp_error_cons ("values: ", ao_lisp_poly_cons(s->values)); + ao_lisp_error_poly ("sexprs: ", s->sexprs); + ao_lisp_error_poly ("values: ", s->values); ao_lisp_error_frame(2, "frame: ", ao_lisp_poly_frame(s->frame)); // ao_lisp_error_frame(2, "mframe: ", ao_lisp_poly_frame(s->macro_frame)); printf("\t]\n");