From 568b395ea160deaea3f6d890ee33489dc48174d8 Mon Sep 17 00:00:00 2001
From: ram <ram>
Date: Wed, 17 Oct 1990 04:04:59 +0000
Subject: [PATCH] Fixed a bunch of problems revealed by the compiler now that
 it compares declared types with definitions.  Also, fixed some of the logical
 functions to say their arguments were integers, not T.

---
 compiler/fndb.lisp | 36 +++++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 17 deletions(-)

diff --git a/compiler/fndb.lisp b/compiler/fndb.lisp
index 971ab02a0..9c12e9e60 100644
--- a/compiler/fndb.lisp
+++ b/compiler/fndb.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/fndb.lisp,v 1.13 1990/10/13 05:08:58 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/fndb.lisp,v 1.14 1990/10/17 04:04:59 ram Exp $
 ;;;
 ;;;    This file defines all the standard functions to be known functions.
 ;;; Each function has type and side-effect information, and may also have IR1
@@ -196,7 +196,7 @@
 (defknown lcm (&rest integer) unsigned-byte (movable foldable flushable))
 
 (defknown exp (number) irrational (movable foldable flushable))
-(defknown expt (number real) number (movable foldable flushable))
+(defknown expt (number number) number (movable foldable flushable))
 (defknown log (number &optional real) irrational (movable foldable flushable))
 (defknown sqrt (number) irrational (movable foldable flushable))
 (defknown isqrt (unsigned-byte) unsigned-byte (movable foldable flushable))
@@ -215,8 +215,6 @@
 (defknown (ffloor fceiling fround ftruncate)
   (real &optional real) (values float float) (movable foldable flushable))
 
-
-
 (defknown decode-float (float) (values float float-exponent float)
   (movable foldable flushable))
 (defknown scale-float (float float-exponent) float
@@ -232,14 +230,18 @@
 (defknown complex (real &optional real) number (movable foldable flushable))
 (defknown (realpart imagpart) (number) real (movable foldable flushable))
 
-(defknown (logior logxor logand logeqv lognand lognor logandc1 logandc2 logorc1
-		  logorc2)
-  (&rest integer) t
+(defknown (logior logxor logand logeqv) (&rest integer) integer
+  (movable foldable flushable))
+
+(defknown (lognand lognor logandc1 logandc2 logorc1 logorc2)
+	  (integer integer) integer
   (movable foldable flushable))
 
-(defknown boole (t t boole-code) integer (movable foldable flushable))
-(defknown lognot (integer) t (movable foldable flushable))
-(defknown logtest (t integer) boolean (movable foldable flushable))
+(defknown boole (integer integer boole-code) integer
+  (movable foldable flushable))
+
+(defknown lognot (integer) integer (movable foldable flushable))
+(defknown logtest (integer integer) boolean (movable foldable flushable))
 (defknown logbitp (bit-index integer) boolean (movable foldable flushable))
 (defknown ash (integer ash-index) integer (movable foldable flushable))
 (defknown (logcount integer-length) (integer) bit-index
@@ -279,7 +281,7 @@
 (defknown code-char (char-code) base-character (movable foldable flushable))
 (defknown (char-upcase char-downcase) (character) character
   (movable foldable flushable))
-(defknown digit-char (integer &optional integer char-bits)
+(defknown digit-char (integer &optional integer)
   (or character null) (movable foldable flushable))
 (defknown char-int (character) char-code (movable foldable flushable))
 (defknown char-name (character) (or simple-string null)
@@ -550,7 +552,7 @@
 	  (t list &key (key callable) (test callable) (test-not callable))
   list (foldable flushable call))
 (defknown (assoc-if-not assoc-if rassoc-if rassoc-if-not)
-	  (callable list) list (foldable flushable call))
+	  (callable list &key (:key callable)) list (foldable flushable call))
 
 
 ;;;; In the "Hash Tables" chapter:
@@ -619,7 +621,7 @@
 
 (defknown adjust-array
   (array (or index list) &key (element-type type-specifier)
-	 (initial-element t) (initial-contents list) (adjustable t)
+	 (initial-element t) (initial-contents list)
 	 (fill-pointer t) (displaced-to (or array null))
 	 (displaced-index-offset index))
   array (unsafe))
@@ -972,15 +974,15 @@
 (defknown %put (symbol t t) t (unsafe))
 (defknown %setelt (sequence index t) t (unsafe))
 (defknown %svset (simple-vector index t) t (unsafe))
-(defknown %bitset (bit-vector index bit) bit (unsafe))
-(defknown %sbitset (simple-bit-vector index bit) bit (unsafe))
+(defknown %bitset (bit-vector &rest index) bit (unsafe))
+(defknown %sbitset (simple-bit-vector &rest index) bit (unsafe))
 (defknown %charset (string index character) character (unsafe))
 (defknown %scharset (simple-string index character) character (unsafe))
 (defknown %sp-set-definition (symbol function) function (unsafe))
 (defknown %sp-set-plist (symbol t) t (unsafe))
 (defknown %set-documentation
-	  (symbol (member variable function structure type setf)
-		  (or string null))
+  (symbol (member variable function structure type setf) (or string null))
+  (or string null)
   ())
 (defknown %setnth (index list t) t (unsafe))
 (defknown %set-fill-pointer (vector index) (unsafe))
-- 
GitLab