[armedbear-ticket] [armedbear] #61: Compilation of THE with macros
#61: Compilation of THE with macros ----------------------+----------------------------------------------------- Reporter: mevenson | Owner: ehuelsmann Type: defect | Status: new Priority: major | Milestone: unscheduled Component: compiler | Version: 1.0 Keywords: | ----------------------+----------------------------------------------------- As reported in http://article.gmane.org/gmane.lisp.armedbear.devel/152 by Eric Marsden, the recent work on THE forms has broken the compilation of THE forms involving macros as follows: #| COMPILE-FILE for this file fails with [svn r12114]. |# (defconstant +foo-OK+ (the (integer 0 10) 5)) (deftype foo () '(integer 0 10)) (defmacro assemble-foo (x) `(the foo ,x)) (defconstant +foo+ (assemble-foo 6)) -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/61> armedbear <http://common-lisp.net/project/armedbear> armedbear
#61: Compilation of THE with macros -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: ehuelsmann Type: defect | Status: new Priority: major | Milestone: unscheduled Component: compiler | Version: 1.0 Resolution: | Keywords: -----------------------+---------------------------------------------------- Comment(by mevenson): This has nothing to do with macros (at least not directly), but rather to the non-checking of DEFTYPEd types. This is due to use of the Java typep() which for FIXNUMs never uses the Lisp TYPEP to check things. -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/61#comment:1> armedbear <http://common-lisp.net/project/armedbear> armedbear
#61: Compilation of THE with macros -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: ehuelsmann Type: defect | Status: new Priority: major | Milestone: unscheduled Component: compiler | Version: 1.0 Resolution: | Keywords: -----------------------+---------------------------------------------------- Comment(by mevenson): Fix in place with r12119. Before closing, we should consider whether to move the thunk from the Java-side typep() to the Lisp-side TYPEP up to the end of LispObject.typep(). This makes sense to me, but I would like to have second opinions. We should also add the tests for this case. -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/61#comment:2> armedbear <http://common-lisp.net/project/armedbear> armedbear
#61: Compilation of THE with DEFTYPE -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: ehuelsmann Type: defect | Status: closed Priority: major | Milestone: unscheduled Component: compiler | Version: 1.0 Resolution: fixed | Keywords: -----------------------+---------------------------------------------------- Changes (by mevenson): * status: new => closed * resolution: => fixed Comment: Erik fixed (and reverted r12119) with r12124 by punting on the verification of the type of a DEFTYPEd form. He comments in (armedbear-devel) {{{ I must say that I intentionally did not use TYPEP because of 2 reasons: 1. It's not quite clear when it becomes available to the interpreter while I wanted type validation from the start 2. It will expand all types, but some Lisp types take a lot of time to verify so, I choose the same policy as the compiler under *safety* settings lower than 3 }}} My proposed further solution (call Lisp TYPEP at the end of the Java typep() override chain) would create a recursive dependency. We close this ticket, by noting that ABCL's THE special operator is a bit better than before, but won't verify all types (this is allowed by the ANSI specification). -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/61#comment:3> armedbear <http://common-lisp.net/project/armedbear> armedbear
#61: Compilation of THE with DEFTYPE -----------------------+---------------------------------------------------- Reporter: mevenson | Owner: ehuelsmann Type: defect | Status: closed Priority: major | Milestone: 0.22 Component: compiler | Version: 1.0 Resolution: fixed | Keywords: -----------------------+---------------------------------------------------- Changes (by ehuelsmann): * milestone: unscheduled => 0.22 Comment: closed is not 'unscheduled'; moving to the most recently closed milestone. -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/61#comment:4> armedbear <http://common-lisp.net/project/armedbear> armedbear
participants (1)
-
armedbear