This commit is the result of a general audit of

the expression parser to locate instances where
dyn_cast<>() and isa<>() are used on types, and
replace them with getAs<>() as appropriate.

The difference is that dyn_cast<>() and isa<>()
are essentially LLVM/Clang's equivalent of RTTI
-- that is, they try to downcast the object and
return NULL if they cannot -- but getAs<>() can
traverse typedefs to perform a semantic cast.

llvm-svn: 146537
This commit is contained in:
Sean Callanan 2011-12-14 01:13:04 +00:00
parent 099fe3fb28
commit fc4f2fb0da
4 changed files with 10 additions and 10 deletions

View File

@ -333,7 +333,7 @@ ASTResultSynthesizer::SynthesizeBodyResult (CompoundStmt *Body,
QualType ptr_qual_type;
if (isa<ObjCObjectType>(expr_qual_type))
if (expr_qual_type->getAs<ObjCObjectType>() != NULL)
ptr_qual_type = Ctx.getObjCObjectPointerType(expr_qual_type);
else
ptr_qual_type = Ctx.getPointerType(expr_qual_type);

View File

@ -220,7 +220,7 @@ ClangASTSource::CompleteType (TagDecl *tag_decl)
if (!opaque_type)
continue;
const TagType *tag_type = dyn_cast<TagType>(QualType::getFromOpaquePtr(opaque_type).getTypePtr());
const TagType *tag_type = QualType::getFromOpaquePtr(opaque_type)->getAs<TagType>();
if (!tag_type)
continue;
@ -258,7 +258,7 @@ ClangASTSource::CompleteType (TagDecl *tag_decl)
if (!opaque_type)
continue;
const TagType *tag_type = dyn_cast<TagType>(QualType::getFromOpaquePtr(opaque_type).getTypePtr());
const TagType *tag_type = QualType::getFromOpaquePtr(opaque_type)->getAs<TagType>();
if (!tag_type)
continue;
@ -677,7 +677,7 @@ ClangASTSource::FindObjCMethodDecls (NameSearchContext &context)
QualType backing_qual_type = QualType::getFromOpaquePtr(backing_type);
const ObjCInterfaceType *backing_interface_type = dyn_cast<ObjCInterfaceType>(backing_qual_type.getTypePtr());
const ObjCInterfaceType *backing_interface_type = backing_qual_type.getTypePtr()->getAs<ObjCInterfaceType>();
if (!backing_interface_type)
continue;
@ -1067,7 +1067,7 @@ NameSearchContext::AddFunDecl (void *type)
// this, we raid the function's FunctionProtoType for types.
QualType qual_type (QualType::getFromOpaquePtr(type));
const FunctionProtoType *func_proto_type = dyn_cast<FunctionProtoType>(qual_type.getTypePtr());
const FunctionProtoType *func_proto_type = qual_type.getTypePtr()->getAs<FunctionProtoType>();
if (func_proto_type)
{
@ -1128,7 +1128,7 @@ NameSearchContext::AddTypeDecl(void *type)
{
QualType qual_type = QualType::getFromOpaquePtr(type);
if (const TagType *tag_type = dyn_cast<clang::TagType>(qual_type))
if (const TagType *tag_type = qual_type->getAs<TagType>())
{
TagDecl *tag_decl = tag_type->getDecl();
@ -1136,7 +1136,7 @@ NameSearchContext::AddTypeDecl(void *type)
return tag_decl;
}
else if (const ObjCObjectType *objc_object_type = dyn_cast<clang::ObjCObjectType>(qual_type))
else if (const ObjCObjectType *objc_object_type = qual_type->getAs<ObjCObjectType>())
{
ObjCInterfaceDecl *interface_decl = objc_object_type->getInterface();

View File

@ -160,7 +160,7 @@ ClangUserExpression::ScanContext(ExecutionContext &exe_ctx, Error &err)
do {
clang::QualType this_type = method_decl->getThisType(decl_context->getParentASTContext());
const clang::PointerType *this_pointer_type = llvm::dyn_cast<clang::PointerType>(this_type.getTypePtr());
const clang::PointerType *this_pointer_type = this_type->getAs<clang::PointerType>();
if (!this_pointer_type)
break;

View File

@ -632,8 +632,8 @@ IRForTarget::CreateResultVariable (llvm::Function &llvm_function)
clang::QualType pointer_qual_type = result_var->getType();
const clang::Type *pointer_type = pointer_qual_type.getTypePtr();
const clang::PointerType *pointer_pointertype = dyn_cast<clang::PointerType>(pointer_type);
const clang::ObjCObjectPointerType *pointer_objcobjpointertype = dyn_cast<clang::ObjCObjectPointerType>(pointer_type);
const clang::PointerType *pointer_pointertype = pointer_type->getAs<clang::PointerType>();
const clang::ObjCObjectPointerType *pointer_objcobjpointertype = pointer_type->getAs<clang::ObjCObjectPointerType>();
if (pointer_pointertype)
{