Opened 7 years ago
Last modified 2 years ago
#1286 new enhancement
define-constant and define-inline should shadow imported identifiers
Reported by: | evhan | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 5.4 |
Component: | compiler | Version: | 4.10.x |
Keywords: | modules, inlining, define-inline, define-constant | Cc: | |
Estimated difficulty: | hard |
Description
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 (5)
comment:1 Changed 7 years ago by
Estimated difficulty: | → hard |
---|
comment:2 Changed 6 years ago by
Milestone: | 5.0 → 5.1 |
---|
comment:3 Changed 4 years ago by
Milestone: | 5.1 → 5.2 |
---|
comment:4 Changed 4 years ago by
Milestone: | 5.2 → 5.3 |
---|
comment:5 Changed 2 years ago by
Milestone: | 5.3 → 5.4 |
---|
Note: See
TracTickets for help on using
tickets.
Getting ready for 5.1, moving tickets which won't make it in to 5.2.