mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-07 05:06:37 +02:00
A void return type combined with result parameters will discard the void result.
Enhancement request from issue #170.
This commit is contained in:
parent
7d3d700300
commit
8f956416fc
1 changed files with 4 additions and 3 deletions
|
@ -1110,6 +1110,7 @@
|
|||
|
||||
(define (write-results func)
|
||||
(let ((error-res? (error-type? (type-base (func-ret-type func))))
|
||||
(void-res? (eq? 'void (type-base (func-ret-type func))))
|
||||
(results (func-results func)))
|
||||
(if error-res?
|
||||
(cat " if ("
|
||||
|
@ -1149,13 +1150,13 @@
|
|||
(write-result (car results) first-result-link)
|
||||
(for-each write-result (cdr results))))
|
||||
(cond
|
||||
((> (length results) (if error-res? 1 0))
|
||||
(if error-res?
|
||||
((> (length results) (if (or error-res? void-res?) 1 0))
|
||||
(if (or error-res? void-res?)
|
||||
(cat " res = SEXP_NULL;\n")
|
||||
(cat " res = sexp_cons(ctx, res, SEXP_NULL);\n"))
|
||||
(for-each
|
||||
(lambda (x)
|
||||
(if error-res?
|
||||
(if (or error-res? void-res?)
|
||||
(cat " sexp_push(ctx, res, res" (type-index x) ");\n")
|
||||
(cat " sexp_push(ctx, res, sexp_car(res));\n"
|
||||
" sexp_cadr(res) = res" (type-index x) ";\n")))
|
||||
|
|
Loading…
Add table
Reference in a new issue