﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	difficulty
1132	Expansion of internal definitions ignores import status/redefinition of `define` et al.	evhan		"Forms starting with {{{define}}}, {{{define-values}}} and {{{define-syntax}}} are expanded as internal definitions in let and lambda bodies regardless of whether those identifiers have been imported or redefined to some other transformer.

With redefinition:

{{{
(define-syntax define
  (syntax-rules ()
    ((_ . a) (list . a))))

;; Works, gives (1 2 3).
(define 1 2 3)

;; Works, prints (1 2 3), since the define isn't treated
;; as an internal definition.
(let ()
  (display (define 1 2 3)))

;; Fails, errors since the define is treated as an internal 
;; definition when it should instead return a list.
(let ()
  (define 1 2 3))
}}}

Without having been imported:

{{{
;; Works, errors due to define being unbound.
(module foo ()
  (import (except scheme define))
  (define a 1))

;; Fails, should error due to define being unbound but doesn't.
(module foo ()
  (import (except scheme define))
  (let () (define a 1)))
}}}

The same applies for {{{define-values}}} and {{{define-syntax}}}. 

Bindings introduced by {{{let}}}, {{{let-syntax}}} and friends are handled correctly."	defect	closed	major	5.4	expander	4.9.x	fixed	expander, syntax, define		hard
