Line data Source code
1 : #include "../../../inc/parsingAnalysis/ast/pointer/ast_delete.h"
2 : #include "../../../inc/parsingAnalysis/ast/pointer/ast_deref.h"
3 : #include "../../../inc/parsingAnalysis/ast/pointer/ast_new.h"
4 : #include "../../../inc/visitors/codeGeneration/codeGeneration.h"
5 : #include <cstddef>
6 : #include <memory>
7 : #include <variant>
8 :
9 : namespace nicole {
10 :
11 : std::expected<std::shared_ptr<llvm::Value>, Error>
12 0 : CodeGeneration::visit(const AST_DELETE *node) const noexcept {
13 0 : if (!node) {
14 0 : return createError(ERROR_TYPE::NULL_NODE, "invalid AST_DELETE");
15 0 : }
16 0 : const auto result{node->value()->accept(*this)};
17 0 : if (!result) {
18 0 : return createError(result.error());
19 0 : }
20 0 : return {};
21 0 : }
22 :
23 : std::expected<std::shared_ptr<llvm::Value>, Error>
24 0 : CodeGeneration::visit(const AST_NEW *node) const noexcept {
25 0 : if (!node) {
26 0 : return createError(ERROR_TYPE::NULL_NODE, "invalid AST_NEW");
27 0 : }
28 0 : const auto result{node->value()->accept(*this)};
29 0 : if (!result) {
30 0 : return createError(result.error());
31 0 : }
32 0 : return {};
33 0 : }
34 :
35 : std::expected<std::shared_ptr<llvm::Value>, Error>
36 0 : CodeGeneration::visit(const AST_DEREF *node) const noexcept {
37 0 : if (!node) {
38 0 : return createError(ERROR_TYPE::NULL_NODE, "invalid AST_DEREF");
39 0 : }
40 0 : const auto result{node->value()->accept(*this)};
41 0 : if (!result) {
42 0 : return createError(result.error());
43 0 : }
44 0 : return {};
45 0 : }
46 :
47 : } // namespace nicole
|