clang 17.0.0git
|
#include "Transforms.h"
#include "clang/Analysis/RetainSummaryManager.h"
#include "clang/ARCMigrate/ARCMT.h"
#include "clang/ARCMigrate/ARCMTActions.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/NSAPI.h"
#include "clang/AST/ParentMap.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Analysis/DomainSpecific/CocoaConventions.h"
#include "clang/Basic/FileManager.h"
#include "clang/Edit/Commit.h"
#include "clang/Edit/EditedSource.h"
#include "clang/Edit/EditsReceiver.h"
#include "clang/Edit/Rewriters.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/MultiplexConsumer.h"
#include "clang/Lex/PPConditionalDirectiveRecord.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Rewrite/Core/Rewriter.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/YAMLParser.h"
Go to the source code of this file.
Classes | |
struct | llvm::DenseMapInfo< EditEntry > |
Namespaces | |
namespace | llvm |
YAML serialization mapping. | |
Functions | |
static void | append_attr (std::string &PropertyString, const char *attr, bool &LParenAdded) |
static void | MigrateBlockOrFunctionPointerTypeVariable (std::string &PropertyString, const std::string &TypeString, const char *name) |
static const char * | PropertyMemoryAttribute (ASTContext &Context, QualType ArgType) |
static void | rewriteToObjCProperty (const ObjCMethodDecl *Getter, const ObjCMethodDecl *Setter, const NSAPI &NS, edit::Commit &commit, unsigned LengthOfPrefix, bool Atomic, bool UseNsIosOnlyMacro, bool AvailabilityArgsMatch) |
static bool | IsCategoryNameWithDeprecatedSuffix (ObjCContainerDecl *D) |
static bool | ClassImplementsAllMethodsAndProperties (ASTContext &Ctx, const ObjCImplementationDecl *ImpDecl, const ObjCInterfaceDecl *IDecl, ObjCProtocolDecl *Protocol) |
static bool | rewriteToObjCInterfaceDecl (const ObjCInterfaceDecl *IDecl, llvm::SmallVectorImpl< ObjCProtocolDecl * > &ConformingProtocols, const NSAPI &NS, edit::Commit &commit) |
static StringRef | GetUnsignedName (StringRef NSIntegerName) |
static bool | rewriteToNSEnumDecl (const EnumDecl *EnumDcl, const TypedefDecl *TypedefDcl, const NSAPI &NS, edit::Commit &commit, StringRef NSIntegerName, bool NSOptions) |
static void | rewriteToNSMacroDecl (ASTContext &Ctx, const EnumDecl *EnumDcl, const TypedefDecl *TypedefDcl, const NSAPI &NS, edit::Commit &commit, bool IsNSIntegerType) |
static bool | UseNSOptionsMacro (Preprocessor &PP, ASTContext &Ctx, const EnumDecl *EnumDcl) |
static void | ReplaceWithInstancetype (ASTContext &Ctx, const ObjCMigrateASTConsumer &ASTC, ObjCMethodDecl *OM) |
static void | ReplaceWithClasstype (const ObjCMigrateASTConsumer &ASTC, ObjCMethodDecl *OM) |
static bool | TypeIsInnerPointer (QualType T) |
static bool | versionsMatch (const VersionTuple &X, const VersionTuple &Y) |
Check whether the two versions match. | |
static bool | AvailabilityAttrsMatch (Attr *At1, Attr *At2) |
AvailabilityAttrsMatch - This routine checks that if comparing two availability attributes, all their components match. | |
static bool | MatchTwoAttributeLists (const AttrVec &Attrs1, const AttrVec &Attrs2, bool &AvailabilityArgsMatch) |
static bool | AttributesMatch (const Decl *Decl1, const Decl *Decl2, bool &AvailabilityArgsMatch) |
AttributesMatch - This routine checks list of attributes for two decls. | |
static bool | IsValidIdentifier (ASTContext &Ctx, const char *Name) |
static bool | IsVoidStarType (QualType Ty) |
static bool | AuditedType (QualType AT) |
AuditedType - This routine audits the type AT and returns false if it is one of known CF object types or of the "void *" variety. | |
static bool | hasSuperInitCall (const ObjCMethodDecl *MD) |
static std::vector< std::string > | getAllowListFilenames (StringRef DirPath) |
static bool | reportDiag (const Twine &Err, DiagnosticsEngine &Diag) |
static std::string | applyEditsToTemp (FileEntryRef FE, ArrayRef< EditEntry > Edits, FileManager &FileMgr, DiagnosticsEngine &Diag) |
|
static |
Definition at line 385 of file ObjCMT.cpp.
References clang::ast_matchers::attr.
Referenced by rewriteToObjCProperty().
|
static |
Definition at line 2151 of file ObjCMT.cpp.
References clang::edit::EditedSource::applyRewrites(), clang::SrcMgr::C_User, clang::edit::EditedSource::commit(), Diag(), clang::CharSourceRange::getCharRange(), clang::FileEntryRef::getName(), clang::Rewriter::getRewriteBufferFor(), clang::edit::Commit::insert(), OS, clang::edit::Commit::remove(), clang::edit::Commit::replace(), reportDiag(), SM, and clang::RewriteBuffer::write().
Referenced by clang::arcmt::getFileRemappingsFromFileList().
|
static |
AttributesMatch - This routine checks list of attributes for two decls.
It returns false, if there is a mismatch in kind of attributes seen in the decls. It returns true if the two decls have list of same kind of attributes. Furthermore, when there are availability attributes in the two decls, it sets the AvailabilityArgsMatch to false if availability attributes have different versions, etc.
Definition at line 1128 of file ObjCMT.cpp.
References clang::Decl::getAttrs(), clang::Decl::hasAttrs(), clang::ast_matchers::match(), and MatchTwoAttributeLists().
AuditedType - This routine audits the type AT and returns false if it is one of known CF object types or of the "void *" variety.
It returns true if we don't care about the type such as a non-pointer or pointers which have no ownership issues (such as "int *").
Definition at line 1368 of file ObjCMT.cpp.
References clang::Type::isAnyPointerType(), clang::Type::isBlockPointerType(), clang::ento::coreFoundation::isCFObjectRef(), clang::Type::isObjCBuiltinType(), clang::Type::isObjCObjectPointerType(), and IsVoidStarType().
AvailabilityAttrsMatch - This routine checks that if comparing two availability attributes, all their components match.
It returns true, if not dealing with availability or when all components of availability attributes match. This routine is only called when the attributes are of the same kind.
Definition at line 1079 of file ObjCMT.cpp.
References versionsMatch().
Referenced by MatchTwoAttributeLists().
|
static |
Definition at line 600 of file ObjCMT.cpp.
References clang::DeclContextLookupResult::empty(), clang::DeclContextLookupResult::find_first(), clang::ObjCImplDecl::FindPropertyImplDecl(), clang::ASTContext::hasSameType(), clang::DeclContext::lookup(), clang::ast_matchers::match(), clang::ASTContext::ObjCMethodsAreEqual(), clang::ObjCMethodDecl::Optional, clang::ObjCPropertyDecl::Optional, and clang::Property.
|
static |
Definition at line 1986 of file ObjCMT.cpp.
Referenced by clang::arcmt::MigrateSourceAction::CreateASTConsumer().
|
static |
Definition at line 693 of file ObjCMT.cpp.
Referenced by rewriteToNSEnumDecl().
|
static |
Definition at line 1690 of file ObjCMT.cpp.
References clang::ObjCMethodDecl::getBody().
|
static |
Definition at line 564 of file ObjCMT.cpp.
|
static |
Definition at line 1143 of file ObjCMT.cpp.
References clang::IdentifierTable::get(), clang::IdentifierInfo::getTokenID(), clang::ASTContext::Idents, clang::isAsciiIdentifierStart(), and clang::toLowercase().
Definition at line 1354 of file ObjCMT.cpp.
References clang::Type::castAs(), clang::PointerType::getPointeeType(), clang::QualType::getUnqualifiedType(), clang::Type::isPointerType(), IsVoidStarType(), and clang::Type::isVoidType().
Referenced by AuditedType(), and IsVoidStarType().
|
static |
Definition at line 1099 of file ObjCMT.cpp.
References AvailabilityAttrsMatch(), getKind(), and clang::ast_matchers::match().
Referenced by AttributesMatch().
|
static |
Definition at line 397 of file ObjCMT.cpp.
Referenced by rewriteToObjCProperty().
|
static |
Definition at line 428 of file ObjCMT.cpp.
References clang::IdentifierTable::get(), clang::Type::getAs(), clang::QualType::getObjCLifetime(), clang::ASTContext::Idents, clang::Type::isBlockPointerType(), clang::Type::isObjCRetainableType(), clang::ObjCInterfaceDecl::lookupNestedProtocol(), clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, and clang::Qualifiers::OCL_Weak.
Referenced by rewriteToObjCProperty().
|
static |
Definition at line 977 of file ObjCMT.cpp.
References clang::TypeLoc::getBeginLoc(), clang::ObjCMethodDecl::getBeginLoc(), clang::ObjCMethodDecl::getClassInterface(), clang::TypeLoc::getEndLoc(), clang::NamedDecl::getName(), clang::ObjCMethodDecl::getReturnTypeSourceInfo(), and clang::edit::Commit::replace().
|
static |
Definition at line 954 of file ObjCMT.cpp.
References clang::TypeLoc::getBeginLoc(), clang::ObjCMethodDecl::getBeginLoc(), clang::TypeLoc::getEndLoc(), clang::ASTContext::getObjCInstanceType(), clang::ObjCMethodDecl::getReturnType(), clang::ObjCMethodDecl::getReturnTypeSourceInfo(), clang::ObjCMethodDecl::isInstanceMethod(), and clang::edit::Commit::replace().
|
static |
Definition at line 2145 of file ObjCMT.cpp.
References Diag(), and clang::DiagnosticsEngine::Error.
Referenced by applyEditsToTemp().
|
static |
Definition at line 704 of file ObjCMT.cpp.
References clang::arcmt::trans::findLocationAfterSemi(), clang::arcmt::trans::findSemiAfterLocation(), clang::NSAPI::getASTContext(), clang::TypeDecl::getBeginLoc(), clang::Decl::getEndLoc(), clang::NamedDecl::getIdentifier(), clang::SourceLocation::getLocWithOffset(), clang::IdentifierInfo::getName(), GetUnsignedName(), clang::edit::Commit::insertFromRange(), clang::SourceLocation::isValid(), clang::edit::Commit::remove(), and clang::edit::Commit::replace().
|
static |
Definition at line 758 of file ObjCMT.cpp.
References clang::QualType::getAsString(), clang::SourceRange::getBegin(), clang::TypeDecl::getBeginLoc(), clang::TagDecl::getBraceRange(), clang::CharSourceRange::getCharRange(), clang::Decl::getEndLoc(), clang::NamedDecl::getIdentifier(), clang::EnumDecl::getIntegerType(), clang::SourceLocation::getLocWithOffset(), clang::IdentifierInfo::getName(), clang::ASTContext::getPrintingPolicy(), clang::SourceLocation::isInvalid(), clang::QualType::isNull(), clang::edit::Commit::remove(), and clang::edit::Commit::replace().
|
static |
Definition at line 661 of file ObjCMT.cpp.
References clang::ObjCListBase::empty(), clang::Decl::getLocation(), clang::ObjCInterfaceDecl::getReferencedProtocols(), clang::ObjCInterfaceDecl::getSuperClass(), clang::ObjCInterfaceDecl::getSuperClassLoc(), clang::edit::Commit::insertAfterToken(), and clang::ObjCInterfaceDecl::protocol_loc_end().
|
static |
Definition at line 454 of file ObjCMT.cpp.
References append_attr(), clang::Type::getAs(), clang::QualType::getAsString(), clang::NSAPI::getASTContext(), clang::ObjCMethodDecl::getBeginLoc(), clang::ASTContext::getCanonicalType(), clang::CharSourceRange::getCharRange(), clang::ObjCMethodDecl::getDeclaratorEndLoc(), clang::SourceLocation::getLocWithOffset(), clang::NamedDecl::getNameAsString(), clang::Selector::getNameForSlot(), clang::ASTContext::getPrintingPolicy(), clang::ASTContext::getQualifiedType(), clang::QualType::getQualifiers(), clang::ObjCMethodDecl::getReturnType(), clang::ObjCMethodDecl::getSelector(), clang::ObjCMethodDecl::getSelectorStartLoc(), clang::ValueDecl::getType(), clang::QualType::getUnqualifiedType(), clang::Qualifiers::hasObjCLifetime(), clang::Type::isBlockPointerType(), clang::Type::isFunctionPointerType(), clang::NSAPI::isMacroDefined(), clang::Type::isRealType(), clang::isUppercase(), MigrateBlockOrFunctionPointerTypeVariable(), clang::ObjCMethodDecl::param_begin(), PropertyMemoryAttribute(), clang::edit::Commit::remove(), clang::Qualifiers::removeObjCLifetime(), clang::edit::Commit::replace(), clang::PrintingPolicy::SuppressLifetimeQualifiers, clang::PrintingPolicy::SuppressStrongLifetime, and clang::toLowercase().
Definition at line 1045 of file ObjCMT.cpp.
References clang::Type::getAs(), clang::RecordType::getDecl(), clang::PointerType::getPointeeType(), clang::QualType::getUnqualifiedType(), clang::Type::isAnyPointerType(), clang::Type::isBlockPointerType(), clang::ento::coreFoundation::isCFObjectRef(), clang::TagDecl::isCompleteDefinition(), clang::Type::isFunctionPointerType(), clang::Type::isObjCBuiltinType(), clang::Type::isObjCObjectPointerType(), and clang::Type::isPointerType().
|
static |
Definition at line 789 of file ObjCMT.cpp.
References clang::EnumDecl::enumerators(), clang::Token::getLength(), clang::Token::getLiteralData(), clang::Preprocessor::getRawToken(), clang::Expr::IgnoreParenCasts(), clang::Token::isLiteral(), and clang::toLowercase().
|
static |
Check whether the two versions match.
Definition at line 1070 of file ObjCMT.cpp.
References X().
Referenced by AvailabilityAttrsMatch(), and clang::Sema::mergeAvailabilityAttr().