LGTM, do you need someone to commit this for you?
On Thu, Dec 18, 2014 at 12:28 AM, Stephan Bergmann <[email protected]> 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 >> <[email protected] <mailto:[email protected]>> 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 <[email protected] >> <mailto:[email protected]>> wrote: >> > ping >> > >> > >> > On 11/25/2014 03:04 PM, Rafael Espíndola wrote: >> >> >> >> ccing Richard. >> >> On 25 November 2014 at 03:38, Stephan Bergmann >> <[email protected] <mailto:[email protected]>> >> >> 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 >> >>>>> >> >>>>> Looks good otherwise. >> >>>> >> >>>> >> >>>> >> >>>> Attached updated patch including test case. >> >>>> >> >>>>> On Thu, Oct 23, 2014 at 12:43 AM, Stephan Bergmann >> <[email protected] <mailto:[email protected]> >> >>>>> <mailto:[email protected] <mailto:[email protected]>>> >> 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. >> > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
