LCOV - code coverage report
Current view: top level - inc/visitors/monomorphize - monomorphize.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 5 0
Test Date: 2025-04-18 15:53:49 Functions: 0.0 % 2 0

            Line data    Source code
       1              : #ifndef MONOMORPHIZE_H
       2              : #define MONOMORPHIZE_H
       3              : 
       4              : #include "../../tables/functionTable/functionTable.h"
       5              : #include "../../tables/scope/scope.h"
       6              : #include "../../tables/typeTable/typeTable.h"
       7              : #include "../visitor.h"
       8              : #include <memory>
       9              : #include <variant>
      10              : #include <vector>
      11              : 
      12              : namespace nicole {
      13              : 
      14              : class Monomorphize final : public Visitor<std::monostate> {
      15              : private:
      16              :   mutable std::shared_ptr<FunctionTable> functionTable_;
      17              :   mutable std::shared_ptr<TypeTable> typeTable_;
      18              : 
      19              : public:
      20              :   Monomorphize(
      21              :                const std::shared_ptr<FunctionTable> &functionTable,
      22              :                std::shared_ptr<TypeTable> &typeTable) noexcept
      23            0 :       :  functionTable_{functionTable},
      24            0 :         typeTable_{typeTable} {}
      25              : 
      26              :   [[nodiscard]] std::expected<std::monostate, Error>
      27              :   visit(const AST_BOOL *node) const noexcept override;
      28              : 
      29              :   [[nodiscard]] std::expected<std::monostate, Error>
      30              :   visit(const AST_CHAR *node) const noexcept override;
      31              : 
      32              :   [[nodiscard]] std::expected<std::monostate, Error>
      33              :   visit(const AST_DOUBLE *node) const noexcept override;
      34              : 
      35              :   [[nodiscard]] std::expected<std::monostate, Error>
      36              :   visit(const AST_FLOAT *node) const noexcept override;
      37              : 
      38              :   [[nodiscard]] std::expected<std::monostate, Error>
      39              :   visit(const AST_INT *node) const noexcept override;
      40              : 
      41              :   [[nodiscard]] std::expected<std::monostate, Error>
      42              :   visit(const AST_NULL *node) const noexcept override;
      43              : 
      44              :   [[nodiscard]] std::expected<std::monostate, Error>
      45              :   visit(const AST_STRING *node) const noexcept override;
      46              : 
      47              :   [[nodiscard]] std::expected<std::monostate, Error>
      48              :   visit(const AST_VECTOR *node) const noexcept override;
      49              : 
      50              :   [[nodiscard]] std::expected<std::monostate, Error>
      51              :   visit(const AST_INDEX *node) const noexcept override;
      52              : 
      53              :   [[nodiscard]] std::expected<std::monostate, Error>
      54              :   visit(const AST_DELETE *node) const noexcept override;
      55              : 
      56              :   [[nodiscard]] std::expected<std::monostate, Error>
      57              :   visit(const AST_NEW *node) const noexcept override;
      58              : 
      59              :   [[nodiscard]] std::expected<std::monostate, Error>
      60              :   visit(const AST_DEREF *node) const noexcept override;
      61              : 
      62              :   [[nodiscard]] std::expected<std::monostate, Error>
      63              :   visit(const AST_BINARY *node) const noexcept override;
      64              : 
      65              :   [[nodiscard]] std::expected<std::monostate, Error>
      66              :   visit(const AST_UNARY *node) const noexcept override;
      67              : 
      68              :   [[nodiscard]] std::expected<std::monostate, Error>
      69              :   visit(const AST_ASSIGNMENT *node) const noexcept override;
      70              : 
      71              :   [[nodiscard]] std::expected<std::monostate, Error>
      72              :   visit(const AST_PRINT *node) const noexcept override;
      73              : 
      74              :   [[nodiscard]] std::expected<std::monostate, Error>
      75              :   visit(const AST_IMPORT *node) const noexcept override;
      76              : 
      77              :   [[nodiscard]] std::expected<std::monostate, Error>
      78              :   visit(const AST_STATEMENT *node) const noexcept override;
      79              : 
      80              :   [[nodiscard]] std::expected<std::monostate, Error>
      81              :   visit(const AST_BODY *node) const noexcept override;
      82              : 
      83              :   [[nodiscard]] std::expected<std::monostate, Error>
      84              :   visit(const AST_WHILE *node) const noexcept override;
      85              : 
      86              :   [[nodiscard]] std::expected<std::monostate, Error>
      87              :   visit(const AST_FOR *node) const noexcept override;
      88              : 
      89              :   [[nodiscard]] std::expected<std::monostate, Error>
      90              :   visit(const AST_DO_WHILE *node) const noexcept override;
      91              : 
      92              :   [[nodiscard]] std::expected<std::monostate, Error>
      93              :   visit(const AST_PASS *node) const noexcept override;
      94              : 
      95              :   [[nodiscard]] std::expected<std::monostate, Error>
      96              :   visit(const AST_STOP *node) const noexcept override;
      97              : 
      98              :   [[nodiscard]] std::expected<std::monostate, Error>
      99              :   visit(const AST_IF *node) const noexcept override;
     100              : 
     101              :   [[nodiscard]] std::expected<std::monostate, Error>
     102              :   visit(const AST_ELSE_IF *node) const noexcept override;
     103              : 
     104              :   [[nodiscard]] std::expected<std::monostate, Error>
     105              :   visit(const AST_SWITCH *node) const noexcept override;
     106              : 
     107              :   [[nodiscard]] std::expected<std::monostate, Error>
     108              :   visit(const AST_CASE *node) const noexcept override;
     109              : 
     110              :   [[nodiscard]] std::expected<std::monostate, Error>
     111              :   visit(const AST_DEFAULT *node) const noexcept override;
     112              : 
     113              :   [[nodiscard]] std::expected<std::monostate, Error>
     114              :   visit(const AST_TERNARY *node) const noexcept override;
     115              : 
     116              :   [[nodiscard]] std::expected<std::monostate, Error>
     117              :   visit(const AST_CONDITION *node) const noexcept override;
     118              : 
     119              :   [[nodiscard]] std::expected<std::monostate, Error>
     120              :   visit(const AST_FUNC_CALL *node) const noexcept override;
     121              : 
     122              :   [[nodiscard]] std::expected<std::monostate, Error>
     123              :   visit(const AST_FUNC_DECL *node) const noexcept override;
     124              : 
     125              :   [[nodiscard]] std::expected<std::monostate, Error>
     126              :   visit(const AST_RETURN *node) const noexcept override;
     127              : 
     128              :   [[nodiscard]] std::expected<std::monostate, Error>
     129              :   visit(const AST_ENUM *node) const noexcept override;
     130              : 
     131              :   [[nodiscard]] std::expected<std::monostate, Error>
     132              :   visit(const AST_ENUM_ACCESS *node) const noexcept override;
     133              : 
     134              :   [[nodiscard]] std::expected<std::monostate, Error>
     135              :   visit(const AST_STRUCT *node) const noexcept override;
     136              : 
     137              :   [[nodiscard]] std::expected<std::monostate, Error>
     138              :   visit(const AST_ATTR_ACCESS *node) const noexcept override;
     139              : 
     140              :   [[nodiscard]] std::expected<std::monostate, Error>
     141              :   visit(const AST_METHOD_CALL *node) const noexcept override;
     142              : 
     143              :   [[nodiscard]] std::expected<std::monostate, Error>
     144              :   visit(const AST_METHOD_DECL *node) const noexcept override;
     145              : 
     146              :   [[nodiscard]] std::expected<std::monostate, Error>
     147              :   visit(const AST_CONSTRUCTOR_DECL *node) const noexcept override;
     148              : 
     149              :   [[nodiscard]] std::expected<std::monostate, Error>
     150              :   visit(const AST_SUPER *node) const noexcept override;
     151              : 
     152              :   [[nodiscard]] std::expected<std::monostate, Error>
     153              :   visit(const AST_DESTRUCTOR_DECL *node) const noexcept override;
     154              : 
     155              :   [[nodiscard]] std::expected<std::monostate, Error>
     156              :   visit(const AST_THIS *node) const noexcept override;
     157              : 
     158              :   [[nodiscard]] std::expected<std::monostate, Error>
     159              :   visit(const AST_CONSTRUCTOR_CALL *node) const noexcept override;
     160              : 
     161              :   [[nodiscard]] std::expected<std::monostate, Error>
     162              :   visit(const AST_AUTO_DECL *node) const noexcept override;
     163              : 
     164              :   [[nodiscard]] std::expected<std::monostate, Error>
     165              :   visit(const AST_VAR_TYPED_DECL *node) const noexcept override;
     166              : 
     167              :   [[nodiscard]] std::expected<std::monostate, Error>
     168              :   visit(const AST_VAR_CALL *node) const noexcept override;
     169              : 
     170              :   [[nodiscard]] std::expected<std::monostate, Error>
     171              :   visit(const AST_CHAINED *node) const noexcept override;
     172              : 
     173              :   [[nodiscard]] std::expected<std::monostate, Error>
     174              :   visit(const Tree *tree) const noexcept override;
     175              : 
     176              :   [[nodiscard]] std::expected<std::monostate, Error>
     177            0 :   transform(const Tree *tree) const noexcept {
     178            0 :     return visit(tree);
     179            0 :   }
     180              : };
     181              : 
     182              : } // namespace nicole
     183              : 
     184              : #endif
        

Generated by: LCOV version 2.0-1