[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

scoops--bug fixes 6/6



5/24/87--METHODS.SCM:
In the define-methods macro

> ,formal-list <

was changed to > ',formal-list <
to enable methods with parameters.
>>Steve Sherin


5/25/87
In the file INSTANCE.SCM:
(define-macro (%sc-compile-class class)  ... )

has been changed to

(define (%sc-compile-class class)
  (begin
    (%inherit-method-vars class)
    (eval (%make-template (%sc-name class) class) 
		user-initial-environment)))
This made sure classes always compile in the user-initial-environment.

>>Steve Sherin

5/25/87
=======
In methods.scm:
(syntax-table-define ... 'define-macro ...)

was modified to 
(syntax-table-define system-global-syntax-table 'define-method (macro e
	(let ((class-name (caar e))
	      (method-name (cadar e))
	      (formal-list (cadr e))
	      (body (cddr e)))
	`(%sc-class-add-method
	',class-name
	',method-name
	',class-name
	',class-name
	(append (list 'lambda ',formal-list) ',body) 
	(lambda (env quoted-val)
	  (let* ((method-name ',method-name)
		 (temp `(in-package ,env (define ,method-name
		 	 ,quoted-val))))
		(eval temp (the-environment)))
)))))

Change enabled methods with multiple expressions within the main
lambda.

>>Steve Sherin


6/6/87

In INTERF.SCM:
changed

       (empty-slot?
         (lambda (form)
	   (not (eval form (the-environment)))))


to


	(empty-slot?
	  (lambda (form)
	  (cond
		((symbol? form) #f)
		((eq? form #f) #t)
		(else #f))))


Hence, "no more functions" for an active-value set- or get-
method is specified by a CONSTANT value for the false value.
The change provides the ability to use forward references
to methods as yet undefined when active values are declared.
(Thanks Eric.)

NB  This code does NOT check for the symbol >> false <<
as it is not used in r3rs and can be modified as any other
variable.

>> Steve Sherin