After the generic warnings were gone, this little jewel reared its head:
`-- new FTYPE proclamation #<SB-KERNEL:FUN-TYPE (FUNCTION (T) (VALUES SIMPLE-STRING &REST T))> for STR does not match old FTYPE proclamation #<SB-KERNEL:FUN-TYPE (FUNCTION (T) *)
What it's blathering on about is this:
(declaim (ftype (function (t) simple-string) str)
That "(declare (ftype))" for str (the accessor to class str in regex-class:166) is in conflict with what the defclass function sets up in SBCL.
Since the accessor is a generic function, knowing the return type doesn't really help all that much - it's not statically bound to begin with. Not to mention, the defclass for str sets up str as a string, so simple-string is actually in conflict with that.
I ran some numbers on SBCL with and without the declaim, and I was not able to find a difference in speed beyond the margin of error.
If it could be shown that declaiming the return type of the method would help speed, might it be best to use (the)?
I admit, this is not my area of expertise, I'm just muddling through as best I can.
Thanks, Alan
--- ../cl-ppcre-1.2.5.old/regex-class.lisp 2005-03-09 08:05:56.000000000 -0600 +++ regex-class.lisp 2005-04-12 12:14:57.050904918 -0500 @@ -265,8 +265,6 @@ (slot-value char-class 'invertedp) (not (slot-value char-class 'invertedp))))))
-(declaim (ftype (function (t) simple-string) str)) - ;;; The following four methods allow a VOID object to behave like a ;;; zero-length STR object (only readers needed)