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

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

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

Public Member Functions

 LifetimeSafetySemaHelper ()=default
virtual ~LifetimeSafetySemaHelper ()=default
virtual void reportUseAfterFree (const Expr *IssueExpr, const Expr *UseExpr, SourceLocation FreeLoc, Confidence Confidence)
virtual void reportUseAfterReturn (const Expr *IssueExpr, const Expr *EscapeExpr, SourceLocation ExpiryLoc, Confidence Confidence)
virtual void suggestLifetimeboundToParmVar (SuggestionScope Scope, const ParmVarDecl *ParmToAnnotate, const Expr *EscapeExpr)
virtual void reportNoescapeViolation (const ParmVarDecl *ParmWithNoescape, const Expr *EscapeExpr)
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 55 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

Definition at line 85 of file LifetimeSafety.h.

◆ reportNoescapeViolation()

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

Definition at line 75 of file LifetimeSafety.h.

◆ reportUseAfterFree()

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

Definition at line 60 of file LifetimeSafety.h.

◆ reportUseAfterReturn()

virtual void clang::lifetimes::LifetimeSafetySemaHelper::reportUseAfterReturn ( const Expr * IssueExpr,
const Expr * EscapeExpr,
SourceLocation ExpiryLoc,
Confidence Confidence )
inlinevirtual

Definition at line 64 of file LifetimeSafety.h.

◆ suggestLifetimeboundToImplicitThis()

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

Definition at line 79 of file LifetimeSafety.h.

◆ suggestLifetimeboundToParmVar()

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

Definition at line 70 of file LifetimeSafety.h.


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