| |
| /* Compiler implementation of the D programming language |
| * Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved |
| * written by Walter Bright |
| * https://www.digitalmars.com |
| * Distributed under the Boost Software License, Version 1.0. |
| * https://www.boost.org/LICENSE_1_0.txt |
| * https://github.com/dlang/dmd/blob/master/src/dmd/ctfe.h |
| */ |
| |
| #pragma once |
| |
| #include "tokens.h" |
| #include "expression.h" |
| |
| /** |
| A reference to a class, or an interface. We need this when we |
| point to a base class (we must record what the type is). |
| */ |
| class ClassReferenceExp final : public Expression |
| { |
| public: |
| StructLiteralExp *value; |
| ClassDeclaration *originalClass(); |
| |
| /// Return index of the field, or -1 if not found |
| /// Same as getFieldIndex, but checks for a direct match with the VarDeclaration |
| int findFieldIndexByName(VarDeclaration *v); |
| void accept(Visitor *v) override { v->visit(this); } |
| }; |
| |
| /** |
| An uninitialized value |
| */ |
| class VoidInitExp final : public Expression |
| { |
| public: |
| VarDeclaration *var; |
| |
| const char *toChars() const override; |
| void accept(Visitor *v) override { v->visit(this); } |
| }; |
| |
| /** |
| Fake class which holds the thrown exception. |
| Used for implementing exception handling. |
| */ |
| class ThrownExceptionExp final : public Expression |
| { |
| public: |
| ClassReferenceExp *thrown; // the thing being tossed |
| const char *toChars() const override; |
| void accept(Visitor *v) override { v->visit(this); } |
| }; |
| |
| /****************************************************************/ |
| |
| // This type is only used by the interpreter. |
| |
| class CTFEExp final : public Expression |
| { |
| public: |
| const char *toChars() const override; |
| }; |