Klocwork static code analysis exposed this bug: Pointer 'Constraint' returned from call to function 'cast_or_null<clang::ConceptSpecializationExpr,clang::Expr>' may be NULL and will be dereferenced in the statement following it Replace 'cast_or_null' with 'cast' so that the latter can assert when it encounters a NULL
Thanks for the cleanup! Btw, it's helpful if you add more context to the patch when generating the diff. I typically use git diff -U9999 when generating a diff as that gives plenty of context for the patch review within Phabricator.
If we're going to be touching this code, there's more suspect code here that needs to be cleaned up a bit. Directly above this is:
const TypeConstraint *TC = cast<TemplateTypeParmDecl>(TPL->getParam(0))->getTypeConstraint(); assert(TC && "TPL must have a template type parameter with a type constraint");
That assertion can be removed entirely -- if the cast<> fails, it doesn't return null, it asserts.