]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4421/2: Factor out music-function-call-error
authorDavid Kastrup <dak@gnu.org>
Mon, 25 May 2015 12:08:34 +0000 (14:08 +0200)
committerDavid Kastrup <dak@gnu.org>
Tue, 9 Jun 2015 13:55:30 +0000 (15:55 +0200)
scm/ly-syntax-constructors.scm

index 5d45ea523cfbce43aea3348564135d1c83f565f3..fb52465ba5ceb8ea170205b6a6fb60b48ea93e6c 100644 (file)
        (set! (ly:music-property m 'origin) location)
        m)))
 
+(define (music-function-call-error parser loc fun m)
+  (let* ((sig (ly:music-function-signature fun))
+         (pred (if (pair? (car sig)) (caar sig) (car sig))))
+    (ly:parser-error parser
+                     (format #f (_ "~a function cannot return ~a")
+                             (type-name pred)
+                             (value->lily-string m parser))
+                     loc)
+    (and (pair? (car sig)) (cdar sig))))
+
 ;; Music function: Apply function and check return value.
 ;; args are in reverse order, rest may specify additional ones
 ;;
           (if (ly:music? m)
               (set! (ly:music-property m 'origin) loc))
           m)
-        (begin
-          (if good
-              (ly:parser-error parser
-                               (format #f (_ "~a function cannot return ~a")
-                                       (type-name pred)
-                                       (value->lily-string m parser))
-                               loc))
-          (and (pair? (car sig)) (cdar sig))))))
+        (if good
+            (music-function-call-error parser loc fun m)
+            (and (pair? (car sig)) (cdar sig))))))
 
 (define-ly-syntax (argument-error parser location n pred arg)
   (ly:parser-error