Line data Source code
1 : #ifndef AST_DESTRUCTOR_DECL_H
2 : #define AST_DESTRUCTOR_DECL_H
3 :
4 : #include "../../../tables/typeTable/types/specialTypes/voidType.h"
5 : #include "../functions/ast_subrutineDecl.h"
6 : #include <memory>
7 :
8 : namespace nicole {
9 :
10 : class AST_DESTRUCTOR_DECL final : public AST_SUBRUTINE_DECL {
11 : public:
12 : explicit AST_DESTRUCTOR_DECL(const long long unsigned nodeId,
13 : const SourceLocation &srcLoc,
14 : const std::string &id,
15 : const std::shared_ptr<AST_BODY> &body) noexcept
16 0 : : AST_SUBRUTINE_DECL(nodeId, AST_TYPE::DESTRUCTOR_DECL, srcLoc, id,
17 0 : std::make_shared<VoidType>(), body) {}
18 :
19 : [[nodiscard]] std::expected<std::string, Error>
20 0 : accept(const PrintTree &visitor) const noexcept override {
21 0 : return visitor.visit(this);
22 0 : }
23 :
24 : [[nodiscard]] std::expected<bool, Error>
25 0 : accept(const ValidateTree &visitor) const noexcept override {
26 0 : return visitor.visit(this);
27 0 : }
28 :
29 : [[nodiscard]] std::expected<std::monostate, Error>
30 0 : accept(const FillSemanticInfo &visitor) const noexcept override {
31 0 : return visitor.visit(this);
32 0 : }
33 :
34 : [[nodiscard]] std::expected<std::shared_ptr<Type>, Error>
35 0 : accept(const TypeAnalysis &visitor) const noexcept override {
36 0 : return visitor.visit(this);
37 0 : }
38 :
39 : [[nodiscard]] std::expected<std::monostate, Error>
40 0 : accept(const Monomorphize &visitor) const noexcept override {
41 0 : return visitor.visit(this);
42 0 : }
43 :
44 : [[nodiscard]] std::expected<std::shared_ptr<llvm::Value>, Error>
45 0 : accept(const CodeGeneration &visitor) const noexcept override {
46 0 : return visitor.visit(this);
47 0 : }
48 : };
49 :
50 : } // namespace nicole
51 :
52 : #endif
|