From f2d34c3f35b97e8384e368f91ad1f183a493e98f Mon Sep 17 00:00:00 2001
From: Francois-Rene Rideau <fare@tunes.org>
Date: Sun, 21 Mar 2010 03:52:45 -0400
Subject: [PATCH] Allow for explicit override of type in file components.
 Thanks to Juanjo: https://bugs.launchpad.net/asdf/+bug/542222

---
 asdf.lisp | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/asdf.lisp b/asdf.lisp
index f7049710..99807eb1 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -1064,21 +1064,23 @@ to `~a` which is not a directory.~@:>"
 
 ;;; component subclasses
 
-(defclass source-file (component) ())
-
-(defclass cl-source-file (source-file) ())
-(defclass c-source-file (source-file) ())
-(defclass java-source-file (source-file) ())
+(defclass source-file (component)
+  ((type :accessor source-file-explicit-type :initarg :type :initform nil)))
+
+(defclass cl-source-file (source-file)
+  ((type :initform "lisp")))
+(defclass c-source-file (source-file)
+  ((type :initform "c")))
+(defclass java-source-file (source-file)
+  ((type :initform "java")))
 (defclass static-file (source-file) ())
 (defclass doc-file (static-file) ())
-(defclass html-file (doc-file) ())
+(defclass html-file (doc-file)
+  ((type :initform "html")))
 
 (defmethod source-file-type ((component module) (s module)) :directory)
-(defmethod source-file-type ((c cl-source-file) (s module)) "lisp")
-(defmethod source-file-type ((c c-source-file) (s module)) "c")
-(defmethod source-file-type ((c java-source-file) (s module)) "java")
-(defmethod source-file-type ((c html-file) (s module)) "html")
-(defmethod source-file-type ((c static-file) (s module)) nil)
+(defmethod source-file-type ((component source-file) (s module))
+  (source-file-explicit-type component))
 
 (defun merge-component-name-type (name &key type defaults)
   ;; The defaults are required notably because they provide the default host
-- 
GitLab