~ chicken-core (chicken-5) f212116515aea9d99f1cf10c1f6b4baac6c9fab9
commit f212116515aea9d99f1cf10c1f6b4baac6c9fab9 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Tue Jul 26 03:29:35 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Jul 26 03:29:35 2011 +0200 removed inconsistency in resolution of var in eval of assignment diff --git a/eval.scm b/eval.scm index 35fdeb8f..3c4d08d8 100644 --- a/eval.scm +++ b/eval.scm @@ -324,6 +324,8 @@ (lambda v c))) [(##core#global-ref) + ;;XXX this is only used in tinyclos and should be removed + ;; together will all other occurrences of it (let ([var (cadr x)]) ;XXX broken - should alias (see above) (if ##sys#eval-environment (let ([loc (##sys#hash-table-location ##sys#eval-environment var #t)]) @@ -370,7 +372,10 @@ (and-let* ((a (assq var (##sys#current-environment))) ((symbol? (cdr a)))) (##sys#notice "assignment to imported value binding" var))) - (let ((var (##sys#alias-global-hook j #t cntr))) + (let ((var + (if (not (assq x se)) ; global? + (##sys#alias-global-hook j #t cntr) + (or (##sys#get j '##core#primitive) j)))) (if ##sys#eval-environment (let ([loc (##sys#hash-table-location ##sys#eval-environmentTrap