Giter VIP home page Giter VIP logo

cl-annot's People

Contributors

fukamachi avatar guicho271828 avatar m2ym avatar mmontone avatar yasuyk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cl-annot's Issues

Please specify the license for this package

Could you please specify the license used for this package?

Assuming that you want to release under "the GPL v3 or any later version", the best way to do that would be to add this permission statement to the library header:

;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.

;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also consider adding a LICENSE file containing the text of the GPL-3. You could add just that file without also adding the above persmission statement, but if you do that, then the "or (at your option) any later version" bit won't be known. So I recommend that you add both the actual license and the permission statement.

If you find the permission statement to be too noisy, then you could instead add one of these following lines to the header. If you do that, then it becomes more important to also add the LICENSE file - a judge might decide that such a line by itself is not sufficient. Still, adding just such a line is better than not specifing the license at all.

;; License: GNU General Public License version 3, or (at your option) any later version
;; License: GNU General Public License version 3, or any later version
;; License: GNU GPL version 3, or (at your option) any later version
;; License: GPL version 3, or (at your option) any later version
;; License: GPL version 3, or any later version
;; License: GPL v3, or (at your option) any later version
;; License: GPL v3, or any later version
;; License: GPL-3+

Reader macro conflict on Allegro CL

On a Travis CI worker running Allegro CL 9.0 [Linux (x86)], (use-syntax :annot) triggers Reader macro conflict while trying to merge the dispatch macro characters #\# #\U from #<readtable named CL-ANNOT.SYNTAX> into #<readtable>.

Reproduced in Scalpl's Job #7.2, which seems to occur when CL-DBI compilation reaches this call to use-syntax.

:description

Would you please consider adding a :description option to your system definition of cl-annot?

@export multiple vars/params at once

Rather than:

@export
(defparameter +moose-height+ 7)
@export
(defparameter +moose-width+ 11)
@export
(defvar *moose-times-seen* 0)

@export
(defun handle-moose-sighting () ...)

Is there a simple way to accomplish something like:

@export-block
(defparameter +moose-height+ 7)
(defparameter +moose-width+ 11)
(defvar *moose-times-seen* 0)

@export
(defun handle-moose-sighting () ...)

Thanks!

export-constructors doesn't export default constructor from defstruct when another constructor specified

defstruct in CL allows to specify several constructors. If second argument to the :constructor keyword provided, it is used as a constructor name. :constructor with no arguments creates a default constructor.
However if both BOA(By Order of Arguments) and explicit default constructor provided, the export-constructors macro exports only BOA constructor, see the session below:

CL-USER 28 > (defstruct (point (:constructor create-point (x y)) (:constructor)) x y)
POINT

CL-USER 29 > (create-point 10 20)
#S(POINT :X 10 :Y 20)

CL-USER 30 > (make-point :x 10 :y 10)
#S(POINT :X 10 :Y 10)

CL-USER 31 > (pprint (macroexpand '(cl-annot.class:export-constructors (defstruct (point (:constructor create-point (x y)) (:constructor)) x y))))

(PROGN
  (EXPORT '(CREATE-POINT))
  (DEFSTRUCT (POINT (:CONSTRUCTOR CREATE-POINT (X Y)) (:CONSTRUCTOR)) X Y))

feature request: exporting the restart name

Restarts are also the important part of API. please:

@export
(restart-bind ...
   )

@export
(restart-case ...
  (name () ...))

and also the `case,ecase, ccase' keys (less priority):

@export
(case (something)
  (key1 ...)
  (key2 ...))

well, I might have to use a keyword for the restart name.

`cl-annot` on SBCL doesn't work

Compilation of cl-project and clack fails. I guess this is due to cl-annot on SBCL and so here's a report.

I use SBCL 1.10, FreeBSD 9.1.

With ABCL, I had no errors.

Code:

(ql:quickload :cl-project)

Backtrace:

The value #<FDEFINITION for SB-IMPL::READ-LIST>
is not of type
  (OR FUNCTION SYMBOL).
   [Condition of type TYPE-ERROR]

Restarts:
 0: [TRY-RECOMPILING] Recompile contrib/annot and try loading it again
 1: [RETRY] Retry loading FASL for #<CL-SOURCE-FILE "cl-syntax-annot" "contrib/annot">.
 2: [ACCEPT] Continue, treating loading FASL for #<CL-SOURCE-FILE "cl-syntax-annot" "contrib/annot"> as having been successful.
 3: [RETRY] Retry ASDF operation.
 4: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the configuration.
 5: [ABORT] Give up on "cl-project"
 --more--

Backtrace:
  0: (SET-MACRO-CHARACTER #\( #<FDEFINITION for SB-IMPL::READ-LIST> NIL #<NAMED-READTABLE CL-ANNOT::SYNTAX {1003BD0AC3}>) [tl,external]
  1: (EDITOR-HINTS.NAMED-READTABLES:MERGE-READTABLES-INTO #<NAMED-READTABLE CL-ANNOT::SYNTAX {1003BD0AC3}> :STANDARD)
  2: ((SB-C::TOP-LEVEL-FORM (LET ((READTABLE (EDITOR-HINTS.NAMED-READTABLES:FIND-READTABLE #1=???))) (COND ((NOT READTABLE) #2=(SETQ READTABLE #1#)) (T #2# (EDITOR-HINTS.NAMED-READTABLES::SIMPLE-STYLE-WARN..
  3: (SB-FASL::LOAD-FASL-GROUP #<SB-SYS:FD-STREAM for "file /usr/home/keno/.cache/common-lisp/sbcl-1.2.8-bsd-x64/usr/home/keno/.quicklisp/dists/quicklisp/software/cl-syntax-20120520-git/contrib/annot.fasl"..
  4: (SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for "file /usr/home/keno/.cache/common-lisp/sbcl-1.2.8-bsd-x64/usr/home/keno/.quicklisp/dists/quicklisp/software/cl-syntax-20120520-git/contrib/annot.fasl" {1..
  5: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /usr/home/keno/.cache/common-lisp/sbcl-1.2.8-bsd-x64/usr/home/keno/.quicklisp/dists/quicklisp/software/cl-syntax-20120520-git/contrib..
  6: (LOAD #P"/usr/home/keno/.cache/common-lisp/sbcl-1.2.8-bsd-x64/usr/home/keno/.quicklisp/dists/quicklisp/software/cl-syntax-20120520-git/contrib/annot.fasl" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T ..
  7: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN UIOP/LISP-BUILD:LOAD*) {1004C7700B}> ("Overwriting already existing readtable ~S." #(#:FINALIZERS-OFF-WARNING :ASDF-FINALIZERS)))
  8: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unavailable argument> #<unavailable argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-syntax-annot" "contrib/annot">)
  9: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS (ASDF/LISP-ACTION:LOAD-OP ASDF/LISP-ACTION:CL-SOURCE-FILE)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-syntax-annot" "contrib/annot"..
 10: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-syntax-annot" "contrib/annot">) [fast-method]
 11: ((:METHOD ASDF/PLAN:PERFORM-PLAN (LIST)) ((#1=#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/SYSTEM:SYSTEM "anaphora">) (#1# . #<ASDF/SYSTEM:SYSTEM "cl-ppcre">) (#1# . #<ASDF/SYSTEM:SYSTEM "cl-emb">) (#1# ...
 12: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
 13: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) ((#1=#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/SYSTEM:SYSTEM "anaphora">) (#1# . #<ASDF/SYSTEM:SYSTEM "cl-ppcre">) (#1# . #<ASDF/SYSTEM:SYSTEM "cl-emb">) (..
 14: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
 15: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {10045DB0F3}> :VERBOSE NIL) [fast-method]
 16: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP :VERBOSE NIL> #<ASDF/SYSTEM:SYSTEM "cl-project"> :VERBOSE NIL) [fast-method]
 17: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP :VERBOSE NIL> #<ASDF/SYSTEM:SYSTEM "cl-project"> :VERBOSE NIL)
 18: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
 19: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP :VERBOSE NIL> #<ASDF/SYSTEM:SYSTEM "cl-project"> :VERBOSE NIL) [fast-method]

@ignore bug

@ignore might fail to insert (declare (ignore ...) at the beginning of the body.

cl-annot should leave :@ alone.

cl-annot comes in the way of using :@ keyword. So it would be good if cl-annot could leave @ in the keyword package alone.

@export-structure on structures with docstrings does not work

export-structure doesn't work on defstructs with docstrings

I've changed the slot-specifiers definition to make it work, but I don't know if there are more things involved:

(defun slot-specifiers (class-definition-form)
"Return class-specifiers of CLASS-DEFINITION-FORM."
(case (first class-definition-form)
(defclass (nth 3 (progn-form-last class-definition-form)))
(defstruct (if (stringp (nth 2 (progn-form-last class-definition-form)))
;; There's a documentation string, fetch the slots after it
(nthcdr 3 (progn-form-last class-definition-form))
;; There's no documentation string, fetch the slots
(nthcdr 2 (progn-form-last class-definition-form))))))

Annotation annotation

Writing annotations will be easier if there is annotation annotation like:

@annotation (:inline t :arity 2)
(defmacro foo (x y) ...)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.