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.