(define-method/copy 'ACCESS
(lambda (block environment expression)
(access/make (access/scode expression)
+ (access/block expression)
(copy/expression block
environment
(access/environment expression))
(define-guarantee variable "variable")
;;; Expressions
-(define-simple-type access #f (environment name))
+(define-simple-type access #f (block environment name))
(define-simple-type assignment #f (block variable value))
(define-simple-type combination combination/%make (block operator operands))
(define-simple-type conditional conditional/%make (predicate consequent alternative))
(define-integrable (global-ref/make name)
(access/make #f
+ #f
(constant/make #f system-global-environment)
name))
(name (access/name expression)))
(define (dont-integrate)
- (access/make (access/scode expression) environment* name))
+ (access/make (access/scode expression)
+ (access/block expression)
+ environment* name))
(if (not (constant/system-global-environment? environment*))
(dont-integrate)
(define (dont-integrate)
(combination/make
expression block
- (access/make (access/scode operator) environment* name) operands))
+ (access/make (access/scode operator)
+ (access/block operator)
+ environment* name) operands))
(if (not (constant/system-global-environment? environment*))
(dont-integrate)
(access-components expression
(lambda (environment* name)
(access/make expression
+ block
(transform/expression block environment environment*)
name))))