[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