clang  12.0.0git
Functions
SemaAvailability.cpp File Reference
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Basic/DiagnosticSema.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Sema/DelayedDiagnostic.h"
#include "clang/Sema/ScopeInfo.h"
#include "clang/Sema/Sema.h"
Include dependency graph for SemaAvailability.cpp:

Go to the source code of this file.

Functions

static const AvailabilityAttr * getAttrForPlatform (ASTContext &Context, const Decl *D)
 
static std::pair< AvailabilityResult, const NamedDecl * > ShouldDiagnoseAvailabilityOfDecl (Sema &S, const NamedDecl *D, std::string *Message, ObjCInterfaceDecl *ClassReceiver)
 The diagnostic we should emit for D, and the declaration that originated it, or AR_Available. More...
 
static bool ShouldDiagnoseAvailabilityInContext (Sema &S, AvailabilityResult K, VersionTuple DeclVersion, Decl *Ctx, const NamedDecl *OffendingDecl)
 whether we should emit a diagnostic for K and DeclVersion in the context of Ctx. More...
 
static bool shouldDiagnoseAvailabilityByDefault (const ASTContext &Context, const VersionTuple &DeploymentVersion, const VersionTuple &DeclVersion)
 
static NamedDeclfindEnclosingDeclToAnnotate (Decl *OrigCtx)
 
static Optional< unsigned > tryParseObjCMethodName (StringRef Name, SmallVectorImpl< StringRef > &SlotNames, const LangOptions &LangOpts)
 Tries to parse a string as ObjC method name. More...
 
static Optional< AttributeInsertion > createAttributeInsertion (const NamedDecl *D, const SourceManager &SM, const LangOptions &LangOpts)
 Returns a source location in which it's appropriate to insert a new attribute for the given declaration . More...
 
static void DoEmitAvailabilityWarning (Sema &S, AvailabilityResult K, Decl *Ctx, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef< SourceLocation > Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess)
 Actually emit an availability diagnostic for a reference to an unavailable decl. More...
 
static void EmitAvailabilityWarning (Sema &S, AvailabilityResult AR, const NamedDecl *ReferringDecl, const NamedDecl *OffendingDecl, StringRef Message, ArrayRef< SourceLocation > Locs, const ObjCInterfaceDecl *UnknownObjCClass, const ObjCPropertyDecl *ObjCProperty, bool ObjCPropertyAccess)
 

Function Documentation

◆ createAttributeInsertion()

static Optional<AttributeInsertion> createAttributeInsertion ( const NamedDecl D,
const SourceManager SM,
const LangOptions LangOpts 
)
static

Returns a source location in which it's appropriate to insert a new attribute for the given declaration .

Definition at line 280 of file SemaAvailability.cpp.

References clang::Lexer::getLocForEndOfToken(), clang::SourceLocation::isInvalid(), and SM.

◆ DoEmitAvailabilityWarning()

static void DoEmitAvailabilityWarning ( Sema S,
AvailabilityResult  K,
Decl Ctx,
const NamedDecl ReferringDecl,
const NamedDecl OffendingDecl,
StringRef  Message,
ArrayRef< SourceLocation Locs,
const ObjCInterfaceDecl UnknownObjCClass,
const ObjCPropertyDecl ObjCProperty,
bool  ObjCPropertyAccess 
)
static

Actually emit an availability diagnostic for a reference to an unavailable decl.

Parameters
CtxThe context that the reference occurred in
ReferringDeclThe exact declaration that was referenced.
OffendingDeclA related decl to ReferringDecl that has an availability attribute corresponding to K attached to it. Note that this may not be the same as ReferringDecl, i.e. if an EnumDecl is annotated and we refer to a member EnumConstantDecl, ReferringDecl is the EnumConstantDecl and OffendingDecl is the EnumDecl.

Definition at line 310 of file SemaAvailability.cpp.

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

◆ EmitAvailabilityWarning()

static void EmitAvailabilityWarning ( Sema S,
AvailabilityResult  AR,
const NamedDecl ReferringDecl,
const NamedDecl OffendingDecl,
StringRef  Message,
ArrayRef< SourceLocation Locs,
const ObjCInterfaceDecl UnknownObjCClass,
const ObjCPropertyDecl ObjCProperty,
bool  ObjCPropertyAccess 
)
static

Definition at line 554 of file SemaAvailability.cpp.

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

◆ findEnclosingDeclToAnnotate()

static NamedDecl* findEnclosingDeclToAnnotate ( Decl OrigCtx)
static

Definition at line 203 of file SemaAvailability.cpp.

References clang::Decl::getBeginLoc(), and clang::Decl::getEndLoc().

◆ getAttrForPlatform()

static const AvailabilityAttr* getAttrForPlatform ( ASTContext Context,
const Decl D 
)
static

Definition at line 26 of file SemaAvailability.cpp.

◆ shouldDiagnoseAvailabilityByDefault()

static bool shouldDiagnoseAvailabilityByDefault ( const ASTContext Context,
const VersionTuple &  DeploymentVersion,
const VersionTuple &  DeclVersion 
)
static

Definition at line 178 of file SemaAvailability.cpp.

◆ ShouldDiagnoseAvailabilityInContext()

static bool ShouldDiagnoseAvailabilityInContext ( Sema S,
AvailabilityResult  K,
VersionTuple  DeclVersion,
Decl Ctx,
const NamedDecl OffendingDecl 
)
static

whether we should emit a diagnostic for K and DeclVersion in the context of Ctx.

For example, we should emit an unavailable diagnostic in a deprecated context, but not the other way around.

Definition at line 120 of file SemaAvailability.cpp.

◆ ShouldDiagnoseAvailabilityOfDecl()

static std::pair<AvailabilityResult, const NamedDecl *> ShouldDiagnoseAvailabilityOfDecl ( Sema S,
const NamedDecl D,
std::string *  Message,
ObjCInterfaceDecl ClassReceiver 
)
static

The diagnostic we should emit for D, and the declaration that originated it, or AR_Available.

Parameters
DThe declaration to check.
MessageIf non-null, this will be populated with the message from the availability attribute that is selected.
ClassReceiverIf we're checking the the method of a class message send, the class. Otherwise nullptr.

Definition at line 63 of file SemaAvailability.cpp.

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

◆ tryParseObjCMethodName()

static Optional<unsigned> tryParseObjCMethodName ( StringRef  Name,
SmallVectorImpl< StringRef > &  SlotNames,
const LangOptions LangOpts 
)
static

Tries to parse a string as ObjC method name.

Parameters
NameThe string to parse. Expected to originate from availability attribute argument.
SlotNamesThe vector that will be populated with slot names. In case of unsuccessful parsing can contain invalid data.
Returns
A number of method parameters if parsing was successful, None otherwise.

Definition at line 247 of file SemaAvailability.cpp.