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 Member Functions

 LifetimeSafetySemaHelper ()=default
virtual ~LifetimeSafetySemaHelper ()=default
virtual void reportUseAfterFree (const Expr *IssueExpr, const Expr *UseExpr, const Expr *MovedExpr, SourceLocation FreeLoc)
virtual void reportUseAfterReturn (const Expr *IssueExpr, const Expr *ReturnExpr, const Expr *MovedExpr, SourceLocation ExpiryLoc)
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 suggestLifetimeboundToParmVar (SuggestionScope Scope, const ParmVarDecl *ParmToAnnotate, const Expr *EscapeExpr)
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 suggestLifetimeboundToImplicitThis (SuggestionScope 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 58 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 114 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.

◆ reportNoescapeViolation() [1/3]

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

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 97 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 100 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 104 of file LifetimeSafety.h.

◆ reportUseAfterFree()

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

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 63 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,
SourceLocation ExpiryLoc )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 67 of file LifetimeSafety.h.

◆ suggestLifetimeboundToImplicitThis()

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

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 108 of file LifetimeSafety.h.

◆ suggestLifetimeboundToParmVar()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::suggestLifetimeboundToParmVar ( SuggestionScope Scope,
const ParmVarDecl * ParmToAnnotate,
const Expr * EscapeExpr )
inlinevirtual

Reimplemented in clang::lifetimes::LifetimeSafetySemaHelperImpl.

Definition at line 92 of file LifetimeSafety.h.


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