GNU bug report logs - #70822
flymake mishandles GCC diagnostics in en_US.UTF-8 locale

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Tue, 7 May 2024 17:08:01 UTC

Severity: normal

To reply to this bug, email your comments to 70822 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#70822; Package emacs. (Tue, 07 May 2024 17:08:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Paul Eggert <eggert <at> cs.ucla.edu>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 07 May 2024 17:08:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Emacs bug reports and feature requests <bug-gnu-emacs <at> gnu.org>
Subject: flymake mishandles GCC diagnostics in en_US.UTF-8 locale
Date: Tue, 7 May 2024 10:06:59 -0700
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.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70822; Package emacs. (Wed, 08 May 2024 13:07:01 GMT) Full text and rfc822 format available.

Message #8 received at 70822 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>, Spencer Baugh <sbaugh <at> janestreet.com>
Cc: 70822 <at> debbugs.gnu.org
Subject: Re: bug#70822: flymake mishandles GCC diagnostics in en_US.UTF-8
 locale
Date: Wed, 08 May 2024 16:05:22 +0300
> Date: Tue, 7 May 2024 10:06:59 -0700
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> 
> 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?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70822; Package emacs. (Wed, 08 May 2024 17:11:01 GMT) Full text and rfc822 format available.

Message #11 received at 70822 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>, Spencer Baugh <sbaugh <at> janestreet.com>
Cc: 70822 <at> debbugs.gnu.org
Subject: Re: bug#70822: flymake mishandles GCC diagnostics in en_US.UTF-8
 locale
Date: Wed, 8 May 2024 10:10:00 -0700
[Message part 1 (text/plain, inline)]
> 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?

I don't know. But shouldn't flymake also work when LC_ALL='en_US.UTF-8'? 
That is, instead of trying (but evidently failing) to check only 
LC_ALL='C', shouldn't flymake-tests also check the LC_ALL='en_US.UTF-8' 
case?


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

The contents of test/lisp/progmodes/flymake-tests.log are attached.
[flymake-tests.log (text/x-log, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70822; Package emacs. (Wed, 08 May 2024 18:40:01 GMT) Full text and rfc822 format available.

Message #14 received at 70822 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: 70822 <at> debbugs.gnu.org, sbaugh <at> janestreet.com
Subject: Re: bug#70822: flymake mishandles GCC diagnostics in en_US.UTF-8
 locale
Date: Wed, 08 May 2024 21:38:37 +0300
> Date: Wed, 8 May 2024 10:10:00 -0700
> Cc: 70822 <at> debbugs.gnu.org
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> 
> > 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?
> 
> I don't know. But shouldn't flymake also work when LC_ALL='en_US.UTF-8'? 

It should, but you didn't report a failure in Flymake (which should
use the actual locale), you reported a failure in flymake-tests, which
(for some reason) explicitly sets LC_ALL=C.  If you can show a recipe
for failure in Flymake itself that only happens in a UTF-8 locale,
please do.  Perhaps we will find that both problems are caused by the
same root cause, who knows?

> > And could you perhaps show the error message reported by the failing
> > test(s) in that case?
> 
> The contents of test/lisp/progmodes/flymake-tests.log are attached.

Thanks.




This bug report was last modified 1 year and 93 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.