Raymond Toy pushed to branch master at cmucl / cmucl

Commits:

3 changed files:

Changes:

  • src/code/load.lisp
    ... ... @@ -565,7 +565,8 @@
    565 565
     		   (fasload filename)
    
    566 566
     		   (sloload filename))
    
    567 567
     	       (let ((pn (merge-pathnames (pathname filename)
    
    568
    -					  *default-pathname-defaults* nil)))
    
    568
    +					  *default-pathname-defaults* nil))
    
    569
    +                     (if-does-not-exist (if if-does-not-exist :error nil)))
    
    569 570
     		 (if (wild-pathname-p pn)
    
    570 571
     		     (dolist (file (directory pn) t)
    
    571 572
     		       (internal-load pn file if-does-not-exist contents
    

  • src/compiler/fndb.lisp
    ... ... @@ -1119,7 +1119,7 @@
    1119 1119
     
    
    1120 1120
     (defknown load
    
    1121 1121
       ((or filename stream)
    
    1122
    -   &key (:verbose t) (:print t) (:if-does-not-exist (member :error nil))
    
    1122
    +   &key (:verbose t) (:print t) (:if-does-not-exist t)
    
    1123 1123
        (:if-source-newer (member :load-source :load-object :query :compile))
    
    1124 1124
        (:contents (or null (member :source :binary)))
    
    1125 1125
        (:external-format t))
    

  • tests/issues.lisp
    ... ... @@ -1105,3 +1105,16 @@
    1105 1105
     	   (not (zerop n))))
    
    1106 1106
         (dolist (x '(0 1 1000))
    
    1107 1107
           (assert-equal (expected x) (fun x) x))))
    
    1108
    +
    
    1109
    +(define-test issue.333.if-does-not-exist
    
    1110
    +    (:tag :issues)
    
    1111
    +  ;; "unknown.lisp" should be a file that doesn't exist.  Verify that
    
    1112
    +  ;; if :IF-DOES-NOT-EXIST is non-NIL we signal an error from LOAD.
    
    1113
    +  ;; The first case is the old default value of :ERROR.
    
    1114
    +  (assert-error 'file-error
    
    1115
    +                 (load "unknown.lisp" :if-does-not-exist :error))
    
    1116
    +  ;; :IF-DOES-NOT-EXIST is a generalized BOOLEAN, so non-NIL will
    
    1117
    +  ;; signal an error too.
    
    1118
    +  (assert-error 'file-error
    
    1119
    +                 (load "unknown.lisp" :if-does-not-exist t))
    
    1120
    +  (assert-false (load "unknown.lisp" :if-does-not-exist nil)))