[Openmcl-devel] Problems with call-next-method in 1.4-dev-r12912M-trunk (WindowsX8632)

Matthew Swank akopa.gmane.poster at gmail.com
Mon Oct 5 19:20:29 UTC 2009


This looks like it should work ok:

CL-USER> (defgeneric foo (bar baz))
#<STANDARD-GENERIC-FUNCTION FOO #xA8F3C1E>

CL-USER> (defmethod foo ((bar (eql 'bar)) (baz string))
	   (call-next-method bar (length baz)))
#<STANDARD-METHOD FOO ((EQL BAR) STRING)>

CL-USER> (defmethod foo ((bar (eql 'bar)) baz)
	   (cons baz baz))
#<STANDARD-METHOD FOO ((EQL BAR) T)>

CL-USER> (foo 'bar "baz")

=>
Applicable-methods changed in call-next-method.
Should be: (#<STANDARD-METHOD FOO ((EQL BAR) STRING)>
            #1=#<STANDARD-METHOD FOO (# T)>)
Was: (#1#)
Next-methods: (#1#)
   [Condition of type SIMPLE-ERROR]

Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [ABORT] Return to SLIME's top level.
 2: [ABORT-BREAK] Reset this thread
 3: [ABORT] Kill this thread

Backtrace:
  0: ((:INTERNAL CCL::DO-IT CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE)
#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> (#1=#<STANDARD-METHOD FOO #>
#2=#<#>) NIL NIL (#1# #2#)) (BAR 3))
      Locals:
        CCL::THING = #(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> ..))
        CCL::ARGS = (BAR 3)
        CCL::ARGS-LEN = 2
        CCL::GF = #<STANDARD-GENERIC-FUNCTION FOO #xA84C996>
        CCL::NUMREQ = 2
        CCL::NEXT-METHODS = (#<STANDARD-METHOD FOO ((EQL BAR) T)>)
        CCL::OLD-ARGS = 12108566
        CCL::NEW-METHODS = (#<STANDARD-METHOD FOO ((EQL BAR) T)>)
        CCL::OLD-METHODS = (#<STANDARD-METHOD FOO ((EQL BAR) STRING)>
#<STANDARD-METHOD FOO (# T)>)
        CCL::MAGIC = (#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> (#<#> #<#>)
NIL NIL ..)))))
  1: (CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE #(#<STANDARD-GENERIC-FUNCTION
FOO #xA84C996> (#1=#<STANDARD-METHOD FOO #> #2=#<#>) NIL NIL (#1# #2#)) (BAR 3)
(#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> ..
      Locals:
        CCL::THING = #(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> ..))
        CCL::ARGS = (BAR 3)
        CCL::MAGIC = (#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> (#<#> #<#>)
NIL NIL ..)))))
  2: (CCL::%CALL-NEXT-METHOD-WITH-ARGS (#(#<STANDARD-GENERIC-FUNCTION FOO
#xA84C996> (#1=#<#> #2=#<#>) NIL NIL (#1# #2#)) (#2#) . 12108566) BAR 3)
      Locals:
        CCL::MAGIC = (#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> (#<#> #<#>)
NIL NIL ..)))))
        CCL::ARGS = (BAR 3)
        CCL::METHODS = (#<STANDARD-METHOD FOO ((EQL BAR) T)>)
        CCL::CNM-CM = #(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> ..))
        CCL::THE-VECT = #(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> ..))
  3: (CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE #(#<STANDARD-GENERIC-FUNCTION
FOO #xA84C996> (#1=#<STANDARD-METHOD FOO #> #2=#<#>) NIL NIL (#1# #2#)) 12108566
NIL)
      Locals:
        CCL::THING = #(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> ..))
        CCL::ARGS = 12108566
        CCL::MAGIC = NIL
        CCL::METHODS = (#<STANDARD-METHOD FOO ((EQL BAR) STRING)>
#<STANDARD-METHOD FOO (# T)>)
        CCL::CAR-METHS = #<STANDARD-METHOD FOO ((EQL BAR) STRING)>
        CCL::CELL-2 = ((#<STANDARD-METHOD FOO (# T)>) . 12108566)
        CCL::MAGIC = (#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> (#<#> #<#>)
NIL NIL ..)))))
        #:G103106 = (#(#<STANDARD-GENERIC-FUNCTION FOO #xA84C996> (#<#> #<#>)
NIL NIL ..)))))
        #:G103107 = #<METHOD-FUNCTION FOO ((EQL BAR) STRING)>
        #:G103108 = 12108566
  4: (NIL #<Unknown Arguments>)
      [No Locals]
  5: (NIL #<Unknown Arguments>)
      [No Locals]
  6: (CCL::CALL-CHECK-REGS FOO BAR "baz")
  
....




More information about the Openmcl-devel mailing list