@@ -2524,10 +2524,9 @@ object* sp_loop (object* args, object* env) {
25242524 (return [value])
25252525 Exits from a (dotimes ...), (dolist ...), or (loop ...) loop construct and returns value.
25262526*/
2527- object* sp_return (object* args, object* env) {
2528- object* result = progn_no_tc (args, env);
2527+ object* fn_return (object* args, object* env) {
25292528 setflag (RETURNFLAG);
2530- return result ;
2529+ return args ? first (args) : nil ;
25312530}
25322531
25332532/*
@@ -6955,7 +6954,7 @@ const tbl_entry_t BuiltinTable[] = {
69556954 { string28, sp_or, MINMAX (SPECIAL_FORMS, 0 , UNLIMITED), doc28 },
69566955 { string29, sp_setq, MINMAX (SPECIAL_FORMS, 2 , UNLIMITED), doc29 },
69576956 { string30, sp_loop, MINMAX (SPECIAL_FORMS, 0 , UNLIMITED), doc30 },
6958- { string31, sp_return , MINMAX (SPECIAL_FORMS , 0 , UNLIMITED ), doc31 },
6957+ { string31, fn_return , MINMAX (FUNCTIONS , 0 , 1 ), doc31 },
69596958 { string32, sp_push, MINMAX (SPECIAL_FORMS, 2 , 2 ), doc32 },
69606959 { string33, sp_pop, MINMAX (SPECIAL_FORMS, 1 , 1 ), doc33 },
69616960 { string34, sp_incf, MINMAX (SPECIAL_FORMS, 1 , 2 ), doc34 },
0 commit comments