From 7f0060532b77f9f07f95b64e4f1344bf54c8cc8a Mon Sep 17 00:00:00 2001
From: Francois-Rene Rideau <tunes@google.com>
Date: Tue, 14 Apr 2015 02:58:36 -0400
Subject: [PATCH] Demacroify subroutine in parse-process-spec

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

diff --git a/process-spec.lisp b/process-spec.lisp
index e927358..e37bec5 100644
--- a/process-spec.lisp
+++ b/process-spec.lisp
@@ -174,25 +174,23 @@
           (clps-current-argument c) nil)))
 
 (defun parse-process-spec (spec)
-  (macrolet ((make-sequence-instance (spec-type args)
-               `(make-instance
-                 ',spec-type :processes
-                 (loop :for process :in (mapcar 'parse-process-spec ,args)
-                    :nconc (etypecase process
-                             (,spec-type (sequence-processes process))
-                             (sequence-spec (list process))
-                             (command-spec (list process)))))))
+  (labels ((make-sequence-instance (spec-type args)
+             (make-instance spec-type :processes
+              (loop :for process :in (mapcar 'parse-process-spec args)
+                    :nconc (if (typep process spec-type)
+                               (sequence-processes process)
+                               (list process))))))
     (match spec
       (`(pipe ,@args)
-        (make-sequence-instance pipe-spec args))
+        (make-sequence-instance 'pipe-spec args))
       (`(or ,@args)
-        (make-sequence-instance or-spec args))
+        (make-sequence-instance 'or-spec args))
       (`(and ,@args)
-        (make-sequence-instance and-spec args))
+        (make-sequence-instance 'and-spec args))
       (`(progn ,@args)
-        (make-sequence-instance progn-spec args))
+        (make-sequence-instance 'progn-spec args))
       (`(fork ,@args)
-        (make-sequence-instance fork-spec args))
+        (make-sequence-instance 'fork-spec args))
       (`(,_ ,@_)
         (let ((c (make-instance 'command-parse)))
           (dolist (elem spec)
-- 
GitLab