mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-12 23:37:38 +02:00
Added exception handler
This commit is contained in:
parent
51a1a63700
commit
c2929af714
1 changed files with 31 additions and 28 deletions
59
cyclone.scm
59
cyclone.scm
|
@ -228,34 +228,37 @@
|
||||||
|
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (import)
|
(lambda (import)
|
||||||
(let* ((lib-name-str (lib:name->string (lib:list->import-set import)))
|
(with-handler
|
||||||
(inlinable-lambdas-fnc
|
(lambda (err)
|
||||||
(string->symbol
|
#f)
|
||||||
(string-append "c_" lib-name-str "_inlinable_lambdas"))))
|
(let* ((lib-name-str (lib:name->string (lib:list->import-set import)))
|
||||||
(cond
|
(inlinable-lambdas-fnc
|
||||||
((imported? import)
|
(string->symbol
|
||||||
(let ((lib-name (lib:list->import-set import))
|
(string-append "c_" lib-name-str "_inlinable_lambdas"))))
|
||||||
(vars/inlines (eval `( ,inlinable-lambdas-fnc ))))
|
(cond
|
||||||
(trace:info `(DEBUG ,import ,vars/inlines))
|
((imported? import)
|
||||||
;; Register inlines as user-defined primitives
|
(let ((lib-name (lib:list->import-set import))
|
||||||
(for-each
|
(vars/inlines (eval `( ,inlinable-lambdas-fnc ))))
|
||||||
(lambda (v/i)
|
(trace:info `(DEBUG ,import ,vars/inlines))
|
||||||
(let ((var (car v/i)) (inline (cdr v/i)))
|
;; Register inlines as user-defined primitives
|
||||||
(prim:add-udf! var inline)))
|
(for-each
|
||||||
vars/inlines)
|
(lambda (v/i)
|
||||||
;; Keep track of inline version of functions along with other imports
|
(let ((var (car v/i)) (inline (cdr v/i)))
|
||||||
(set! imported-vars
|
(prim:add-udf! var inline)))
|
||||||
(append
|
vars/inlines)
|
||||||
imported-vars
|
;; Keep track of inline version of functions along with other imports
|
||||||
(map
|
(set! imported-vars
|
||||||
(lambda (v/i)
|
(append
|
||||||
(cons (cdr v/i) lib-name))
|
imported-vars
|
||||||
vars/inlines)))))
|
(map
|
||||||
(else
|
(lambda (v/i)
|
||||||
;; TODO: try loading if not loaded (but need ex handler in case anything bad happens) #t ;(eval `(import ,import))
|
(cons (cdr v/i) lib-name))
|
||||||
;;(%import import)
|
vars/inlines)))))
|
||||||
#f))
|
(else
|
||||||
))
|
;; TODO: try loading if not loaded (but need ex handler in case anything bad happens) #t ;(eval `(import ,import))
|
||||||
|
;;(%import import)
|
||||||
|
;; if this work is done, would need to consolidate inline reg code above
|
||||||
|
#f)))))
|
||||||
imports)
|
imports)
|
||||||
|
|
||||||
;(for-each
|
;(for-each
|
||||||
|
|
Loading…
Add table
Reference in a new issue