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

Ted Kremenek kremenek at apple.com
Tue Dec 20 14:44:45 PST 2011


How about: -Wambigious-else

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