[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bogus warning with defineBarLine

From: David Zelinsky
Subject: bogus warning with defineBarLine
Date: Sun, 29 Jan 2023 23:36:51 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

When `\defineBarLine` is called with first argument having an annotation
and span-bar is `#t`, LilyPond confusingly warns that annotation is only
allowed in first argument.  The pdf output is correct.


% cat file.ly
\version "2.25.0"
\fixed c' {
  \defineBarLine  "|-foo"  #'(#f #f #t)
  a1 \bar "|-foo" a1

% lilypond file
GNU LilyPond 2.25.2 (running Guile 2.2)
Processing `file.ly'
warning: Annotation '|-foo' is allowed in the first argument of a bar line 
definition only.
Interpreting music...
Preprocessing graphical objects...
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...
Converting to `file.pdf'...
Success: compilation successfully completed

The culprit is in definition of `define-bar-line` in `bar-line.scm`:

  ;; #t means copy the mid-line glyph
  (when (eq? eol-glyph #t)
    (set! eol-glyph bar-glyph))
  (when (eq? bol-glyph #t)
    (set! bol-glyph bar-glyph))
  (when (eq? span-glyph #t)
    (set! span-glyph bar-glyph))

  ;; the last argument may not include annotations
  (check-for-annotation span-glyph)

The `set!` expressions should wrap `bar-glyph` in `strip-string-annotation`.

I can upload a patch.

Is there any benefit in adding a regression test?  It compiles
correctly, it's just the warning that is bogus.  Is this detected in
regressing testing?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]