On 06/08/2017 12:19 PM, Marek Polacek wrote:
> On Thu, Jun 08, 2017 at 12:01:03PM +0100, Pedro Alves wrote:
>> On 06/08/2017 11:29 AM, Marek Polacek wrote:
>>> On Wed, Jun 07, 2017 at 08:02:42PM +0100, Pedro Alves wrote:
>>>> Hi Marek,
>>>>
>>>> Nice warning! Just to confirm, would the patch warn with code like:
>>>
>>> Thanks. BTW, if you (or anyone) could come up with a better name,
>>> I'm all ears.
>>
>> AFAICS, the warning's intent is catching the case of a
>> a macro expanding to multiple (top level) statements, not lines.
>
> True. I felt that it was implicitly understood what's meant by that,
> but I'll change that. Martin pointed this out, too.
I don't think it's implicit, because it could raise questions, like:
>> +Wmultiline-expansion
>> +C ObjC C++ ObjC++ Var(warn_multiline_expansion) Warning LangEnabledBy(C
>> ObjC C++ ObjC++,Wall)
>> +Warn about macros expanding to multiple statements in a body of a
>> conditional such as if, else, while, or for.
"
Hmm, the description doesn't actually describe what is
meant by "multiple lines". Does "multiline" here mean that
the warning triggers with:
#define FOO() \
foo1(); \
foo2()
but not
#define FOO() foo1(); foo2()
?
"
It's perhaps obvious to seasoned hackers that that's not the
intention, but not all users are experts.
So a general rule I try to follow (in GDB) is: make sure that the
description of an option matches the option's name.
I.e., if the words used to name the option name don't appear in the
option's description, then that's a good indication something
is off and is bound to confuse someone.
>>
>> So it'd seem clearer to me if the warning was named around
>> "-Wmulti-statement-something" instead of "-Wmultiline-something"?
>>
>> -Wmulti-statement-expansion
>> -Wmulti-statement-macros
>> -Wmulti-statement-macro
>> -Wmulti-statement-macro-expansion
>
> I think I'll go with -Wmultistatement-expansion (without the dash).
Fine with me, FWIW.
> I'll post a new version with the warning renamed and the new test added.
Great, thanks much!
Thanks,
Pedro Alves