clang 23.0.0git
clang::lifetimes::LifetimeSafetySemaHelper Class Reference

Abstract interface for operations requiring Sema access. More...

#include "clang/Analysis/Analyses/LifetimeSafety/LifetimeSafety.h"

Inheritance diagram for clang::lifetimes::LifetimeSafetySemaHelper:
[legend]

Public Types

using EscapingTarget

Public Member Functions

 LifetimeSafetySemaHelper ()=default
virtual ~LifetimeSafetySemaHelper ()=default
virtual void reportUseAfterScope (const Expr *IssueExpr, const Expr *UseExpr, const Expr *MovedExpr, SourceLocation FreeLoc)
virtual void reportUseAfterReturn (const Expr *IssueExpr, const Expr *ReturnExpr, const Expr *MovedExpr)
virtual void reportDanglingField (const Expr *IssueExpr, const FieldDecl *Field, const Expr *MovedExpr, SourceLocation ExpiryLoc)
virtual void reportDanglingGlobal (const Expr *IssueExpr, const VarDecl *DanglingGlobal, const Expr *MovedExpr, SourceLocation ExpiryLoc)
virtual void reportUseAfterInvalidation (const Expr *IssueExpr, const Expr *UseExpr, const Expr *InvalidationExpr)
virtual void reportUseAfterInvalidation (const ParmVarDecl *PVD, const Expr *UseExpr, const Expr *InvalidationExpr)
virtual void reportInvalidatedField (const Expr *IssueExpr, const FieldDecl *Field, const Expr *InvalidationExpr)
virtual void reportInvalidatedField (const ParmVarDecl *PVD, const FieldDecl *Field, const Expr *InvalidationExpr)
virtual void reportInvalidatedGlobal (const Expr *IssueExpr, const VarDecl *Global, const Expr *InvalidationExpr)
virtual void reportInvalidatedGlobal (const ParmVarDecl *PVD, const VarDecl *Global, const Expr *InvalidationExpr)
virtual void suggestLifetimeboundToParmVar (WarningScope Scope, const ParmVarDecl *ParmToAnnotate, EscapingTarget Target)
virtual void reportNoescapeViolation (const ParmVarDecl *ParmWithNoescape, const Expr *EscapeExpr)
virtual void reportNoescapeViolation (const ParmVarDecl *ParmWithNoescape, const FieldDecl *EscapeField)
virtual void reportNoescapeViolation (const ParmVarDecl *ParmWithNoescape, const VarDecl *EscapeGlobal)
virtual void reportLifetimeboundViolation (const ParmVarDecl *ParmWithLifetimebound)
virtual void reportLifetimeboundViolation (const CXXMethodDecl *MDWithLifetimebound)
virtual void reportMisplacedLifetimebound (WarningScope Scope, const CXXMethodDecl *FDef, const CXXMethodDecl *FDecl)
virtual void reportMisplacedLifetimebound (WarningScope Scope, const ParmVarDecl *PVDDef, const ParmVarDecl *PVDDecl)
virtual void suggestLifetimeboundToImplicitThis (WarningScope Scope, const CXXMethodDecl *MD, const Expr *EscapeExpr)
virtual void addLifetimeBoundToImplicitThis (const CXXMethodDecl *MD)

Detailed Description

Abstract interface for operations requiring Sema access.

This class exists to break a circular dependency: the LifetimeSafety analysis target cannot directly depend on clangSema (which would create the cycle: clangSema -> clangAnalysis -> clangAnalysisLifetimeSafety -> clangSema).

Instead, this interface is implemented in AnalysisBasedWarnings.cpp (part of clangSema), allowing the analysis to report diagnostics and modify the AST through Sema without introducing a circular dependency.

Definition at line 59 of file LifetimeSafety.h.

Member Typedef Documentation

◆ EscapingTarget

Initial value:
llvm::PointerUnion<const Expr *, const FieldDecl *, const VarDecl *>

Definition at line 103 of file LifetimeSafety.h.

Constructor & Destructor Documentation

◆ LifetimeSafetySemaHelper()

clang::lifetimes::LifetimeSafetySemaHelper::LifetimeSafetySemaHelper ( )
default

◆ ~LifetimeSafetySemaHelper()

virtual clang::lifetimes::LifetimeSafetySemaHelper::~LifetimeSafetySemaHelper ( )
virtualdefault

Member Function Documentation

◆ addLifetimeBoundToImplicitThis()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::addLifetimeBoundToImplicitThis ( const CXXMethodDecl * MD)
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 151 of file LifetimeSafety.h.

◆ reportDanglingField()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportDanglingField ( const Expr * IssueExpr,
const FieldDecl * Field,
const Expr * MovedExpr,
SourceLocation ExpiryLoc )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 72 of file LifetimeSafety.h.

◆ reportDanglingGlobal()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportDanglingGlobal ( const Expr * IssueExpr,
const VarDecl * DanglingGlobal,
const Expr * MovedExpr,
SourceLocation ExpiryLoc )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 77 of file LifetimeSafety.h.

◆ reportInvalidatedField() [1/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportInvalidatedField ( const Expr * IssueExpr,
const FieldDecl * Field,
const Expr * InvalidationExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 90 of file LifetimeSafety.h.

◆ reportInvalidatedField() [2/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportInvalidatedField ( const ParmVarDecl * PVD,
const FieldDecl * Field,
const Expr * InvalidationExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 93 of file LifetimeSafety.h.

◆ reportInvalidatedGlobal() [1/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportInvalidatedGlobal ( const Expr * IssueExpr,
const VarDecl * Global,
const Expr * InvalidationExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 96 of file LifetimeSafety.h.

References clang::Global.

◆ reportInvalidatedGlobal() [2/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportInvalidatedGlobal ( const ParmVarDecl * PVD,
const VarDecl * Global,
const Expr * InvalidationExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 99 of file LifetimeSafety.h.

References clang::Global.

◆ reportLifetimeboundViolation() [1/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportLifetimeboundViolation ( const CXXMethodDecl * MDWithLifetimebound)
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 130 of file LifetimeSafety.h.

◆ reportLifetimeboundViolation() [2/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportLifetimeboundViolation ( const ParmVarDecl * ParmWithLifetimebound)
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 125 of file LifetimeSafety.h.

◆ reportMisplacedLifetimebound() [1/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportMisplacedLifetimebound ( WarningScope Scope,
const CXXMethodDecl * FDef,
const CXXMethodDecl * FDecl )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 134 of file LifetimeSafety.h.

◆ reportMisplacedLifetimebound() [2/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportMisplacedLifetimebound ( WarningScope Scope,
const ParmVarDecl * PVDDef,
const ParmVarDecl * PVDDecl )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 140 of file LifetimeSafety.h.

◆ reportNoescapeViolation() [1/3]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportNoescapeViolation ( const ParmVarDecl * ParmWithNoescape,
const Expr * EscapeExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 112 of file LifetimeSafety.h.

◆ reportNoescapeViolation() [2/3]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportNoescapeViolation ( const ParmVarDecl * ParmWithNoescape,
const FieldDecl * EscapeField )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 115 of file LifetimeSafety.h.

◆ reportNoescapeViolation() [3/3]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportNoescapeViolation ( const ParmVarDecl * ParmWithNoescape,
const VarDecl * EscapeGlobal )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 119 of file LifetimeSafety.h.

◆ reportUseAfterInvalidation() [1/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportUseAfterInvalidation ( const Expr * IssueExpr,
const Expr * UseExpr,
const Expr * InvalidationExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 84 of file LifetimeSafety.h.

◆ reportUseAfterInvalidation() [2/2]

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportUseAfterInvalidation ( const ParmVarDecl * PVD,
const Expr * UseExpr,
const Expr * InvalidationExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 87 of file LifetimeSafety.h.

◆ reportUseAfterReturn()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportUseAfterReturn ( const Expr * IssueExpr,
const Expr * ReturnExpr,
const Expr * MovedExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 68 of file LifetimeSafety.h.

◆ reportUseAfterScope()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportUseAfterScope ( const Expr * IssueExpr,
const Expr * UseExpr,
const Expr * MovedExpr,
SourceLocation FreeLoc )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 64 of file LifetimeSafety.h.

◆ suggestLifetimeboundToImplicitThis()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::suggestLifetimeboundToImplicitThis ( WarningScope Scope,
const CXXMethodDecl * MD,
const Expr * EscapeExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 145 of file LifetimeSafety.h.

◆ suggestLifetimeboundToParmVar()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::suggestLifetimeboundToParmVar ( WarningScope Scope,
const ParmVarDecl * ParmToAnnotate,
EscapingTarget Target )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 107 of file LifetimeSafety.h.

References clang::Target.


The documentation for this class was generated from the following file: