Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • rtoy's avatar
    5f1fcac9
    From Gerd Moellman, cmucl-imp, 2005-05-15: · 5f1fcac9
    rtoy authored
        This is another small fix for a problem Bruno reported:
    
        ;; 3.4.10 Define-method-combination Arguments Lambda Lists
        (progn
          (define-method-combination w-args ()
    	((method-list *))
    	(:arguments arg1 arg2 &aux (extra :extra))
    	`(progn , <at> (mapcar #'(lambda (method) `(call-method ,method))
        method-list)))
          (defgeneric mc-test-w-args (p1 p2 s)
    	(:method-combination w-args)
    	(:method ((p1 number) (p2 t) s)
    	  (vector-push-extend (list 'number p1 p2) s))
    	(:method ((p1 string) (p2 t) s)
    	  (vector-push-extend (list 'string p1 p2) s))
    	(:method ((p1 t) (p2 t) s) (vector-push-extend (list t p1 p2) s)))
          (let ((s (make-array 10 :adjustable t :fill-pointer 0)))
    	(mc-test-w-args 1 2 s)
    	s))
        Expected: #((NUMBER 1 2) (T 1 2))
        Got:      ERROR: Lambda-variable is not a symbol: (EXTRA :EXTRA).
    5f1fcac9
    History
    From Gerd Moellman, cmucl-imp, 2005-05-15:
    rtoy authored
        This is another small fix for a problem Bruno reported:
    
        ;; 3.4.10 Define-method-combination Arguments Lambda Lists
        (progn
          (define-method-combination w-args ()
    	((method-list *))
    	(:arguments arg1 arg2 &aux (extra :extra))
    	`(progn , <at> (mapcar #'(lambda (method) `(call-method ,method))
        method-list)))
          (defgeneric mc-test-w-args (p1 p2 s)
    	(:method-combination w-args)
    	(:method ((p1 number) (p2 t) s)
    	  (vector-push-extend (list 'number p1 p2) s))
    	(:method ((p1 string) (p2 t) s)
    	  (vector-push-extend (list 'string p1 p2) s))
    	(:method ((p1 t) (p2 t) s) (vector-push-extend (list t p1 p2) s)))
          (let ((s (make-array 10 :adjustable t :fill-pointer 0)))
    	(mc-test-w-args 1 2 s)
    	s))
        Expected: #((NUMBER 1 2) (T 1 2))
        Got:      ERROR: Lambda-variable is not a symbol: (EXTRA :EXTRA).