[armedbear-devel] ASDF: Cannot handle the special form EXTENSIONS:TRULY-THE

Alessio Stalla alessiostalla at gmail.com
Wed Nov 30 15:41:41 UTC 2011


On Wed, Nov 30, 2011 at 4:34 PM, Blake McBride <blake at mcbride.name> wrote:
> On Wed, Nov 30, 2011 at 9:13 AM, Alessio Stalla <alessiostalla at gmail.com> wrote:
>> On Wed, Nov 30, 2011 at 3:30 PM, Blake McBride <blake at mcbride.name> wrote:
>>> BTW:
>>>
>>> SBCL works
>>> CLISP fails with MACROLET error
>>> CMUCL works
>>> ECL works
>>
>> To me it seems more like a Screamer error than an ASDF error. Probably
>> Screamer's code walker cannot handle some ABCL-specific
>> macroexpansion.
>>
>> Alessio
>
>
> I don't agree.
>
> blakes-mac:ff blake$ rm -rf screamer/
> blakes-mac:ff blake$ !git
> git clone git://github.com/nikodemus/screamer.git
> Cloning into screamer...
> remote: Counting objects: 1094, done.
> remote: Compressing objects: 100% (436/436), done.
> remote: Total 1094 (delta 781), reused 959 (delta 650)
> Receiving objects: 100% (1094/1094), 8.22 MiB | 670 KiB/s, done.
> Resolving deltas: 100% (781/781), done.
> blakes-mac:ff blake$ cd screamer/
> blakes-mac:screamer blake$ find . -type f -exec grep -Hi truly-the \{\} \;
> blakes-mac:screamer blake$ cd ~/Backup/abcl.svn
> blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi truly-the \{\} \;
> ./doc/manual/.svn/text-base/extensions.tex.svn-base:\label{EXTENSIONS:TRULY-THE}
> ./doc/manual/.svn/text-base/extensions.tex.svn-base:\index{TRULY-THE}
> ./doc/manual/.svn/text-base/extensions.tex.svn-base:--- Special
> Operator: \textbf{truly-the} [\textbf{extensions}] \textit{}
> ./doc/manual/extensions.tex:\label{EXTENSIONS:TRULY-THE}
> ./doc/manual/extensions.tex:\index{TRULY-THE}
> ./doc/manual/extensions.tex:--- Special Operator: \textbf{truly-the}
> [\textbf{extensions}] \textit{}
> ./src/org/armedbear/lisp/.svn/text-base/boot.lisp.svn-base:  (list
> 'car (list 'truly-the 'cons x)))
> ./src/org/armedbear/lisp/.svn/text-base/boot.lisp.svn-base:  (list
> 'cdr (list 'truly-the 'cons x)))
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base:(defun
> p1-truly-the (form)
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base:
>                  'TRULY-THE
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base:
> (list 'TRULY-THE (%cadr form) (p1 (%caddr form))))
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base:
>                (TRULY-THE            p1-truly-the)
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
>               ((memq op '(THE TRULY-THE))
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
> (cond ((and lambda-name (symbolp lambda-name) (symbol-package
> (truly-the symbol lambda-name)))
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
>       (emit 'ldc (pool-string (symbol-name (truly-the symbol
> lambda-name))))
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
>       (emit 'ldc (pool-string (package-name (symbol-package
> (truly-the symbol lambda-name)))))
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
>                  (eq (symbol-package (truly-the symbol sym))
> +cl-package+)
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
>               ((THE TRULY-THE)
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:(defun
> p2-truly-the (form target representation)
> ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:
> (install-p2-handler 'truly-the           'p2-truly-the)
> ./src/org/armedbear/lisp/.svn/text-base/concatenate.lisp.svn-base:
>         (setf (schar result i) (char (truly-the string seq) j))
> ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base:
>        (make-structure (truly-the symbol ',*dd-name*) , at values))))
> ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base:
>        (%make-structure (truly-the symbol ',*dd-name*) (list
> , at values))))))))
> ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base:
>              (make-structure (truly-the symbol ',*dd-name*)
> , at values))))
> ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base:
>              (%make-structure (truly-the symbol ',*dd-name*) (list
> , at values)))))))))))
> ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base:
>        `(aref (truly-the ,',*dd-type* ,instance) ,,index))))
> ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base:
>        `(aset (truly-the ,',*dd-type* ,instance) ,,index ,value))))
> ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base:
>      (let ((,sequence (ext:truly-the list ,sequence)))
> ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base:
>                  (let ((,sequence (ext:truly-the vector ,sequence)))
> ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base:
>            `((let ((,sequence (ext:truly-the vector ,sequence)))
> ./src/org/armedbear/lisp/.svn/text-base/Extensions.java.svn-base:  //
> ### truly-the value-type form => result*
> ./src/org/armedbear/lisp/.svn/text-base/Extensions.java.svn-base:
> super("truly-the", PACKAGE_EXT, true, "type value");
> ./src/org/armedbear/lisp/.svn/text-base/macros.lisp.svn-base:  `(car
> (truly-the cons ,x)))
> ./src/org/armedbear/lisp/.svn/text-base/macros.lisp.svn-base:  `(cdr
> (truly-the cons ,x)))
> ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base:
>     (setf new-form (list 'TRULY-THE result-type new-form)))))
> ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base:(defun
> precompile-truly-the (form)
> ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base:
> (list 'TRULY-THE
> ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base:
>             (TRULY-THE            precompile-truly-the)
> ./src/org/armedbear/lisp/boot.lisp:  (list 'car (list 'truly-the 'cons x)))
> ./src/org/armedbear/lisp/boot.lisp:  (list 'cdr (list 'truly-the 'cons x)))
> ./src/org/armedbear/lisp/compiler-pass1.lisp:(defun p1-truly-the (form)
> ./src/org/armedbear/lisp/compiler-pass1.lisp:                    'TRULY-THE
> ./src/org/armedbear/lisp/compiler-pass1.lisp:  (list 'TRULY-THE (%cadr
> form) (p1 (%caddr form))))
> ./src/org/armedbear/lisp/compiler-pass1.lisp:
> (TRULY-THE            p1-truly-the)
> ./src/org/armedbear/lisp/compiler-pass2.lisp:                 ((memq
> op '(THE TRULY-THE))
> ./src/org/armedbear/lisp/compiler-pass2.lisp:  (cond ((and lambda-name
> (symbolp lambda-name) (symbol-package (truly-the symbol lambda-name)))
> ./src/org/armedbear/lisp/compiler-pass2.lisp:         (emit 'ldc
> (pool-string (symbol-name (truly-the symbol lambda-name))))
> ./src/org/armedbear/lisp/compiler-pass2.lisp:         (emit 'ldc
> (pool-string (package-name (symbol-package (truly-the symbol
> lambda-name)))))
> ./src/org/armedbear/lisp/compiler-pass2.lisp:                    (eq
> (symbol-package (truly-the symbol sym)) +cl-package+)
> ./src/org/armedbear/lisp/compiler-pass2.lisp:                 ((THE TRULY-THE)
> ./src/org/armedbear/lisp/compiler-pass2.lisp:(defun p2-truly-the (form
> target representation)
> ./src/org/armedbear/lisp/compiler-pass2.lisp:  (install-p2-handler
> 'truly-the           'p2-truly-the)
> ./src/org/armedbear/lisp/concatenate.lisp:              (setf (schar
> result i) (char (truly-the string seq) j))
> ./src/org/armedbear/lisp/defstruct.lisp:               (make-structure
> (truly-the symbol ',*dd-name*) , at values))))
> ./src/org/armedbear/lisp/defstruct.lisp:
> (%make-structure (truly-the symbol ',*dd-name*) (list , at values))))))))
> ./src/org/armedbear/lisp/defstruct.lisp:
> (make-structure (truly-the symbol ',*dd-name*) , at values))))
> ./src/org/armedbear/lisp/defstruct.lisp:
> (%make-structure (truly-the symbol ',*dd-name*) (list
> , at values)))))))))))
> ./src/org/armedbear/lisp/defstruct.lisp:               `(aref
> (truly-the ,',*dd-type* ,instance) ,,index))))
> ./src/org/armedbear/lisp/defstruct.lisp:               `(aset
> (truly-the ,',*dd-type* ,instance) ,,index ,value))))
> ./src/org/armedbear/lisp/extensible-sequences-base.lisp:       (let
> ((,sequence (ext:truly-the list ,sequence)))
> ./src/org/armedbear/lisp/extensible-sequences-base.lisp:
>    (let ((,sequence (ext:truly-the vector ,sequence)))
> ./src/org/armedbear/lisp/extensible-sequences-base.lisp:
> `((let ((,sequence (ext:truly-the vector ,sequence)))
> ./src/org/armedbear/lisp/Extensions.java:  // ### truly-the value-type
> form => result*
> ./src/org/armedbear/lisp/Extensions.java:      super("truly-the",
> PACKAGE_EXT, true, "type value");
> ./src/org/armedbear/lisp/macros.lisp:  `(car (truly-the cons ,x)))
> ./src/org/armedbear/lisp/macros.lisp:  `(cdr (truly-the cons ,x)))
> ./src/org/armedbear/lisp/precompiler.lisp:          (setf new-form
> (list 'TRULY-THE result-type new-form)))))
> ./src/org/armedbear/lisp/precompiler.lisp:(defun precompile-truly-the (form)
> ./src/org/armedbear/lisp/precompiler.lisp:  (list 'TRULY-THE
> ./src/org/armedbear/lisp/precompiler.lisp:                  (TRULY-THE
>           precompile-truly-the)
> blakes-mac:abcl.svn blake$

I don't agree :)
I believe your transcript justifies my claim: Screamer does not know
about ABCL's truly-the. Somehow it gets in contact with one such form
and barfs. Try grepping "Cannot (currently) handle the special form"
in Screamer (I can't right now or I'd do it myself).

A.




More information about the armedbear-devel mailing list