﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	difficulty
1286	define-constant and define-inline should shadow imported identifiers	evhan		"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."	enhancement	new	minor	6.0.0	compiler	4.10.x		modules, inlining, define-inline, define-constant		hard
