clang API Documentation

Functions
SemaObjCProperty.cpp File Reference
#include "clang/Sema/SemaInternal.h"
#include "clang/AST/ASTMutationListener.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Lex/Lexer.h"
#include "clang/Sema/Initialization.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SmallString.h"
Include dependency graph for SemaObjCProperty.cpp:

Go to the source code of this file.

Functions

static Qualifiers::ObjCLifetime getImpliedARCOwnership (ObjCPropertyDecl::PropertyAttributeKind attrs, QualType type)
static void checkARCPropertyDecl (Sema &S, ObjCPropertyDecl *property)
 Check the internal consistency of a property declaration.
static unsigned deduceWeakPropertyFromType (Sema &S, QualType T)
static void CheckPropertyAgainstProtocol (Sema &S, ObjCPropertyDecl *Prop, ObjCProtocolDecl *Proto, llvm::SmallPtrSetImpl< ObjCProtocolDecl * > &Known)
 Check this Objective-C property against a property declared in the given protocol.
static
ObjCPropertyDecl::PropertyAttributeKind 
makePropertyAttributesAsWritten (unsigned Attributes)
static bool LocPropertyAttribute (ASTContext &Context, const char *attrName, SourceLocation LParenLoc, SourceLocation &Loc)
static unsigned getOwnershipRule (unsigned attr)
static void checkARCPropertyImpl (Sema &S, SourceLocation propertyImplLoc, ObjCPropertyDecl *property, ObjCIvarDecl *ivar)
static void setImpliedPropertyAttributeForReadOnlyProperty (ObjCPropertyDecl *property, ObjCIvarDecl *ivar)
static void DiagnosePropertyMismatchDeclInProtocols (Sema &S, SourceLocation AtLoc, ObjCInterfaceDecl *ClassDecl, ObjCPropertyDecl *Property)
static void CollectImmediateProperties (ObjCContainerDecl *CDecl, ObjCContainerDecl::PropertyMap &PropMap, ObjCContainerDecl::PropertyMap &SuperPropMap, bool IncludeProtocols=true)
static void CollectSuperClassPropertyImplementations (ObjCInterfaceDecl *CDecl, ObjCInterfaceDecl::PropertyMap &PropMap)
static bool SuperClassImplementsProperty (ObjCInterfaceDecl *IDecl, ObjCPropertyDecl *Prop)
static void DiagnoseUnimplementedAccessor (Sema &S, ObjCInterfaceDecl *PrimaryClass, Selector Method, ObjCImplDecl *IMPDecl, ObjCContainerDecl *CDecl, ObjCCategoryDecl *C, ObjCPropertyDecl *Prop, Sema::SelectorSet &SMap)
static void AddPropertyAttrs (Sema &S, ObjCMethodDecl *PropertyMethod, ObjCPropertyDecl *Property)

Function Documentation

static void AddPropertyAttrs ( Sema S,
ObjCMethodDecl PropertyMethod,
ObjCPropertyDecl Property 
) [static]

AddPropertyAttrs - Propagates attributes from a property to the implicitly-declared getter or setter for that property.

Definition at line 1891 of file SemaObjCProperty.cpp.

References clang::Decl::addAttr(), clang::Decl::attrs(), and clang::Sema::Context.

Referenced by clang::Sema::ProcessPropertyDecl().

static void checkARCPropertyDecl ( Sema S,
ObjCPropertyDecl property 
) [static]
static void checkARCPropertyImpl ( Sema S,
SourceLocation  propertyImplLoc,
ObjCPropertyDecl property,
ObjCIvarDecl ivar 
) [static]
static void CheckPropertyAgainstProtocol ( Sema S,
ObjCPropertyDecl Prop,
ObjCProtocolDecl Proto,
llvm::SmallPtrSetImpl< ObjCProtocolDecl * > &  Known 
) [static]

Check this Objective-C property against a property declared in the given protocol.

Definition at line 117 of file SemaObjCProperty.cpp.

References clang::Sema::DiagnosePropertyMismatch(), clang::NamedDecl::getDeclName(), clang::NamedDecl::getIdentifier(), clang::DeclContext::lookup(), P, and clang::ObjCProtocolDecl::protocols().

Referenced by clang::Sema::ActOnProperty().

static void CollectImmediateProperties ( ObjCContainerDecl CDecl,
ObjCContainerDecl::PropertyMap PropMap,
ObjCContainerDecl::PropertyMap SuperPropMap,
bool  IncludeProtocols = true 
) [static]

CollectImmediateProperties - This routine collects all properties in the class and its conforming protocols; but not those in its super class.

Definition at line 1421 of file SemaObjCProperty.cpp.

References clang::NamedDecl::getIdentifier().

Referenced by clang::Sema::DiagnoseUnimplementedProperties().

static void CollectSuperClassPropertyImplementations ( ObjCInterfaceDecl CDecl,
ObjCInterfaceDecl::PropertyMap &  PropMap 
) [static]

CollectSuperClassPropertyImplementations - This routine collects list of properties to be implemented in super class(s) and also coming from their conforming protocols.

Definition at line 1466 of file SemaObjCProperty.cpp.

References clang::ObjCInterfaceDecl::getSuperClass().

Referenced by clang::Sema::DefaultSynthesizeProperties(), and clang::Sema::DiagnoseUnimplementedProperties().

static unsigned deduceWeakPropertyFromType ( Sema S,
QualType  T 
) [static]
static void DiagnosePropertyMismatchDeclInProtocols ( Sema S,
SourceLocation  AtLoc,
ObjCInterfaceDecl ClassDecl,
ObjCPropertyDecl Property 
) [static]
static void DiagnoseUnimplementedAccessor ( Sema S,
ObjCInterfaceDecl PrimaryClass,
Selector  Method,
ObjCImplDecl IMPDecl,
ObjCContainerDecl CDecl,
ObjCCategoryDecl C,
ObjCPropertyDecl Prop,
Sema::SelectorSet SMap 
) [static]
static unsigned getOwnershipRule ( unsigned  attr) [static]
static bool LocPropertyAttribute ( ASTContext Context,
const char *  attrName,
SourceLocation  LParenLoc,
SourceLocation Loc 
) [static]
static void setImpliedPropertyAttributeForReadOnlyProperty ( ObjCPropertyDecl property,
ObjCIvarDecl ivar 
) [static]

setImpliedPropertyAttributeForReadOnlyProperty - This routine evaludates life-time attributes for a 'readonly' property with no known lifetime of its own, using backing 'ivar's attribute, if any. If no backing 'ivar', property's life-time is assumed 'strong'.

Definition at line 720 of file SemaObjCProperty.cpp.

References getImpliedARCOwnership(), clang::QualType::getObjCLifetime(), clang::ObjCPropertyDecl::getPropertyAttributes(), clang::ValueDecl::getType(), clang::ObjCPropertyDecl::OBJC_PR_strong, clang::ObjCPropertyDecl::OBJC_PR_weak, clang::Qualifiers::OCL_None, clang::Qualifiers::OCL_Strong, and clang::Qualifiers::OCL_Weak.

Referenced by clang::Sema::ActOnPropertyImplDecl().

static bool SuperClassImplementsProperty ( ObjCInterfaceDecl IDecl,
ObjCPropertyDecl Prop 
) [static]