From 9b3a4769dc524d50b62fad87e40c7f6cb4d3940f Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 27 Apr 2017 18:52:22 -0400 Subject: [PATCH] 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. --- cyclone.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cyclone.scm b/cyclone.scm index 69154daa..3f1a15e1 100644 --- a/cyclone.scm +++ b/cyclone.scm @@ -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