>>>>> "Sam" == Sam Steingold <[EMAIL PROTECTED]> writes:

    Sam> when compiling a file with the following function:


[code snipped]

    Sam> I get the follwing:

[snip]

    Sam> ; In: DEFUN Y3-LOAD

    Sam> ;   (CERROR "ignore file [EMAIL PROTECTED]" "~S: no function ~S" 'Y3-LOAD FN 
...)
    Sam> ; Note: Deleting unreachable code.

I'm not 100% sure this is right, but if fn has a function definition,
cerror is not called.  If fn doesn't, fdefinition signals an error, so
cerror isn't called either.

    Sam> ;
    Sam> ;   (HANDLER-CASE (DELETE-FILE PATH) (ERROR # #) (:NO-ERROR NIL #))
    Sam> ; --> BLOCK MULTIPLE-VALUE-CALL FUNCALL
    Sam> ; ==>
    Sam> ;   (C::%FUNCALL FUNCTION #:FUNCALL-ARG-2863)
    Sam> ; Warning: Function called with one argument, but wants exactly zero.

>From the CLHS Note:

 (handler-case form
   (type1 (var1) . body1)
   ...
   (:no-error (varN-1 varN-2 ...) . bodyN))

is approximately equivalent to:

 (block #1=#:error-return
  (multiple-value-call #'(lambda (varN-1 varN-2 ...) . bodyN)
     (block #2=#:normal-return
       (return-from #1#
         (handler-case (return-from #2# form)
           (type1 (var1) . body1) ...)))))

So your :no-error clause expects no args, but you're are calling it
with one arg, the result of (delete-file path), if everything works
without errors.

    Sam> ----------- here CMUCL sleeps for a minute on a VERY fast machine!!! ---------

Can't explain this.  The snip you gave aboves compiles "instantly"
even on a slow box.

    Sam> when I try to load the compiled file, I get an error:

    Sam> * (load *)

    Sam> ; Loading #p"/home/sds/work/isd-cvs/cadre/lisp/y3-input.x86f".



    Sam> Error in function LISP::%ENUMERATE-SEARCH-LIST:  Undefined search list: r
    Sam>    [Condition of type SIMPLE-ERROR]

    Sam> Restarts:
    Sam>   0: [CONTINUE] Return NIL from load of 
#p"/home/sds/work/isd-cvs/cadre/lisp/y3-
    Sam> input.x86f".
    Sam>   1: [ABORT   ] Return to Top-Level.

    Sam> Debug  (type H for help)

    Sam> (LISP::%ENUMERATE-SEARCH-LIST
    Sam>  #<Unprintable pathname, Host=#<LISP::UNIX-HOST>, Device=NIL, 
Directory=(:ABSOLU
    Sam> TE
    Sam>                                                                          
#<EXTEN
    Sam> SIONS:SEARCH-LIST
    r> 
    Sam>                                                                          "Y3 
Dat
    Sam> asets"
    Sam>                                                                          
:WILD),
    Sam>  Name=:WILD, Type=:WILD, Version=:WILD>
    Sam>  #<Closure Over Function (FLET #:G0
    Sam>                            DIRECTORY)
    Sam>    {5E066289}>)

Looks like you've somehow created a search-list named "r:" that
doesn't exist.  I don't know how that's possible.  Sorry.


Ray


Reply via email to