Replace getAs with castAs to fix null dereference static analyzer warnings.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 12 Mar 2020 14:56:32 +0000 (14:56 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Thu, 12 Mar 2020 14:56:51 +0000 (14:56 +0000)
Use castAs as we know the cast should succeed (and castAs will assert if it doesn't) and we're dereferencing it directly in the getThisType/getThisObjectType calls.

clang/lib/AST/DeclCXX.cpp

index 3645169..8e9258a 100644 (file)
@@ -2364,17 +2364,15 @@ QualType CXXMethodDecl::getThisType() const {
   // volatile X*, and if the member function is declared const volatile,
   // the type of this is const volatile X*.
   assert(isInstance() && "No 'this' for static methods!");
-
-  return CXXMethodDecl::getThisType(getType()->getAs<FunctionProtoType>(),
+  return CXXMethodDecl::getThisType(getType()->castAs<FunctionProtoType>(),
                                     getParent());
 }
 
 QualType CXXMethodDecl::getThisObjectType() const {
   // Ditto getThisType.
   assert(isInstance() && "No 'this' for static methods!");
-
-  return CXXMethodDecl::getThisObjectType(getType()->getAs<FunctionProtoType>(),
-                                          getParent());
+  return CXXMethodDecl::getThisObjectType(
+      getType()->castAs<FunctionProtoType>(), getParent());
 }
 
 bool CXXMethodDecl::hasInlineBody() const {