Re: SWANK defines defstructs in the keyword package
Martin Simmons <[email protected]> Wed, 5 Jul 2017 11:58:04 +0100
| Newsgroups | gmane.lisp.slime.devel |
|---|---|
| Message-ID | <[email protected]> |
Thanks, here is another one, in swank.lisp this time (hopefully the last one). >>>>> On Mon, 3 Jul 2017 22:57:50 +0300, Stas Boukarev said: > > Applied, thanks. > > On Mon, Jul 3, 2017 at 8:41 PM, Martin Simmons <[email protected]> wrote: > > Thanks, I've attached a patch that works for LispWorks, but I think only SBCL > > uses the readers. > > > >>>>>> On Mon, 3 Jul 2017 20:04:46 +0300, Stas Boukarev said: > >> > >> I'd apply a patch that performs this. > >> > >> On Mon, Jul 3, 2017 at 7:52 PM, Martin Simmons <[email protected]> wrote: > >> > Hi, > >> > > >> > swank/backend.lisp defines some defstructs in the keyword package: > >> > > >> > (defstruct (:location (:type list) :named > >> > (:constructor make-location > >> > (buffer position &optional hints))) > >> > buffer position > >> > ;; Hints is a property list optionally containing: > >> > ;; :snippet SOURCE-TEXT > >> > ;; This is a snippet of the actual source text at the start of > >> > ;; the definition, which could be used in a text search. > >> > hints) > >> > > >> > (defstruct (:error (:type list) :named (:constructor)) message) > >> > > >> > ;;; Valid content for BUFFER slot > >> > (defstruct (:file (:type list) :named (:constructor)) name) > >> > (defstruct (:buffer (:type list) :named (:constructor)) name) > >> > (defstruct (:etags-file (:type list) :named (:constructor)) filename) > >> > > >> > ;;; Valid content for POSITION slot > >> > (defstruct (:position (:type list) :named (:constructor)) pos) > >> > (defstruct (:tag (:type list) :named (:constructor)) tag1 tag2) > >> > > >> > > >> > This is generally a bad idea because it can lead to clashes in the namespace > >> > of structure names (as used by the :include option). > >> > > >> > AFICS, except for "location", these definitions are never used because they > >> > are always constructed using backquote or list. > >> > > >> > Would you consider removing the defstructs and adding defuns for make-location > >> > and its readers? > >> > > >> > -- > >> > Martin Simmons > >> > LispWorks Ltd > >> > http://www.lispworks.com/ > >> > > >> > >> > >> > >> -- > >> With best regards, Stas. > >> > > > > -- > With best regards, Stas. >
remove-keyword-defstructs-2.patch
(text/plain, 977 B)
diff --git a/swank.lisp b/swank.lisp index 2cdaef0..b1ef074 100644 --- a/swank.lisp +++ b/swank.lisp @@ -2368,13 +2368,16 @@ and no continue restart available."))))) ;;;; Compilation Commands. -(defstruct (:compilation-result - (:type list) :named) - notes - (successp nil :type boolean) - (duration 0.0 :type float) - (loadp nil :type boolean) - (faslfile nil :type (or null string))) +(defun make-compilation-result (&key notes + (successp nil) + (duration 0.0) + (loadp nil) + (faslfile nil)) + (check-type successp boolean) + (check-type duration float) + (check-type loadp boolean) + (check-type faslfile (or null string)) + `(:compilation-result ,notes ,successp ,duration ,loadp ,faslfile)) (defun measure-time-interval (fun) "Call FUN and return the first return value and the elapsed time.