Add a type check

This commit is contained in:
Justin Ethier 2018-09-21 13:06:37 -04:00
parent ade50748b6
commit 40a2131fef

View file

@ -1623,36 +1623,37 @@
(for-each (for-each
(lambda (l) (lambda (l)
(let ((ast (caddr l))) (let ((ast (caddr l)))
(with-fnc (ast:lambda-id ast) (lambda (fnc) (when (ast:lambda? ast)
(when (and (adbf:well-known fnc) (with-fnc (ast:lambda-id ast) (lambda (fnc)
(equal? (adbf:closure-size fnc) 1)) (when (and (adbf:well-known fnc)
(trace:error `(JAE ,l ,fnc)) (equal? (adbf:closure-size fnc) 1))
(let* ((params-str (cdadr l)) (trace:error `(JAE ,l ,fnc))
(args-str (let* ((params-str (cdadr l))
(string-join (args-str
(cdr (string-join
(string-split (cdr
(string-replace-all params-str "object" "") (string-split
#\,)) (string-replace-all params-str "object" "")
#\,)) #\,))
) #\,))
(emit* )
"static void __lambda_gc_ret_" (emit*
(number->string (car l)) "static void __lambda_gc_ret_"
"(void *data, int argc," (number->string (car l))
params-str "(void *data, int argc,"
")" params-str
"{" ")"
"\nobject obj = " "{"
(mangle (car (adbf:all-params fnc))) "\nobject obj = "
";\n" (mangle (car (adbf:all-params fnc)))
"__lambda_" ";\n"
(number->string (car l)) "__lambda_"
"(data, argc, obj" (number->string (car l))
(if (> (string-length args-str) 0) "(data, argc, obj"
(string-append "," args-str)) (if (> (string-length args-str) 0)
");" (string-append "," args-str))
"}"))))))) ");"
"}"))))))))
lambdas) lambdas)
; Print the definitions: ; Print the definitions: