Avoid naming conflicts with user defined inlines

Do not allow an inline if it conflicts with a global in the current module. This at least attempts to avoid obvious name conflicts. TBD if it is good enough or if additional fixes are necessary.
This commit is contained in:
Justin Ethier 2017-04-27 18:52:22 -04:00
parent 19e0346968
commit 9b3a4769dc

View file

@ -238,7 +238,12 @@
(cond
((imported? import)
(let ((lib-name (lib:list->import-set import))
(vars/inlines (eval `( ,inlinable-lambdas-fnc ))))
(vars/inlines
(filter
(lambda (v/i)
;; Try to avoid name conflicts
(not (member (car v/i) globals)))
(eval `( ,inlinable-lambdas-fnc )))))
(trace:info `(DEBUG ,import ,vars/inlines))
;; Register inlines as user-defined primitives
(for-each