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

Ted Kremenek kremenek at apple.com
Tue Dec 20 15:28:13 PST 2011


Indeed!

On Dec 20, 2011, at 2:45 PM, Matt Beaumont-Gay wrote:

> 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