@@ -2060,11 +2060,13 @@ A symbol can be coerced to a string.
20602060 }
20612061 err = read_expr (p, &p, &expr);
20622062 if (err) {
2063+ err_expr = expr;
20632064 break ;
20642065 }
20652066 atom result;
20662067 err = macex_eval (expr, &result);
20672068 if (err) {
2069+ err_expr = expr;
20682070 break ;
20692071 }
20702072 // else {
@@ -2107,7 +2109,6 @@ A symbol can be coerced to a string.
21072109 return ERROR_OK ;
21082110 }
21092111 else if (!listp (expr)) {
2110- err_expr = expr;
21112112 return ERROR_SYNTAX ;
21122113 }
21132114 else {
@@ -2125,7 +2126,6 @@ A symbol can be coerced to a string.
21252126 }
21262127 err = eval_expr (car (args), env, result);
21272128 if (err) {
2128- err_expr = expr;
21292129 return err;
21302130 }
21312131 if (!no (*result)) { /* then */
@@ -2140,7 +2140,6 @@ A symbol can be coerced to a string.
21402140 else if (sym_is (op, sym_assign)) {
21412141 atom sym1;
21422142 if (no (args) || no (cdr (args))) {
2143- err_expr = expr;
21442143 return ERROR_ARGS ;
21452144 }
21462145
@@ -2151,17 +2150,14 @@ A symbol can be coerced to a string.
21512150 return err;
21522151 }
21532152 err = env_assign_eq (env, get<sym>(sym1.val ), *result);
2154- if (err) err_expr = expr;
21552153 return err;
21562154 }
21572155 else {
2158- err_expr = expr;
21592156 return ERROR_TYPE ;
21602157 }
21612158 }
21622159 else if (sym_is (op, sym_quote)) {
21632160 if (no (args) || !no (cdr (args))) {
2164- err_expr = expr;
21652161 return ERROR_ARGS ;
21662162 }
21672163
@@ -2170,11 +2166,9 @@ A symbol can be coerced to a string.
21702166 }
21712167 else if (sym_is (op, sym_fn)) {
21722168 if (no (args)) {
2173- err_expr = expr;
21742169 return ERROR_ARGS ;
21752170 }
21762171 err = make_closure (env, car (args), cdr (args), result);
2177- if (err) err_expr = expr;
21782172 return err;
21792173 }
21802174 else if (sym_is (op, sym_do)) {
@@ -2188,7 +2182,6 @@ A symbol can be coerced to a string.
21882182 }
21892183 error err = eval_expr (car (args), env, result);
21902184 if (err) {
2191- err_expr = expr;
21922185 return err;
21932186 }
21942187 args = cdr (args);
@@ -2199,13 +2192,11 @@ A symbol can be coerced to a string.
21992192 atom name, macro;
22002193
22012194 if (no (args) || no (cdr (args)) || no (cdr (cdr (args)))) {
2202- err_expr = expr;
22032195 return ERROR_ARGS ;
22042196 }
22052197
22062198 name = car (args);
22072199 if (name.type != T_SYM ) {
2208- err_expr = expr;
22092200 return ERROR_TYPE ;
22102201 }
22112202
@@ -2214,11 +2205,9 @@ A symbol can be coerced to a string.
22142205 macro.type = T_MACRO ;
22152206 *result = name;
22162207 err = env_assign (env, get<sym>(name.val ), macro);
2217- if (err) err_expr = expr;
22182208 return err;
22192209 }
22202210 else {
2221- err_expr = expr;
22222211 return err;
22232212 }
22242213 }
@@ -2228,7 +2217,6 @@ A symbol can be coerced to a string.
22282217 atom fn;
22292218 err = eval_expr (op, env, &fn);
22302219 if (err) {
2231- err_expr = expr;
22322220 return err;
22332221 }
22342222
@@ -2239,7 +2227,6 @@ A symbol can be coerced to a string.
22392227 atom r;
22402228 err = eval_expr (car (*p), env, &r);
22412229 if (err) {
2242- err_expr = expr;
22432230 return err;
22442231 }
22452232 vargs.push_back (r);
@@ -2266,7 +2253,6 @@ A symbol can be coerced to a string.
22662253 atom r;
22672254 error err = eval_expr (car (body), env, &r);
22682255 if (err) {
2269- err_expr = expr;
22702256 return err;
22712257 }
22722258 body = cdr (body);
@@ -2275,7 +2261,6 @@ A symbol can be coerced to a string.
22752261 }
22762262 else {
22772263 err = apply (fn, vargs, result);
2278- if (err) err_expr = expr;
22792264 }
22802265 return err;
22812266 }
@@ -2388,7 +2373,7 @@ A symbol can be coerced to a string.
23882373
23892374 void print_error (error e) {
23902375 if (e != ERROR_USER ) {
2391- printf (" %s : " , error_string[e]);
2376+ printf (" %s: " , error_string[e]);
23922377 print_expr (err_expr);
23932378 puts (" " );
23942379 }
@@ -2442,6 +2427,7 @@ A symbol can be coerced to a string.
24422427 }
24432428 }
24442429 else {
2430+ err_expr = expr;
24452431 print_error (err);
24462432 }
24472433 }
0 commit comments