From 2c5965db0da5c75ddd2c483777d86249023276a5 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Tue, 1 Nov 2011 11:57:41 +0100 Subject: [PATCH] input/regression/optional-args-backup.ly: Test backing up of optional argument parts. --- input/regression/optional-args-backup.ly | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 input/regression/optional-args-backup.ly diff --git a/input/regression/optional-args-backup.ly b/input/regression/optional-args-backup.ly new file mode 100644 index 0000000000..35dadf990c --- /dev/null +++ b/input/regression/optional-args-backup.ly @@ -0,0 +1,27 @@ +\version "2.15.17" + +\header{ + texidoc= "Test backup of predicate-based optional music function arguments. + +Unit expressions like @code{3\cm} can't be parsed as optional +arguments since they would require lookahead after @code{3}. However, +if @code{3} gets rejected as an optional argument based on evaluating +its predicate, it should still be able to participate as part of a unit +expression in a following mandatory argument." +} + +\layout { ragged-right = ##t } + +test=#(define-void-function (parser location expect . rest) + (list? (string? "def1") (integer? "def2") (number-pair? "def3") integer?) + (if (not (equal? expect rest)) + (ly:parser-error parser + (format #f "Expected ~a, got ~a.\n" expect rest) + location))) + +twice=2 + +\test #'("a" 3 (3 . 4) 8) "a" 3 3/4 4\twice +\test #'("a" 3 "def3" 8) "a" 3 4\twice +\test #'("a" 4 "def3" 2) "a" 4\twice +\test #'("def1" "def2" "def3" 8) 4\twice -- 2.39.2