[PATCH] make isScopedEnumerationType look through typedefs
Richard Smith
richard at metafoo.co.uk
Tue Jan 13 16:34:26 PST 2015
Thanks for the patch, committed as r225889.
On Fri, Dec 19, 2014 at 3:25 AM, Stephan Bergmann <sbergman at redhat.com>
wrote:
> On 12/19/2014 06:05 AM, Richard Smith wrote:
>
>> LGTM, do you need someone to commit this for you?
>>
>
> yes, please; I don't have commit rights
>
> On Thu, Dec 18, 2014 at 12:28 AM, Stephan Bergmann <sbergman at redhat.com
>> <mailto:sbergman at redhat.com>> wrote:
>>
>> On 12/17/2014 08:40 PM, Richard Smith wrote:
>>
>> The right way to write this is:
>>
>> - if (const EnumType *ET = dyn_cast<EnumType>(T))
>> + if (const EnumType *ET = T->getAs<EnumType>())
>>
>>
>> updated patch attached
>>
>> On Tue, Dec 16, 2014 at 5:51 AM, Rafael EspĂndola
>> <rafael.espindola at gmail.com <mailto:rafael.espindola at gmail.com>
>> <mailto:rafael.espindola at __gmail.com
>> <mailto:rafael.espindola at gmail.com>>> wrote:
>>
>> LGTM.
>>
>> Clang is not my expertise, but the patch looks clearly
>> correct, fixes
>> a bug and has a testcase.
>>
>>
>> On 16 December 2014 at 04:49, Stephan Bergmann
>> <sbergman at redhat.com <mailto:sbergman at redhat.com>
>> <mailto:sbergman at redhat.com <mailto:sbergman at redhat.com>>>
>> wrote:
>> > ping
>> >
>> >
>> > On 11/25/2014 03:04 PM, Rafael EspĂndola wrote:
>> >>
>> >> ccing Richard.
>> >> On 25 November 2014 at 03:38, Stephan Bergmann
>> <sbergman at redhat.com <mailto:sbergman at redhat.com>
>> <mailto:sbergman at redhat.com <mailto:sbergman at redhat.com>>>
>> >> wrote:
>> >>>
>> >>> ping
>> >>>
>> >>>
>> >>> On 11/10/2014 06:18 PM, Stephan Bergmann wrote:
>> >>>>
>> >>>>
>> >>>> On 10/23/2014 10:41 AM, David Majnemer wrote:
>> >>>>>
>> >>>>>
>> >>>>> Per the developer policy [1], please add a test case
>> to
>> accompany your
>> >>>>> change.
>> >>>>>
>> >>>>> [1]
>> http://llvm.org/docs/__DeveloperPolicy.html#test-__cases
>>
>> <http://llvm.org/docs/DeveloperPolicy.html#test-cases>
>> >>>>>
>> >>>>> Looks good otherwise.
>> >>>>
>> >>>>
>> >>>>
>> >>>> Attached updated patch including test case.
>> >>>>
>> >>>>> On Thu, Oct 23, 2014 at 12:43 AM, Stephan Bergmann
>> <sbergman at redhat.com <mailto:sbergman at redhat.com>
>> <mailto:sbergman at redhat.com <mailto:sbergman at redhat.com>>
>> >>>>> <mailto:sbergman at redhat.com
>> <mailto:sbergman at redhat.com> <mailto:sbergman at redhat.com
>> <mailto:sbergman at redhat.com>>>> wrote:
>> >>>>>
>> >>>>> [ping]
>> >>>>>
>> >>>>>
>> >>>>> On 10/14/2014 04:12 PM, Stephan Bergmann wrote:
>> >>>>>
>> >>>>> $ clang++ --version
>> >>>>> clang version 3.6.0 (trunk 219190)
>> >>>>> Target: x86_64-unknown-linux-gnu
>> >>>>> Thread model: posix
>> >>>>>
>> >>>>> $ cat test.cc
>> >>>>> enum class E { e };
>> >>>>> typedef E E2;
>> >>>>> E2 f1() { return E::e; }
>> >>>>> E f2() { return E::e; }
>> >>>>> bool g1() { return !f1(); }
>> >>>>> bool g2() { return !f2(); }
>> >>>>>
>> >>>>> $ clang++ -std=c++11 -c test.cc
>> >>>>> test.cc:6:20: error: invalid argument
>> type 'E'
>> to unary
>> >>>>> expression
>> >>>>> bool g2() { return !f2(); }
>> >>>>> ^~~~~
>> >>>>> 1 error generated.
>> >>>>>
>> >>>>>
>> >>>>> rightly complains about the invalid
>> contextual
>> conversion to
>> >>>>> bool in g2
>> >>>>> but erroneously not also about the one in g1.
>> >>>>>
>> >>>>> Index: lib/Sema/SemaExpr.cpp
>> >>>>>
>> >>>>>
>>
>> ==============================____==========================
>> ==__==__=======
>> >>>>> --- lib/Sema/SemaExpr.cpp (revision
>> 219190)
>> >>>>> +++ lib/Sema/SemaExpr.cpp (working
>> copy)
>> >>>>> @@ -7414,7 +7414,7 @@
>> >>>>> }
>> >>>>>
>> >>>>> static bool
>> isScopedEnumerationType(____QualType
>> T) {
>> >>>>> - if (const EnumType *ET =
>> dyn_cast<EnumType>(T))
>> >>>>> + if (const EnumType *ET =
>> >>>>>
>> dyn_cast<EnumType>(T.____getCanonicalType()))
>> >>>>>
>> >>>>> return ET->getDecl()->isScoped();
>> >>>>> return false;
>> >>>>> }
>> >>>>>
>> >>>>>
>> >>>>> would fix that for me.
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150113/cbd23a5e/attachment.html>
More information about the cfe-commits
mailing list