0.8.16.2: TYPE-ERROR for ERROR
[sbcl.git] / src / code / symbol.lisp
index e584925..557141b 100644 (file)
 (defun makunbound (symbol)
   #!+sb-doc
   "Make SYMBOL unbound, removing any value it may currently have."
 (defun makunbound (symbol)
   #!+sb-doc
   "Make SYMBOL unbound, removing any value it may currently have."
-  (set symbol
-       (%primitive sb!c:make-other-immediate-type
-                  0
-                  sb!vm:unbound-marker-widetag))
-  symbol)
+  (with-single-package-locked-error (:symbol symbol "unbinding the symbol ~A")
+    (set symbol
+        (%primitive sb!c:make-other-immediate-type
+                    0
+                    sb!vm:unbound-marker-widetag))
+    symbol))
 
 ;;; Return the built-in hash value for SYMBOL.
 
 ;;; Return the built-in hash value for SYMBOL.
-#!+(or x86 mips) ;; only backends for which a symbol-hash vop exists
 (defun symbol-hash (symbol)
   (symbol-hash symbol))
 
 (defun symbol-hash (symbol)
   (symbol-hash symbol))
 
-;;; Compute the hash value for SYMBOL.
-#!-(or x86 mips)
-(defun symbol-hash (symbol)
-  (%sxhash-simple-string (symbol-name symbol)))
-
 (defun symbol-function (symbol)
   #!+sb-doc
   "Return SYMBOL's current function definition. Settable with SETF."
 (defun symbol-function (symbol)
   #!+sb-doc
   "Return SYMBOL's current function definition. Settable with SETF."
-  (raw-definition symbol))
+  (%coerce-name-to-fun symbol))
 
 
-(defun fset (symbol new-value)
+(defun (setf symbol-function) (new-value symbol)
   (declare (type symbol symbol) (type function new-value))
   (declare (type symbol symbol) (type function new-value))
-  (setf (raw-definition symbol) new-value))
+  (with-single-package-locked-error 
+      (:symbol symbol "setting the symbol-function of ~A")
+    (setf (%coerce-name-to-fun symbol) new-value)))
 
 (defun symbol-plist (symbol)
   #!+sb-doc
 
 (defun symbol-plist (symbol)
   #!+sb-doc
   (do ((plist place (cddr plist)))
       ((null plist) default)
     (cond ((atom (cdr plist))
   (do ((plist place (cddr plist)))
       ((null plist) default)
     (cond ((atom (cdr plist))
-          (error "~S is a malformed property list."
-                 place))
+          (error 'simple-type-error
+                 :format-control "malformed property list: ~S."
+                 :format-arguments (list place)
+                 :datum (cdr plist)
+                 :expected-type 'cons))
          ((eq (car plist) indicator)
           (return (cadr plist))))))
 
          ((eq (car plist) indicator)
           (return (cadr plist))))))
 
   (do ((plist place (cddr plist)))
       ((null plist) (values nil nil nil))
     (cond ((atom (cdr plist))
   (do ((plist place (cddr plist)))
       ((null plist) (values nil nil nil))
     (cond ((atom (cdr plist))
-          (error "~S is a malformed proprty list."
-                 place))
+          (error 'simple-type-error
+                 :format-control "malformed property list: ~S."
+                 :format-arguments (list place)
+                 :datum (cdr plist)
+                 :expected-type 'cons))
          ((memq (car plist) indicator-list)
           (return (values (car plist) (cadr plist) plist))))))
 
          ((memq (car plist) indicator-list)
           (return (values (car plist) (cadr plist) plist))))))