Subject: Re: bug#79257: 31.0.50; flymake's ruby-backend test fails with ruby 3.4.5

From: Dmitry Gutov <[email-masked]>
Date: Mon, 25 Aug 2025 22:49:37 +0300

Hi!

On 24/08/2025 19:35, john muhl wrote:
> The cause is a change in the check output of new Ruby versions
> which include the location of the executable; e.g.
> 
>    # Ruby 3.3.8
>    -:3: warning: statement not reached
>    -:6: syntax error, unexpected end-of-input, expecting `end' or dummy end
> 
>    # Ruby 3.4.5
>    -:3: warning: statement not reached
>    /usr/bin/ruby: -:5: syntax errors found (SyntaxError)
> 
> Here’s a patch that updates the regex to account for it. Tests
> pass with both Ruby 3.3 and 3.4.

Thanks, that works, I've pushed the change to master.

Curiously, in my testing with ruby 3.4.5 the executable name is not 
absolute, just 'ruby: '. That still works with your change.

I wonder if you've managed to find the specific commit in Ruby that did 
that (or bugs.ruby-lang.org entry).
This change log mentions some other changes in the output, but not this: 
https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/

 > -             "^\\(?:.*\\.rb\\|-\\):\\([0-9]+\\): \\(.*\\)$"
 > +             "^\\(?:.*ruby: \\)?\\(?:.*\\.rb\\|-\\):\\([0-9]+\\): 
\\(.*\\)$"

We could also make the first wildcard non-greedy (.*?).

Perhaps put an initial slash before it too, for faster matching, but I'm 
not sure how your variant of the output will look on Windows (perhaps it 
starts with 'c:/').