forked from OSchip/llvm-project
SemaTemplate - silence static analyzer getAs<> null dereference warnings. NFCI.
The static analyzer is warning about potential null dereferences, but we should be able to use castAs<> directly and if not assert will fire for us. llvm-svn: 373827
This commit is contained in:
parent
22b6873195
commit
f4cc3b3e10
|
@ -5872,7 +5872,7 @@ static bool CheckTemplateArgumentIsCompatibleWithParameter(
|
|||
Expr *Arg, QualType ArgType) {
|
||||
bool ObjCLifetimeConversion;
|
||||
if (ParamType->isPointerType() &&
|
||||
!ParamType->getAs<PointerType>()->getPointeeType()->isFunctionType() &&
|
||||
!ParamType->castAs<PointerType>()->getPointeeType()->isFunctionType() &&
|
||||
S.IsQualificationConversion(ArgType, ParamType, false,
|
||||
ObjCLifetimeConversion)) {
|
||||
// For pointer-to-object types, qualification conversions are
|
||||
|
@ -6748,20 +6748,20 @@ ExprResult Sema::CheckTemplateArgument(NonTypeTemplateParmDecl *Param,
|
|||
// overloaded functions (or a pointer to such), the matching
|
||||
// function is selected from the set (13.4).
|
||||
(ParamType->isPointerType() &&
|
||||
ParamType->getAs<PointerType>()->getPointeeType()->isFunctionType()) ||
|
||||
ParamType->castAs<PointerType>()->getPointeeType()->isFunctionType()) ||
|
||||
// -- For a non-type template-parameter of type reference to
|
||||
// function, no conversions apply. If the template-argument
|
||||
// represents a set of overloaded functions, the matching
|
||||
// function is selected from the set (13.4).
|
||||
(ParamType->isReferenceType() &&
|
||||
ParamType->getAs<ReferenceType>()->getPointeeType()->isFunctionType()) ||
|
||||
ParamType->castAs<ReferenceType>()->getPointeeType()->isFunctionType()) ||
|
||||
// -- For a non-type template-parameter of type pointer to
|
||||
// member function, no conversions apply. If the
|
||||
// template-argument represents a set of overloaded member
|
||||
// functions, the matching member function is selected from
|
||||
// the set (13.4).
|
||||
(ParamType->isMemberPointerType() &&
|
||||
ParamType->getAs<MemberPointerType>()->getPointeeType()
|
||||
ParamType->castAs<MemberPointerType>()->getPointeeType()
|
||||
->isFunctionType())) {
|
||||
|
||||
if (Arg->getType() == Context.OverloadTy) {
|
||||
|
|
Loading…
Reference in New Issue