--- /dev/null
+\version "2.19.4"
+
+\header {
+ texidoc = "Time signature changes in midmeasure generate warnings,
+except in an anacrusis or when @code{ignoreBarChecks} is true.
+@code{measurePosition} is reset to 0, so a full measure follows, regardless
+of the original position.
+
+This example should end at bar 3, with no barline before the 2/4."
+}
+
+#(ly:expect-warning (_ "\\time in mid-measure at 1/4"))
+
+\score {
+ \relative {
+ \override Score.BarNumber.break-visibility = #all-visible
+ \partial 8 \time 2/4
+ a'8 | d4
+ \time 6/8 \partial 4.
+ cis8 b a | g4. \barNumberCheck 2
+ \set Timing.ignoreBarChecks = ##t
+ \time 12/8
+ fis4. e d
+ \time 2/4
+ \set Timing.ignoreBarChecks = ##f
+ a'2 | \barNumberCheck 3
+ }
+}
structure))
(beaming-exception
(beam-exceptions fraction time-signature-settings))
- (new-measure-length (ly:make-moment num den)))
+ (new-measure-length (ly:make-moment num den))
+ (pos (ly:context-property context 'measurePosition)))
+ ;;\time is OK at a negative measurePosition (after \partial),
+ ;;but at a positive position it's probably a mistake, so warn
+ ;;(like a barcheck) and reset it to 0 to prevent errors.
+ (if (> (ly:moment-main pos) 0)
+ (begin
+ (if (not (ly:context-property context 'ignoreBarChecks #f))
+ (ly:music-warning music
+ (_ "\\time in mid-measure at ~A")
+ (ly:moment-main pos)))
+ (ly:context-set-property!
+ context 'measurePosition (ly:make-moment 0))))
(ly:context-set-property!
context 'timeSignatureFraction fraction)
(ly:context-set-property!