define-constant and define-inline should shadow imported identifiers
The following should print yes
rather than the procedure exact
:
(use (only data-structures exact))
(define-constant exact 'yes)
(print exact) ; => #<procedure (numbers#inexact->exact x1007)> instead of 'yes
The same applies for define-inline
:
(use (only numbers exact))
(define-inline (exact n) 'yes)
(print (exact 1.0)) ; => 1 instead of 'yes
This happens because variables are module-resolved (via lookup
against the current environment) in resolve-variable
before they're keyed into the constant and inline tables. I think the raw identifier should be used when looking up inlined and constant idenfifiers instead (x0
rather than x
), but haven't looked too deeply at this issue yet.
Change History (6)
Estimated difficulty: |
→ hard
|
Getting ready for 5.1, moving tickets which won't make it in to 5.2.