[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