(defknown streamp (t) boolean (movable foldable flushable))
(defknown stream-element-type (stream) type-specifier
(movable foldable flushable))
+(defknown stream-external-format (stream) t (flushable))
(defknown (output-stream-p input-stream-p) (stream) boolean
(movable foldable flushable))
+(defknown open-stream-p (stream) boolean (flushable))
(defknown close (stream &key (:abort t)) (eql t) ())
+(defknown file-string-length (ansi-stream (or string character))
+ (or unsigned-byte null)
+ (flushable))
\f
;;;; from the "Input/Output" chapter:
(any explicit-check)
:derive-type #'result-type-first-arg)
+(defknown (pprint) (t &optional stream-designator) (values)
+ (explicit-check))
+
;;; xxx-TO-STRING functions are not foldable because they depend on
;;; the dynamic environment, the state of the pretty printer dispatch
;;; table, and probably other run-time factors.
(:emit-cfasl t))
(values (or pathname null) boolean boolean))
+(defknown (compile-file-pathname)
+ (pathname-designator &key (:output-file (or pathname-designator
+ null
+ (member t)))
+ &allow-other-keys)
+ pathname)
+
;; FIXME: consider making (OR CALLABLE CONS) something like
;; EXTENDED-FUNCTION-DESIGNATOR
(defknown disassemble ((or callable cons) &key
(defknown sleep ((real 0)) null (explicit-check))
+(defknown call-with-timing (callable callable &rest t) *
+ (call))
+
;;; Even though ANSI defines LISP-IMPLEMENTATION-TYPE and
;;; LISP-IMPLEMENTATION-VERSION to possibly punt and return NIL, we
;;; know that there's no valid reason for our implementations to ever
(in-package "SB-C")
(defknown slot-value (t symbol) t (any))
+(defknown (slot-boundp slot-exists-p) (t symbol) boolean)
(defknown sb-pcl::set-slot-value (t symbol t) t (any))
+(defknown find-class (symbol &optional t lexenv-designator)
+ (or class null))
+(defknown class-of (t) class (flushable))
+(defknown class-name (class) symbol (flushable))
+
(deftransform slot-value ((object slot-name) (t (constant-arg symbol)) *
:node node)
(let ((c-slot-name (lvar-value slot-name)))