2.019.8: fixing yet another bug found by Sergey Katrevich.
authorFrancois-Rene Rideau <tunes@google.com>
Mon, 19 Dec 2011 01:19:16 +0000 (20:19 -0500)
committerFrancois-Rene Rideau <tunes@google.com>
Mon, 19 Dec 2011 01:32:31 +0000 (20:32 -0500)
When specifying a function as output-translation,
we accept either (:function symbol) or
(:function (lambda (pathname absolute-source) ...)
The second case wasn't properly handled.
Minimal testing included.
спасибо Сергей.

Makefile
asdf.asd
asdf.lisp
test/test-utilities.script

index e414d14..c15d20d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -31,6 +31,8 @@ ALLEGROMODERN ?= mlisp
 
 # website, tag, install
 
+default: test
+
 install: archive-copy
 
 archive:
index 8fd0a1e..49873e2 100644 (file)
--- a/asdf.asd
+++ b/asdf.asd
@@ -14,7 +14,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.019.7" ;; to be automatically updated by bin/bump-revision
+  :version "2.019.8" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components
   ((:file "asdf")
index a7fe42f..6c195bf 100644 (file)
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.019.7: Another System Definition Facility.
+;;; This is ASDF 2.019.8: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.019.7")
+         (asdf-version "2.019.8")
          (existing-asdf (find-class 'component nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))
@@ -3457,13 +3457,12 @@ Please remove it from your ASDF configuration"))
 
 (defun* location-function-p (x)
   (and
-   (consp x)
    (length=n-p x 2)
-   (or (and (equal (first x) :function)
-            (typep (second x) 'symbol))
-       (and (equal (first x) 'lambda)
-            (cddr x)
-            (length=n-p (second x) 2)))))
+   (eq (car x) :function)
+   (or (symbolp (cadr x))
+       (and (consp (cadr x))
+            (eq (caadr x) 'lambda)
+            (length=n-p (cadadr x) 2)))))
 
 (defun* validate-output-translations-directive (directive)
   (or (member directive '(:enable-user-cache :disable-cache nil))
index 30197ef..b4ebe3c 100644 (file)
  (not (asdf::version-satisfies (asdf:asdf-version) "666")))
 (assert
   (equal (asdf::split-absolute-pathnames "/foo:/bar" "baz") '("/foo" "/bar")))
+(assert (equal (mapcar 'location-function-p
+                       '((:function f)
+                         (:function (lambda (path absolute-source)
+                                      (declare (ignore absolute-source))
+                                      path))
+                         (function previous-isnt-keyword)
+                         (:function f too many arguments)
+                         (:function (:lambda isnt lambda))
+                         (:function (lambda (too many args) blah))))
+               '(t t nil nil nil nil)))
 )