It is always good to insist on an example! Attached file shows the un-patched wisent-production-bounds working properly.
So it's my mistake. I'm not using the semantic lexer, and my lexer is returning the wrong structure. I thought I had gotten it right, but apparently not.
Sorry for the noise.
wisent-production-bounds (in lisp/semantic/wisent/wisent.el) computes
the value for the $regioni variables in semantic actions when the region
covers a non-terminal.
It assumes regions are a simple cons (first . last), but the rest of the
wisent parser represents regions as a nested list ((first last)).
This code fixes that:
(defsubst wisent-production-bounds (stack i j...