13#ifndef LLVM_CLANG_AST_INTERP_STATE_H 
   14#define LLVM_CLANG_AST_INTERP_STATE_H 
  112         diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr,
 
  113         unsigned ExtraNotes = 0);
 
  117         diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr,
 
  118         unsigned ExtraNotes = 0);
 
  122         diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr,
 
  123         unsigned ExtraNotes = 0);
 
  132          diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr,
 
  133          unsigned ExtraNotes = 0);
 
  137          diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr,
 
  138          unsigned ExtraNotes = 0);
 
  142          diag::kind DiagId = diag::note_invalid_subexpr_in_const_expr,
 
  143          unsigned ExtraNotes = 0);
 
  174  void addCallStack(
unsigned Limit);
 
  179                          unsigned ExtraNotes, 
bool IsCCEDiag);
 
 
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
 
A little helper class used to produce diagnostics.
 
This represents one expression.
 
A partial diagnostic which we might know in advance that we are not going to emit.
 
Encodes a location in the source.
 
Base class for stack frames, shared between VM and walker.
 
Describes the statement/declaration an opcode was generated from.
 
bool checkingForUndefinedBehavior() const
Are we checking an expression for overflow?
 
virtual bool hasActiveDiagnostic()=0
 
virtual void setActiveDiagnostic(bool Flag)=0
 
DiagnosticBuilder report(SourceLocation Loc, diag::kind DiagId)
Directly reports a diagnostic message.
 
virtual Frame * getCurrentFrame()=0
 
virtual bool noteUndefinedBehavior()=0
 
OptionalDiagnostic FFDiag(SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0)
Diagnose that the evaluation could not be folded (FF => FoldFailure)
 
bool CheckingPotentialConstantExpression
Whether we're checking that an expression is a potential constant expression.
 
virtual Expr::EvalStatus & getEvalStatus() const =0
 
virtual unsigned getCallStackDepth()=0
 
bool CheckingForUndefinedBehavior
Whether we're checking for an expression that has undefined behavior.
 
virtual bool keepEvaluatingAfterFailure() const =0
 
void addNotes(ArrayRef< PartialDiagnosticAt > Diags)
Add a stack of notes to a prior diagnostic.
 
virtual const Frame * getBottomFrame() const =0
 
OptionalDiagnostic CCEDiag(SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0)
Diagnose that the evaluation does not produce a C++11 core constant expression.
 
virtual void setFoldFailureDiagnostic(bool Flag)=0
 
virtual bool noteSideEffect()=0
 
virtual bool hasPriorDiagnostic()=0
 
bool checkingPotentialConstantExpression() const
Are we checking whether the expression is a potential constant expression?
 
virtual bool keepEvaluatingAfterSideEffect() const =0
 
bool InConstantContext
Whether or not we're in a context where the front end requires a constant value.
 
virtual ASTContext & getASTContext() const =0
 
unsigned kind
All of the diagnostics that can be emitted by the frontend.
 
The JSON file list parser is used to communicate input to InstallAPI.
 
CheckSubobjectKind
The order of this enum is important for diagnostics.
 
AccessKinds
Kinds of access we can perform on an object, for diagnostics.
 
@ AK_ReadObjectRepresentation
 
@ ConstantFold
Fold the expression to a constant.
 
@ ConstantExpressionUnevaluated
Evaluate as a constant expression.
 
@ ConstantExpression
Evaluate as a constant expression.
 
@ IgnoreSideEffects
Evaluate in any way we know how.
 
EvalStatus is a struct with detailed info about an evaluation in progress.