[cl-ppcre-devel] FTYPE warnings

Alan Shields Alan-Shields at omrf.ouhsc.edu
Tue Apr 12 17:22:35 UTC 2005


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)
 



More information about the Cl-ppcre-devel mailing list