0.8.20.6:
[sbcl.git] / src / code / class.lisp
index 056f802..535914c 100644 (file)
                              inherits
                              :key #'layout-proper-name)
                (warn "change in superclasses of class ~S:~%  ~
-                      ~A superclasses: ~S~%  ~
-                      ~A superclasses: ~S"
+                       ~A superclasses: ~S~%  ~
+                       ~A superclasses: ~S"
                      name
                      old-context
                      (map 'list #'layout-proper-name old-inherits)
                (when diff
                  (warn
                   "in class ~S:~%  ~
-                   ~:(~A~) definition of superclass ~S is incompatible with~%  ~
-                   ~A definition."
+                    ~:(~A~) definition of superclass ~S is incompatible with~%  ~
+                    ~A definition."
                   name
                   old-context
                   (layout-proper-name (svref old-inherits diff))
        (let ((old-length (layout-length old-layout)))
          (unless (= old-length length)
            (warn "change in instance length of class ~S:~%  ~
-                  ~A length: ~W~%  ~
-                  ~A length: ~W"
+                   ~A length: ~W~%  ~
+                   ~A length: ~W"
                  name
                  old-context old-length
                  context length)
            t))
        (unless (= (layout-depthoid old-layout) depthoid)
          (warn "change in the inheritance structure of class ~S~%  ~
-                between the ~A definition and the ~A definition"
+                 between the ~A definition and the ~A definition"
                name old-context context)
          t))))
 
     ;; system from scratch, so we no longer need this functionality in
     ;; order to maintain the SBCL system by modifying running images.
     (error "The class ~S was not changed, and there's no guarantee that~@
-           the loaded code (which expected another layout) will work."
+            the loaded code (which expected another layout) will work."
           (layout-proper-name layout)))
   (values))
 
   (let ((layout (find-layout name)))
     (init-or-check-layout layout
                          (or (find-classoid name nil)
-                             (make-undefined-classoid name))
+                             (layout-classoid layout))
                          length
                          inherits
                          depthoid)))
@@ -709,6 +709,8 @@ NIL is returned when no such class exists."
     (if (or res (not errorp))
        res
        (error 'simple-type-error
+               :datum nil
+               :expected-type 'class
                :format-control "class not yet defined:~%  ~S" 
                :format-arguments (list name)))))
 (defun (setf find-classoid) (new-value name)
@@ -933,11 +935,9 @@ NIL is returned when no such class exists."
   (setq
    *built-in-classes*
    '((t :state :read-only :translation t)
-     (character :enumerable t :translation base-char
-                :prototype-form (code-char 42))
-     (base-char :enumerable t
-               :inherits (character)
-               :codes (#.sb!vm:base-char-widetag)
+     (character :enumerable t 
+                :codes (#.sb!vm:character-widetag)
+                :translation (character-set)
                 :prototype-form (code-char 42))
      (symbol :codes (#.sb!vm:symbol-header-widetag)
              :prototype-form '#:mu)
@@ -1243,6 +1243,21 @@ NIL is returned when no such class exists."
       :inherits (base-string simple-string string vector simple-array
                 array sequence)
       :prototype-form (make-array 0 :element-type 'base-char))
+     #!+sb-unicode
+     (character-string
+      :translation (vector character)
+      :codes (#.sb!vm:complex-character-string-widetag)
+      :direct-superclasses (string)
+      :inherits (string vector array sequence)
+      :prototype-form (make-array 0 :element-type 'character :fill-pointer t))
+     #!+sb-unicode
+     (simple-character-string
+      :translation (simple-array character (*))
+      :codes (#.sb!vm:simple-character-string-widetag)
+      :direct-superclasses (character-string simple-string)
+      :inherits (character-string simple-string string vector simple-array
+                array sequence)
+      :prototype-form (make-array 0 :element-type 'character))
      (list
       :translation (or cons (member nil))
       :inherits (sequence))
@@ -1256,12 +1271,18 @@ NIL is returned when no such class exists."
       :inherits (symbol list sequence)
       :direct-superclasses (symbol list)
       :prototype-form 'nil)
-     
      (stream
       :state :read-only
       :depth 3
-      :inherits (instance)
-      :prototype-form (make-broadcast-stream)))))
+      :inherits (instance))
+     (file-stream
+      :state :read-only
+      :depth 5
+      :inherits (stream))
+     (string-stream
+      :state :read-only
+      :depth 5
+      :inherits (stream)))))
 
 ;;; See also src/code/class-init.lisp where we finish setting up the
 ;;; translations for built-in types.