class State

Declaration

class State { /* full declaration omitted */ };

Description

Interface for the VM to interact with the AST walker's context.

Declared at: clang/lib/AST/Interp/State.h:55

Method Overview

  • public clang::OptionalDiagnostic CCEDiag(const clang::interp::SourceInfo & SI, diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr, unsigned int ExtraNotes = 0)
  • public clang::OptionalDiagnostic CCEDiag(const clang::Expr * E, diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr, unsigned int ExtraNotes = 0)
  • public clang::OptionalDiagnostic CCEDiag(clang::SourceLocation Loc, diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr, unsigned int ExtraNotes = 0)
  • public clang::OptionalDiagnostic FFDiag(const clang::interp::SourceInfo & SI, diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr, unsigned int ExtraNotes = 0)
  • public clang::OptionalDiagnostic FFDiag(const clang::Expr * E, diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr, unsigned int ExtraNotes = 0)
  • public clang::OptionalDiagnostic FFDiag(clang::SourceLocation Loc, diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr, unsigned int ExtraNotes = 0)
  • public clang::OptionalDiagnostic Note(clang::SourceLocation Loc, diag::kind DiagId)
  • private void addCallStack(unsigned int Limit)
  • private clang::PartialDiagnostic & addDiag(clang::SourceLocation Loc, diag::kind DiagId)
  • public void addNotes(ArrayRef<clang::PartialDiagnosticAt> Diags)
  • public virtual bool checkingForUndefinedBehavior() const
  • public virtual bool checkingPotentialConstantExpression() const
  • private clang::OptionalDiagnostic diag(clang::SourceLocation Loc, diag::kind DiagId, unsigned int ExtraNotes, bool IsCCEDiag)
  • public virtual const clang::interp::Frame * getBottomFrame() const
  • public virtual unsigned int getCallStackDepth()
  • public virtual clang::ASTContext & getCtx() const
  • public virtual clang::interp::Frame * getCurrentFrame()
  • public virtual Expr::EvalStatus & getEvalStatus() const
  • public const clang::LangOptions & getLangOpts() const
  • public virtual bool hasActiveDiagnostic()
  • public virtual bool hasPriorDiagnostic()
  • public virtual bool keepEvaluatingAfterFailure() const
  • public virtual bool noteUndefinedBehavior()
  • public clang::DiagnosticBuilder report(clang::SourceLocation Loc, diag::kind DiagId)
  • public virtual void setActiveDiagnostic(bool Flag)
  • public virtual void setFoldFailureDiagnostic(bool Flag)
  • public virtual ~State()

Methods

clang::OptionalDiagnostic CCEDiag(
    const clang::interp::SourceInfo& SI,
    diag::kind DiagId =
        diag::note_invalid_subexpr_in_const_expr,
    unsigned int ExtraNotes = 0)

Declared at: clang/lib/AST/Interp/State.h:106

Parameters

const clang::interp::SourceInfo& SI
diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr
unsigned int ExtraNotes = 0

clang::OptionalDiagnostic CCEDiag(
    const clang::Expr* E,
    diag::kind DiagId =
        diag::note_invalid_subexpr_in_const_expr,
    unsigned int ExtraNotes = 0)

Declared at: clang/lib/AST/Interp/State.h:101

Parameters

const clang::Expr* E
diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr
unsigned int ExtraNotes = 0

clang::OptionalDiagnostic CCEDiag(
    clang::SourceLocation Loc,
    diag::kind DiagId =
        diag::note_invalid_subexpr_in_const_expr,
    unsigned int ExtraNotes = 0)

Description

Diagnose that the evaluation does not produce a C++11 core constant expression. FIXME: Stop evaluating if we're in EM_ConstantExpression or EM_PotentialConstantExpression mode and we produce one of these.

Declared at: clang/lib/AST/Interp/State.h:96

Parameters

clang::SourceLocation Loc
diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr
unsigned int ExtraNotes = 0

clang::OptionalDiagnostic FFDiag(
    const clang::interp::SourceInfo& SI,
    diag::kind DiagId =
        diag::note_invalid_subexpr_in_const_expr,
    unsigned int ExtraNotes = 0)

Declared at: clang/lib/AST/Interp/State.h:86

Parameters

const clang::interp::SourceInfo& SI
diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr
unsigned int ExtraNotes = 0

clang::OptionalDiagnostic FFDiag(
    const clang::Expr* E,
    diag::kind DiagId =
        diag::note_invalid_subexpr_in_const_expr,
    unsigned int ExtraNotes = 0)

Declared at: clang/lib/AST/Interp/State.h:81

Parameters

const clang::Expr* E
diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr
unsigned int ExtraNotes = 0

clang::OptionalDiagnostic FFDiag(
    clang::SourceLocation Loc,
    diag::kind DiagId =
        diag::note_invalid_subexpr_in_const_expr,
    unsigned int ExtraNotes = 0)

Declared at: clang/lib/AST/Interp/State.h:76

Parameters

clang::SourceLocation Loc
diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr
unsigned int ExtraNotes = 0

clang::OptionalDiagnostic Note(
    clang::SourceLocation Loc,
    diag::kind DiagId)

Description

Add a note to a prior diagnostic.

Declared at: clang/lib/AST/Interp/State.h:111

Parameters

clang::SourceLocation Loc
diag::kind DiagId

void addCallStack(unsigned int Limit)

Declared at: clang/lib/AST/Interp/State.h:122

Parameters

unsigned int Limit

clang::PartialDiagnostic& addDiag(
    clang::SourceLocation Loc,
    diag::kind DiagId)

Declared at: clang/lib/AST/Interp/State.h:124

Parameters

clang::SourceLocation Loc
diag::kind DiagId

void addNotes(
    ArrayRef<clang::PartialDiagnosticAt> Diags)

Description

Add a stack of notes to a prior diagnostic.

Declared at: clang/lib/AST/Interp/State.h:114

Parameters

ArrayRef<clang::PartialDiagnosticAt> Diags

virtual bool checkingForUndefinedBehavior() const

Declared at: clang/lib/AST/Interp/State.h:59

virtual bool checkingPotentialConstantExpression()
    const

Declared at: clang/lib/AST/Interp/State.h:60

clang::OptionalDiagnostic diag(
    clang::SourceLocation Loc,
    diag::kind DiagId,
    unsigned int ExtraNotes,
    bool IsCCEDiag)

Declared at: clang/lib/AST/Interp/State.h:126

Parameters

clang::SourceLocation Loc
diag::kind DiagId
unsigned int ExtraNotes
bool IsCCEDiag

virtual const clang::interp::Frame*
getBottomFrame() const

Declared at: clang/lib/AST/Interp/State.h:64

virtual unsigned int getCallStackDepth()

Declared at: clang/lib/AST/Interp/State.h:71

virtual clang::ASTContext& getCtx() const

Declared at: clang/lib/AST/Interp/State.h:69

virtual clang::interp::Frame* getCurrentFrame()

Declared at: clang/lib/AST/Interp/State.h:63

virtual Expr::EvalStatus& getEvalStatus() const

Declared at: clang/lib/AST/Interp/State.h:68

const clang::LangOptions& getLangOpts() const

Declared at: clang/lib/AST/Interp/State.h:119

virtual bool hasActiveDiagnostic()

Declared at: clang/lib/AST/Interp/State.h:65

virtual bool hasPriorDiagnostic()

Declared at: clang/lib/AST/Interp/State.h:70

virtual bool keepEvaluatingAfterFailure() const

Declared at: clang/lib/AST/Interp/State.h:62

virtual bool noteUndefinedBehavior()

Declared at: clang/lib/AST/Interp/State.h:61

clang::DiagnosticBuilder report(
    clang::SourceLocation Loc,
    diag::kind DiagId)

Description

Directly reports a diagnostic message.

Declared at: clang/lib/AST/Interp/State.h:117

Parameters

clang::SourceLocation Loc
diag::kind DiagId

virtual void setActiveDiagnostic(bool Flag)

Declared at: clang/lib/AST/Interp/State.h:66

Parameters

bool Flag

virtual void setFoldFailureDiagnostic(bool Flag)

Declared at: clang/lib/AST/Interp/State.h:67

Parameters

bool Flag

virtual ~State()

Declared at: clang/lib/AST/Interp/State.h:57