GNU bug report logs - #72695
CC Mode 5.35.2 (C++//l); c++-mode misindents 'if constexpr' inside lambdas

Previous Next

Package: cc-mode;

Reported by: Arsen Arsenović <arsen <at> aarsen.me>

Date: Sun, 18 Aug 2024 09:52:02 UTC

Severity: normal

Done: Alan Mackenzie <acm <at> muc.de>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Arsen Arsenović <arsen <at> aarsen.me>
To: Alan Mackenzie <acm <at> muc.de>
Cc: 72695 <at> debbugs.gnu.org
Subject: bug#72695: CC Mode 5.35.2 (C++//l); c++-mode misindents 'if constexpr' inside lambdas
Date: Sat, 28 Sep 2024 01:24:52 +0200
[Message part 1 (text/plain, inline)]
Hi Alan,

Alan Mackenzie <acm <at> muc.de> writes:

> So, can I close bug#72695 now?

Ah, excuse me.  Yes, I do believe so.

>> I'm not sure this is a bug but it is something I noticed by accident:
>
>>       (std::visit
>>        ([] <typename T>
>>        	(const T& data)
>> 	{
>>         }));
>
>> ... the { is not an inline-open, but an arglist-cont-nonempty (though,
>> to be clear, the body is indented okay; I've elided it from the example
>> above for that reason).
>
> That is a bug, yes, but a different bug.  Could I ask you to raise a new
> Emacs bug report for it, please?

I can do so tomorrow - getting drowsy at this point.

> I think it will require some effort to solve, since it involves "function
> type" constructs inside parentheses, which I think was something new to
> CC Mode with C++20 (but I'm not sure).  Rather than just relying on the
> context of the outer (, c-guess-basic-syntax will have to examine the
> contents of (...) to get better analysis.

Hmm, I think this was here in 11 also (and perhaps before, due to the
GNU statement expression extension).

>> Same goes for the (const T& data), which doesn't get indented the same
>> as a 'standalone' lambda, but it does indent the same as one saved into
>> a variable:
>
>>   []
>>     ()
>>   {
>>   };
>>   auto x =
>>     []
>>     ()
>>     {
>>     };
>>   auto x =
>>     ([]
>>      ()
>>     {
>>     });
>
>> I do not know whether this is correct.
>
> Neither do I, this late at night.  ;-)  I'll have a look at all these
> examples tomorrow.

:-)

Thanks.

I will file a bug with these tomorrow.

Have a lovely evening!
-- 
Arsen Arsenović
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 294 days ago.

Previous Next


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