On Wed, Aug 20, 2014 at 6:33 PM, Nikola Smiljanic <[email protected]> wrote: > Are you saying you ran the test case without my change and it didn't crash?
No, I'm saying a test that only ensures the compiler doesn't crash is usually not a very good test. We usually want a program to do something more specific than "does not crash" - and the test should test for that specific behavior, not merely the absence of a crash. > > Just -cc1 -fms-compatibility -fsyntax-only and you should see it. > > > On Thu, Aug 21, 2014 at 11:31 AM, David Blaikie <[email protected]> wrote: >> >> On Wed, Aug 20, 2014 at 5:19 PM, Nikola Smiljanić <[email protected]> >> wrote: >> > Hi rnk, >> > >> > The call to cast crashes because getTemplateDecl returns null for >> > TemplateTemplateParmDecls. >> > >> > http://reviews.llvm.org/D4992 >> > >> > Files: >> > lib/Sema/SemaDecl.cpp >> > test/SemaTemplate/ms-lookup-template-base-classes.cpp >> > >> > Index: lib/Sema/SemaDecl.cpp >> > =================================================================== >> > --- lib/Sema/SemaDecl.cpp >> > +++ lib/Sema/SemaDecl.cpp >> > @@ -150,7 +150,7 @@ >> > if (!TST || !TST->isDependentType()) >> > continue; >> > auto *TD = TST->getTemplateName().getAsTemplateDecl(); >> > - if (!TD) >> > + if (!TD || !TD->getTemplatedDecl()) >> >> Looks like the indentation might've broken here? (or maybe it's just >> misrendering in the email) >> >> > continue; >> > auto *BasePrimaryTemplate = >> > cast<CXXRecordDecl>(TD->getTemplatedDecl()); >> > // FIXME: Allow lookup into non-dependent bases of dependent bases, >> > possibly >> > Index: test/SemaTemplate/ms-lookup-template-base-classes.cpp >> > =================================================================== >> > --- test/SemaTemplate/ms-lookup-template-base-classes.cpp >> > +++ test/SemaTemplate/ms-lookup-template-base-classes.cpp >> > @@ -460,3 +460,19 @@ >> > int x = f<NameFromBase>(); >> > }; >> > } >> > + >> > +namespace PR20716 { >> >> Test cases that just "don't crash" always seem a bit questionable to >> me - is there some behavior this should be testing for? >> >> > +template <class T> >> > +struct A >> > +{ >> > + void foo() {} >> > +}; >> > + >> > +template <template <typename T> class C> >> > +struct B : public C<int> >> > +{ >> > + void bar() { >> > + foo(); >> > + } >> > +}; >> > +} >> > >> > _______________________________________________ >> > cfe-commits mailing list >> > [email protected] >> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> > > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
