Subject: bug#70822: flymake mishandles GCC diagnostics in en_US.UTF-8 locale

From: Eli Zaretskii <[email-masked]>
Date: Wed, 08 May 2024 16:05:22 +0300

> Date: Tue, 7 May 2024 10:06:59 -0700
> From: Paul Eggert <[email-masked]>
> 
> In the en_US.UTF-8 locale on Fedora 40, (GCC) 14.0.1 20240411 (Red Hat 
> 14.0.1-0) uses curved single quotes ‘like this’. This causes Emacs ‘make 
> check’ to fail in the flymake tests.
> 
> For example, in the C locale 'gcc 
> test/lisp/progmodes/flymake-resources/some-problems.h' outputs this:
> 
>    test/lisp/progmodes/flymake-resources/some-problems.h:3:1: warning: 
> data definition has no type or storage class
>        3 | strange;
>          | ^~~~~~~
>    test/lisp/progmodes/flymake-resources/some-problems.h:3:1: warning: 
> type defaults to 'int' in declaration of 'strange' [-Wimplicit-int]
>    test/lisp/progmodes/flymake-resources/some-problems.h:7:1: error: 
> unknown type name 'sint'; did you mean 'int'?
>        7 | sint main();
>          | ^~~~
>          | int
> 
> whereas in the en_US.UTF-8 locale the same command outputs this instead:
> 
>    test/lisp/progmodes/flymake-resources/some-problems.h:3:1: warning: 
> data definition has no type or storage class
>        3 | strange;
>          | ^~~~~~~
>    test/lisp/progmodes/flymake-resources/some-problems.h:3:1: error: 
> type defaults to ‘int’ in declaration of ‘strange’ [-Wimplicit-int]
>    test/lisp/progmodes/flymake-resources/some-problems.h:7:1: error: 
> unknown type name ‘sint’; did you mean ‘int’?
>        7 | sint main();
>          | ^~~~
>          | int
> 
> and flymake mishandles the latter set of diagnostics.

AFAICT, flymake-tests.el injects LC_ALL=C into process-environment (in
flymake-tests--call-with-fixture called from
flymake-tests--with-flymake), so why doesn't that affect the locale
under which the test runs?

And could you perhaps show the error message reported by the failing
test(s) in that case?