clang 19.0.0git
|
Defines the result of an evaluation. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/Interp/EvaluationResult.h"
Public Types | |
enum | ResultKind { Empty , LValue , RValue , Invalid , Valid } |
using | DeclTy = llvm::PointerUnion< const Decl *, const Expr * > |
Public Member Functions | |
EvaluationResult (const Context *Ctx) | |
bool | empty () const |
bool | isInvalid () const |
bool | isLValue () const |
bool | isRValue () const |
APValue | toAPValue () const |
Returns an APValue for the evaluation result. | |
std::optional< APValue > | toRValue () const |
If the result is an LValue, convert that to an RValue and return it. | |
bool | checkFullyInitialized (InterpState &S, const Pointer &Ptr) const |
void | dump () const |
Dump to stderr. | |
Friends | |
class | EvalEmitter |
Defines the result of an evaluation.
The result might be in different forms–one of the pointer types, an APValue, or nothing.
We use this class to inspect and diagnose the result, as well as convert it to the requested form.
Definition at line 32 of file EvaluationResult.h.
using clang::interp::EvaluationResult::DeclTy = llvm::PointerUnion<const Decl *, const Expr *> |
Definition at line 42 of file EvaluationResult.h.
Enumerator | |
---|---|
Empty | |
LValue | |
RValue | |
Invalid | |
Valid |
Definition at line 34 of file EvaluationResult.h.
|
inline |
Definition at line 85 of file EvaluationResult.h.
bool clang::interp::EvaluationResult::checkFullyInitialized | ( | InterpState & | S, |
const Pointer & | Ptr | ||
) | const |
Definition at line 137 of file EvaluationResult.cpp.
References clang::interp::CheckArrayInitialized(), clang::interp::CheckFieldsInitialized(), empty(), clang::Type::getAsArrayTypeUnsafe(), clang::interp::Pointer::getRecord(), clang::interp::Pointer::getType(), and clang::interp::Pointer::isZero().
void clang::interp::EvaluationResult::dump | ( | ) | const |
Dump to stderr.
Definition at line 158 of file EvaluationResult.cpp.
References Empty, clang::interp::Context::getASTContext(), Invalid, LValue, P, RValue, and Valid.
|
inline |
Definition at line 87 of file EvaluationResult.h.
References Empty.
Referenced by checkFullyInitialized(), clang::interp::EvalEmitter::interpretDecl(), and toAPValue().
|
inline |
Definition at line 88 of file EvaluationResult.h.
References Invalid.
|
inline |
Definition at line 89 of file EvaluationResult.h.
References LValue.
|
inline |
Definition at line 90 of file EvaluationResult.h.
References RValue.
APValue clang::interp::EvaluationResult::toAPValue | ( | ) | const |
Returns an APValue for the evaluation result.
The returned APValue might be an LValue or RValue.
Definition at line 18 of file EvaluationResult.cpp.
References empty(), LValue, P, RValue, and Valid.
Referenced by toRValue().
std::optional< APValue > clang::interp::EvaluationResult::toRValue | ( | ) | const |
If the result is an LValue, convert that to an RValue and return it.
This may fail, e.g. if the result is an LValue and we can't read from it.
Definition at line 39 of file EvaluationResult.cpp.
References LValue, P, RValue, and toAPValue().
|
friend |
Definition at line 106 of file EvaluationResult.h.