[cfe-commits] [patch] Add -Wdangling-else-parentheses

Matt Beaumont-Gay matthewbg at google.com
Tue Dec 20 14:45:36 PST 2011


On Tue, Dec 20, 2011 at 14:44, Ted Kremenek <kremenek at apple.com> wrote:
> How about: -Wambigious-else

Preferably spelled "ambiguous" ;)

>
> On Dec 20, 2011, at 2:38 PM, Matt Beaumont-Gay wrote:
>
>> On Tue, Dec 20, 2011 at 14:34, Eli Friedman <eli.friedman at gmail.com> wrote:
>>> On Tue, Dec 20, 2011 at 1:36 PM, Nico Weber <thakis at chromium.org> wrote:
>>>> Hi,
>>>>
>>>> the attached patch implements a warning for dangling elses, like
>>>> described at http://drdobbs.com/blogs/cpp/231602010 and as requested
>>>> in http://llvm.org/pr11609. The warning fires 0 times for chromium and
>>>> webkit, and it seems to catch a superset of what gcc's -Wparentheses
>>>> catches.
>>>>
>>>> Examples (see the test case for more):
>>>>
>>>> This warns:
>>>> $ cat test.cc
>>>> void f() {}
>>>>
>>>> int main() {
>>>>  if (false)
>>>>    if (false)
>>>>      return 0;
>>>>  else
>>>>    return 1;
>>>> }
>>>> $ Release+Asserts/bin/clang -c test.cc
>>>> test.cc:7:3: warning: add explicit braces to avoid dangling else
>>>> [-Wdangling-else-parentheses]
>>>>  else
>>>>  ^
>>>> 1 warning generated.
>>>>
>>>>
>>>> These don't:
>>>> $ cat test.cc
>>>> void f() {}
>>>>
>>>> int main() {
>>>>  if (false) {
>>>>    if (false)
>>>>      return 0;
>>>>  } else
>>>>    return 1;
>>>> }
>>>> $ Release+Asserts/bin/clang -c test.cc
>>>> $ cat test.cc
>>>> void f() {}
>>>>
>>>> int main() {
>>>>  if (false)
>>>>    if (false) {
>>>>      return 0;
>>>>    } else
>>>>      return 1;
>>>> }
>>>
>>> Why exactly do we not want to warn for the following?
>>>
>>> int main() {
>>>  if (false)
>>>    if (false) {
>>>      return 0;
>>>    }
>>>  else
>>>    return 1;
>>> }
>>>
>>> Why is the flag called "Wdangling-else-parentheses"?  What do
>>> parentheses have to do with this warning?
>>
>> In GCC, this warning falls into -Wparentheses.
>>
>> I'm not super thrilled about the dangling-else-parentheses name
>> either; I'll try to come up with a constructive suggestion.
>>
>> -Matt
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>




More information about the cfe-commits mailing list