mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-14 05:12:38 -08:00
Bugs fixed:
- After (REQUIRE 'CMP) the module was not registered - Provide MAKE-LOAD-FORM for some builtin objects (to be improved) - FOREIGN-DATA was not recognized as a type by SUBTYPEP - Documentation of functions not found by DOCUMENTATION
This commit is contained in:
parent
f885a005ab
commit
2074ff4dd1
5 changed files with 50 additions and 5 deletions
|
|
@ -48,9 +48,13 @@ ECL 0.9g
|
|||
- The random number generator assumed 32-bit integers.
|
||||
|
||||
- ext:run-program looks into *standard-input/output* and *error-output* for handle
|
||||
duplication also under Win32.
|
||||
|
||||
- FEtype_error_index() had format arguments in wrong order (M. Goffioul).
|
||||
duplicatio also under Win32.
|
||||
|
||||
- In the LOOP macro, variables are initialized with values of their type, no
|
||||
longer producing code like (LET ((C NIL)) (DECLARE (CHARACTER C)) ...)
|
||||
|
||||
- The compiler now advertises itself with PROVIDE so that issuing (REQUIRE
|
||||
'CMP) twice does not cause the compiler to be loaded twice.
|
||||
|
||||
* ANSI compatibility:
|
||||
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@
|
|||
(hash-table)
|
||||
(random-state)
|
||||
(readtable)
|
||||
(si::foreign-data)
|
||||
#+threads (mp::process)
|
||||
#+threads (mp::lock)))
|
||||
|
||||
|
|
|
|||
|
|
@ -438,8 +438,7 @@ q (or Q): quits the inspection.~%~
|
|||
(documentation c t)
|
||||
(si::get-documentation object doc-type))))
|
||||
(function
|
||||
(if (fboundp object)
|
||||
(documentation (fdefinition object) doc-type)
|
||||
(or (and (fboundp object) (documentation (fdefinition object) doc-type))
|
||||
(si::get-documentation object doc-type)))
|
||||
(otherwise
|
||||
(si::get-documentation object doc-type)))))
|
||||
|
|
|
|||
|
|
@ -31,6 +31,46 @@
|
|||
`(slot-makunbound ,object ',slot-name))
|
||||
initialization)))))
|
||||
|
||||
(defun need-to-make-load-form-p (object)
|
||||
(typecase object
|
||||
((or character number symbol pathname string bit-vector)
|
||||
nil)
|
||||
((array)
|
||||
(unless (subtypep (array-element-type object) '(or character number))
|
||||
(dotimes (i (array-total-size object) nil)
|
||||
(when (need-to-make-load-form-p (row-major-aref object i))
|
||||
(return-from need-to-make-load-form-p t)))))
|
||||
((cons)
|
||||
(or (need-to-make-load-form-p (car object))
|
||||
(and (cdr object)
|
||||
(need-to-make-load-form-p (cdr object)))))
|
||||
(t
|
||||
t)))
|
||||
|
||||
(defmethod make-load-form ((object t) &optional environment)
|
||||
(unless (need-to-make-load-form-p object)
|
||||
(return-from make-load-form (if (consp object) `',object object)))
|
||||
(typecase object
|
||||
((array)
|
||||
`(make-array ,(array-dimensions object)
|
||||
:element-type ,(array-element-type object)
|
||||
:adjustable ,(array-adjustable-p object)
|
||||
:initial-data
|
||||
,(loop for i from 0 by (array-total-size object)
|
||||
collect (make-load-form (row-major-aref object i)))))
|
||||
((cons)
|
||||
(do* ((x object)
|
||||
(out '()))
|
||||
((atom x)
|
||||
(progn
|
||||
(setf out (mapcar #'make-load-form (nreverse out)))
|
||||
(if x
|
||||
`(list* ,out ,(make-load-form x))
|
||||
`(list ,out))))
|
||||
(push x out)))
|
||||
(t
|
||||
(error "Cannot externalize object ~a" object))))
|
||||
|
||||
(defmethod make-load-form ((object standard-object) &optional environment)
|
||||
(make-load-form-saving-slots object))
|
||||
|
||||
|
|
|
|||
|
|
@ -746,3 +746,4 @@ Cannot compile ~a."
|
|||
#-ecl-min
|
||||
(load "sys:sysfun")
|
||||
|
||||
(provide 'cmp)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue