From 953e1548b64772abf483190112b6686526dd4780 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Mon, 17 Feb 2020 19:08:25 +0100
Subject: [PATCH] Rename declarations in view of variable grammar declaration
 changes

`let_declaration` -> `fct_declaration`
`declaration`     -> `var_declaration`
---
 src/algebra/CRSMatrix.hpp                     |  3 +-
 src/algebra/SparseMatrixDescriptor.hpp        |  6 +-
 src/algebra/TinyMatrix.hpp                    | 15 ++--
 src/algebra/TinyVector.hpp                    | 12 ++-
 src/algebra/Vector.hpp                        |  6 +-
 src/language/ASTBuilder.cpp                   |  6 +-
 src/language/ASTNodeDataTypeBuilder.cpp       |  4 +-
 ...TNodeDeclarationToAffectationConverter.cpp |  2 +-
 .../ASTSymbolInitializationChecker.cpp        |  6 +-
 src/language/ASTSymbolTableBuilder.cpp        |  4 +-
 src/language/CFunctionEmbedderTable.hpp       |  3 +-
 src/language/FunctionTable.hpp                |  6 +-
 src/language/PEGGrammar.hpp                   | 27 +++---
 src/language/PugsParser.cpp                   |  4 +-
 .../node_processor/ExecutionPolicy.hpp        |  6 +-
 src/mesh/ItemId.hpp                           |  2 +-
 src/mesh/ItemToItemMatrix.hpp                 |  9 +-
 src/mesh/ItemValue.hpp                        |  6 +-
 src/mesh/SubItemValuePerItem.hpp              | 12 ++-
 src/utils/Array.hpp                           |  3 +-
 src/utils/CastArray.hpp                       |  3 +-
 tests/mpi_test_Messenger.cpp                  |  2 +-
 tests/test_ASTBuilder.cpp                     | 38 ++++-----
 tests/test_ASTDotPrinter.cpp                  |  2 +-
 ...st_ASTNodeAffectationExpressionBuilder.cpp |  4 +-
 ...ASTNodeBinaryOperatorExpressionBuilder.cpp |  4 +-
 ...test_ASTNodeCFunctionExpressionBuilder.cpp |  4 +-
 tests/test_ASTNodeDataTypeBuilder.cpp         | 84 +++++++++----------
 tests/test_ASTNodeDataTypeFlattener.cpp       | 12 +--
 ...TNodeDeclarationToAffectationConverter.cpp |  2 +-
 tests/test_ASTNodeEmptyBlockCleaner.cpp       |  2 +-
 tests/test_ASTNodeExpressionBuilder.cpp       |  2 +-
 ...odeFunctionEvaluationExpressionBuilder.cpp |  2 +-
 .../test_ASTNodeFunctionExpressionBuilder.cpp | 12 +--
 tests/test_ASTNodeIncDecExpressionBuilder.cpp |  4 +-
 ...STNodeListAffectationExpressionBuilder.cpp |  8 +-
 tests/test_ASTNodeListProcessor.cpp           |  2 +-
 tests/test_ASTNodeTypeCleaner.cpp             |  2 +-
 ..._ASTNodeUnaryOperatorExpressionBuilder.cpp |  2 +-
 tests/test_ASTPrinter.cpp                     |  6 +-
 tests/test_AffectationProcessor.cpp           |  6 +-
 tests/test_AffectationToStringProcessor.cpp   |  2 +-
 tests/test_ArraySubscriptProcessor.cpp        |  8 +-
 .../test_BinaryExpressionProcessor_utils.hpp  |  2 +-
 tests/test_CFunctionProcessor.cpp             |  4 +-
 tests/test_ConcatExpressionProcessor.cpp      |  2 +-
 tests/test_DoWhileProcessor.cpp               |  2 +-
 tests/test_ForProcessor.cpp                   |  2 +-
 tests/test_FunctionProcessor.cpp              |  4 +-
 tests/test_IfProcessor.cpp                    |  2 +-
 tests/test_IncDecExpressionProcessor.cpp      |  2 +-
 tests/test_ListAffectationProcessor.cpp       |  6 +-
 tests/test_NameProcessor.cpp                  |  2 +-
 tests/test_OStreamProcessor.cpp               |  2 +-
 tests/test_TupleToVectorProcessor.cpp         |  8 +-
 tests/test_UnaryExpressionProcessor.cpp       |  2 +-
 tests/test_WhileProcessor.cpp                 |  2 +-
 57 files changed, 214 insertions(+), 183 deletions(-)

diff --git a/src/algebra/CRSMatrix.hpp b/src/algebra/CRSMatrix.hpp
index 740343cd6..b8a0f0a98 100644
--- a/src/algebra/CRSMatrix.hpp
+++ b/src/algebra/CRSMatrix.hpp
@@ -31,7 +31,8 @@ class CRSMatrix
   }
 
   template <typename DataType2>
-  Vector<MutableDataType> operator*(const Vector<DataType2>& x) const
+  Vector<MutableDataType>
+  operator*(const Vector<DataType2>& x) const
   {
     static_assert(std::is_same<std::remove_const_t<DataType>, std::remove_const_t<DataType2>>(),
                   "Cannot multiply matrix and vector of different type");
diff --git a/src/algebra/SparseMatrixDescriptor.hpp b/src/algebra/SparseMatrixDescriptor.hpp
index badfb9630..6150fd450 100644
--- a/src/algebra/SparseMatrixDescriptor.hpp
+++ b/src/algebra/SparseMatrixDescriptor.hpp
@@ -28,14 +28,16 @@ class SparseMatrixDescriptor
       return m_id_value_map.size();
     }
 
-    const DataType& operator[](const IndexType& j) const
+    const DataType&
+    operator[](const IndexType& j) const
     {
       auto i_value = m_id_value_map.find(j);
       Assert(i_value != m_id_value_map.end());
       return i_value->second;
     }
 
-    DataType& operator[](const IndexType& j)
+    DataType&
+    operator[](const IndexType& j)
     {
       auto i_value = m_id_value_map.find(j);
       if (i_value != m_id_value_map.end()) {
diff --git a/src/algebra/TinyMatrix.hpp b/src/algebra/TinyMatrix.hpp
index 9ca3746c7..5949d3cf4 100644
--- a/src/algebra/TinyMatrix.hpp
+++ b/src/algebra/TinyMatrix.hpp
@@ -20,7 +20,8 @@ class TinyMatrix
   static_assert((N > 0), "TinyMatrix size must be strictly positive");
 
   PUGS_FORCEINLINE
-  constexpr size_t _index(const size_t& i, const size_t& j) const noexcept   // LCOV_EXCL_LINE (due to forced inline)
+  constexpr size_t
+  _index(const size_t& i, const size_t& j) const noexcept   // LCOV_EXCL_LINE (due to forced inline)
   {
     return i * N + j;
   }
@@ -48,14 +49,16 @@ class TinyMatrix
   }
 
   PUGS_INLINE
-  constexpr friend TinyMatrix operator*(const T& t, const TinyMatrix& A)
+  constexpr friend TinyMatrix
+  operator*(const T& t, const TinyMatrix& A)
   {
     TinyMatrix B = A;
     return B *= t;
   }
 
   PUGS_INLINE
-  constexpr friend TinyMatrix operator*(const T& t, TinyMatrix&& A)
+  constexpr friend TinyMatrix
+  operator*(const T& t, TinyMatrix&& A)
   {
     return std::move(A *= t);
   }
@@ -71,7 +74,8 @@ class TinyMatrix
   }
 
   PUGS_INLINE
-  constexpr TinyMatrix operator*(const TinyMatrix& B) const
+  constexpr TinyMatrix
+  operator*(const TinyMatrix& B) const
   {
     const TinyMatrix& A = *this;
     TinyMatrix AB;
@@ -88,7 +92,8 @@ class TinyMatrix
   }
 
   PUGS_INLINE
-  constexpr TinyVector<N, T> operator*(const TinyVector<N, T>& x) const
+  constexpr TinyVector<N, T>
+  operator*(const TinyVector<N, T>& x) const
   {
     const TinyMatrix& A = *this;
     TinyVector<N, T> Ax;
diff --git a/src/algebra/TinyVector.hpp b/src/algebra/TinyVector.hpp
index 187c405ee..1f8cf48fb 100644
--- a/src/algebra/TinyVector.hpp
+++ b/src/algebra/TinyVector.hpp
@@ -88,14 +88,16 @@ class TinyVector
   }
 
   PUGS_INLINE
-  constexpr friend TinyVector operator*(const T& t, const TinyVector& v)
+  constexpr friend TinyVector
+  operator*(const T& t, const TinyVector& v)
   {
     TinyVector w = v;
     return w *= t;
   }
 
   PUGS_INLINE
-  constexpr friend TinyVector operator*(const T& t, TinyVector&& v)
+  constexpr friend TinyVector
+  operator*(const T& t, TinyVector&& v)
   {
     v *= t;
     return std::move(v);
@@ -185,14 +187,16 @@ class TinyVector
   }
 
   PUGS_INLINE
-  constexpr T& operator[](const size_t& i) noexcept(NO_ASSERT)
+  constexpr T&
+  operator[](const size_t& i) noexcept(NO_ASSERT)
   {
     Assert(i < N);
     return m_values[i];
   }
 
   PUGS_INLINE
-  constexpr const T& operator[](const size_t& i) const noexcept(NO_ASSERT)
+  constexpr const T&
+  operator[](const size_t& i) const noexcept(NO_ASSERT)
   {
     Assert(i < N);
     return m_values[i];
diff --git a/src/algebra/Vector.hpp b/src/algebra/Vector.hpp
index 43865dae1..ce0303948 100644
--- a/src/algebra/Vector.hpp
+++ b/src/algebra/Vector.hpp
@@ -33,7 +33,8 @@ class Vector   // LCOV_EXCL_LINE
     return x_copy;
   }
 
-  friend Vector operator*(const DataType& a, const Vector& x)
+  friend Vector
+  operator*(const DataType& a, const Vector& x)
   {
     Vector<std::remove_const_t<DataType>> y = copy(x);
     return y *= a;
@@ -130,7 +131,8 @@ class Vector   // LCOV_EXCL_LINE
   }
 
   PUGS_INLINE
-  DataType& operator[](const index_type& i) const noexcept(NO_ASSERT)
+  DataType&
+  operator[](const index_type& i) const noexcept(NO_ASSERT)
   {
     return m_values[i];
   }
diff --git a/src/language/ASTBuilder.cpp b/src/language/ASTBuilder.cpp
index 6a90a29c5..67ef30cd2 100644
--- a/src/language/ASTBuilder.cpp
+++ b/src/language/ASTBuilder.cpp
@@ -154,7 +154,7 @@ struct ASTBuilder::simplify_statement_block : parse_tree::apply<ASTBuilder::simp
   transform(std::unique_ptr<ASTNode>& n, States&&... st)
   {
     if ((n->is_type<language::statement_block>() or n->is_type<language::block>()) and (n->children.size() == 1)) {
-      if (not n->children[0]->is_type<language::declaration>()) {
+      if (not n->children[0]->is_type<language::var_declaration>()) {
         n = std::move(n->children.back());
         transform(n, st...);
       } else {
@@ -250,8 +250,8 @@ using selector = parse_tree::selector<
                                 language::cout_kw,
                                 language::cerr_kw,
                                 language::clog_kw,
-                                language::declaration,
-                                language::let_declaration,
+                                language::var_declaration,
+                                language::fct_declaration,
                                 language::type_mapping,
                                 language::function_definition,
                                 language::if_statement,
diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp
index 5bac1b114..f01f50d82 100644
--- a/src/language/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ASTNodeDataTypeBuilder.cpp
@@ -109,13 +109,13 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) const
         n.m_data_type = ASTNodeDataType::string_t;
       } else if (n.is_type<language::cout_kw>() or n.is_type<language::cerr_kw>() or n.is_type<language::clog_kw>()) {
         n.m_data_type = ASTNodeDataType::void_t;
-      } else if (n.is_type<language::declaration>()) {
+      } else if (n.is_type<language::var_declaration>()) {
         auto& type_node = *(n.children[0]);
         auto& name_node = *(n.children[1]);
 
         type_node.m_data_type = _buildDeclarationNodeDataTypes(type_node, name_node);
         n.m_data_type         = type_node.m_data_type;
-      } else if (n.is_type<language::let_declaration>()) {
+      } else if (n.is_type<language::fct_declaration>()) {
         n.children[0]->m_data_type = ASTNodeDataType::function_t;
 
         const std::string& symbol = n.children[0]->string();
diff --git a/src/language/ASTNodeDeclarationToAffectationConverter.cpp b/src/language/ASTNodeDeclarationToAffectationConverter.cpp
index 42160e798..aa790cb91 100644
--- a/src/language/ASTNodeDeclarationToAffectationConverter.cpp
+++ b/src/language/ASTNodeDeclarationToAffectationConverter.cpp
@@ -6,7 +6,7 @@
 void
 ASTNodeDeclarationToAffectationConverter::_convertNodeDeclaration(ASTNode& n)
 {
-  if (n.is_type<language::declaration>()) {
+  if (n.is_type<language::var_declaration>()) {
     if (n.children.size() == 3) {
       n.children[0] = std::move(n.children[1]);
       n.children[1] = std::move(n.children[2]);
diff --git a/src/language/ASTSymbolInitializationChecker.cpp b/src/language/ASTSymbolInitializationChecker.cpp
index c5cad3347..dcd8ca5e5 100644
--- a/src/language/ASTSymbolInitializationChecker.cpp
+++ b/src/language/ASTSymbolInitializationChecker.cpp
@@ -7,7 +7,7 @@
 void
 ASTSymbolInitializationChecker::_checkSymbolInitialization(ASTNode& node)
 {
-  if (node.is_type<language::declaration>()) {
+  if (node.is_type<language::var_declaration>()) {
     auto check_if_initialized = [&](ASTNode& name_node) {
       const std::string& symbol = name_node.string();
       auto [i_symbol, found]    = node.m_symbol_table->find(symbol, name_node.begin());
@@ -26,7 +26,7 @@ ASTSymbolInitializationChecker::_checkSymbolInitialization(ASTNode& node)
         check_if_initialized(*child_node);
       }
     }
-  } else if (node.is_type<language::let_declaration>()) {
+  } else if (node.is_type<language::fct_declaration>()) {
     const std::string& symbol = node.children[0]->string();
     auto [i_symbol, found]    = node.m_symbol_table->find(symbol, node.children[0]->begin());
     Assert(found, "unexpected error, should have been detected through declaration checking");
@@ -83,7 +83,7 @@ ASTSymbolInitializationChecker::_checkSymbolInitialization(ASTNode& node)
     }
   }
 
-  if (not(node.is_type<language::declaration>() or node.is_type<language::let_declaration>() or
+  if (not(node.is_type<language::var_declaration>() or node.is_type<language::fct_declaration>() or
           node.is_type<language::eq_op>())) {
     for (auto& child : node.children) {
       this->_checkSymbolInitialization(*child);
diff --git a/src/language/ASTSymbolTableBuilder.cpp b/src/language/ASTSymbolTableBuilder.cpp
index 7db59aae4..3a326b539 100644
--- a/src/language/ASTSymbolTableBuilder.cpp
+++ b/src/language/ASTSymbolTableBuilder.cpp
@@ -15,7 +15,7 @@ ASTSymbolTableBuilder::buildSymbolTable(ASTNode& n, std::shared_ptr<SymbolTable>
         this->buildSymbolTable(*child, block_symbol_table);
       }
     }
-  } else if (n.is_type<language::let_declaration>()) {
+  } else if (n.is_type<language::fct_declaration>()) {
     std::shared_ptr local_symbol_table =
       std::make_shared<SymbolTable>(symbol_table, std::make_shared<SymbolTable::Context>());
 
@@ -39,7 +39,7 @@ ASTSymbolTableBuilder::buildSymbolTable(ASTNode& n, std::shared_ptr<SymbolTable>
   } else {
     n.m_symbol_table = symbol_table;
     if (n.has_content()) {
-      if (n.is_type<language::declaration>()) {
+      if (n.is_type<language::var_declaration>()) {
         auto register_symbol = [&](const ASTNode& argument_node) {
           auto [i_symbol, success] = symbol_table->add(argument_node.string(), argument_node.begin());
           if (not success) {
diff --git a/src/language/CFunctionEmbedderTable.hpp b/src/language/CFunctionEmbedderTable.hpp
index e2a7c5be6..b67f2afab 100644
--- a/src/language/CFunctionEmbedderTable.hpp
+++ b/src/language/CFunctionEmbedderTable.hpp
@@ -21,7 +21,8 @@ class CFunctionEmbedderTable
   }
 
   PUGS_INLINE
-  const std::shared_ptr<ICFunctionEmbedder>& operator[](size_t function_id) const
+  const std::shared_ptr<ICFunctionEmbedder>&
+  operator[](size_t function_id) const
   {
     Assert(function_id < m_c_function_embedder_list.size());
     return m_c_function_embedder_list[function_id];
diff --git a/src/language/FunctionTable.hpp b/src/language/FunctionTable.hpp
index f7a3c27fc..654317ffe 100644
--- a/src/language/FunctionTable.hpp
+++ b/src/language/FunctionTable.hpp
@@ -57,14 +57,16 @@ class FunctionTable
   }
 
   PUGS_INLINE
-  FunctionDescriptor& operator[](size_t function_id)
+  FunctionDescriptor&
+  operator[](size_t function_id)
   {
     Assert(function_id < m_function_descriptor_list.size());
     return m_function_descriptor_list[function_id];
   }
 
   PUGS_INLINE
-  const FunctionDescriptor& operator[](size_t function_id) const
+  const FunctionDescriptor&
+  operator[](size_t function_id) const
   {
     Assert(function_id < m_function_descriptor_list.size());
     return m_function_descriptor_list[function_id];
diff --git a/src/language/PEGGrammar.hpp b/src/language/PEGGrammar.hpp
index 6a8e033fb..deed6014f 100644
--- a/src/language/PEGGrammar.hpp
+++ b/src/language/PEGGrammar.hpp
@@ -71,13 +71,12 @@ struct vector_type : seq< R_set, ignored, one< '^' >, ignored, integer >{};
 
 struct basic_type : sor< scalar_type, string_type >{};
 
+struct type_name;
 struct type_specifier : sor< vector_type, basic_type >{};
 
 struct TYPE_SPECIFIER : seq< type_specifier, ignored >{};
 
-struct type_expression : list_must< TYPE_SPECIFIER, seq< one< '*' >, ignored > >{};
-
-struct TYPE_EXPRESSION : seq< type_expression, ignored >{};
+struct type_expression : list< TYPE_SPECIFIER, seq< one< '*' >, ignored > >{};
 
 struct and_kw : TAO_PEGTL_KEYWORD("and") {};
 struct or_kw : TAO_PEGTL_KEYWORD("or") {};
@@ -118,13 +117,15 @@ struct cout_kw : TAO_PEGTL_KEYWORD("cout") {};
 struct cerr_kw : TAO_PEGTL_KEYWORD("cerr") {};
 struct clog_kw : TAO_PEGTL_KEYWORD("clog") {};
 
-struct keywork : sor < basic_type, import_kw, true_kw, false_kw, let_kw, do_kw, while_kw, for_kw, if_kw, else_kw, and_kw, or_kw, xor_kw, break_kw, continue_kw, cout_kw, cerr_kw, clog_kw > {};
+struct keywork : sor < basic_type, import_kw, true_kw, false_kw, let_kw, do_kw, while_kw, for_kw, if_kw, else_kw, and_kw, or_kw, xor_kw, not_kw, break_kw, continue_kw, cout_kw, cerr_kw, clog_kw > {};
 
 struct identifier_minus_keyword : minus< identifier, keywork > {};
 
 struct module_name : identifier_minus_keyword {};
 struct MODULE_NAME : seq< module_name, ignored > {};
 
+struct type_name : identifier_minus_keyword {};
+
 struct name : identifier_minus_keyword {};
 struct NAME : seq< name, ignored > {};
 
@@ -235,15 +236,15 @@ struct affectation : seq< sor< lvalue_expression, lvalue_list >, if_must< affect
 
 struct name_list;
 
-struct declaration : if_must< TYPE_EXPRESSION, sor< NAME, name_list>, opt< if_must< seq< one< '=' >, ignored >, sor< expression_list, expression > > > >{};
+struct var_declaration : seq< type_expression, sor< NAME, name_list>, opt< if_must< seq< one< '=' >, ignored >, sor< expression_list, expression > > > >{};
 
-struct type_mapping : seq< TYPE_EXPRESSION, RIGHT_ARROW, TYPE_EXPRESSION >{};
+struct type_mapping : seq< type_expression, RIGHT_ARROW, type_expression >{};
 
 struct name_list : seq< open_parent, list_must< NAME, COMMA >, close_parent >{};
 
 struct function_definition : seq< sor< name_list, NAME >, RIGHT_ARROW, sor< expression_list, expression > >{};
 
-struct let_declaration : if_must< LET, NAME, COLUMN, type_mapping, COMMA, function_definition >{};
+struct fct_declaration : if_must< LET, NAME, COLUMN, type_mapping, COMMA, function_definition >{};
 
 struct open_brace : seq< one< '{' >, ignored >{};
 struct close_brace : seq< one< '}' >, ignored >{};
@@ -265,7 +266,7 @@ struct do_while_statement : if_must< DO, statement_block, WHILE, parented_expres
 
 struct while_statement : if_must< WHILE, parented_expression, statement_block >{};
 
-struct for_init : opt< sor< declaration, affectation, expression > >{};
+struct for_init : opt< sor< var_declaration, affectation, expression > >{};
 struct for_test : opt< sor< affectation, expression > >{};
 struct for_post : opt< sor< affectation, expression > >{};
 
@@ -277,18 +278,18 @@ struct ostream_object : seq< sor< cout_kw, cerr_kw, clog_kw >, ignored >{};
 struct ostream_statement : seq< ostream_object, star< if_must< shift_left_op, expression, ignored > > >{};
 
 struct instruction
-    : sor<if_must< let_declaration, semicol >,
-          if_must< declaration, semicol >,
-          if_must< affectation, semicol >,
-          if_statement,
+    : sor<if_statement,
           if_must<do_while_statement, semicol>,
           while_statement,
           for_statement,
           if_must< ostream_statement, semicol >,
           if_must< BREAK, semicol >,
           if_must< CONTINUE, semicol >,
-          if_must< expression, semicol >,
           block,
+          if_must< var_declaration, semicol >,
+          if_must< fct_declaration, semicol >,
+          if_must< affectation, semicol >,
+          if_must< expression, semicol >,
           semicol>
 {};
 
diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp
index ea4a37cd5..84726760b 100644
--- a/src/language/PugsParser.cpp
+++ b/src/language/PugsParser.cpp
@@ -78,8 +78,8 @@ parser(const std::string& filename)
     // optimizations
     ASTNodeDeclarationToAffectationConverter{*root_node};
 
-    ASTNodeTypeCleaner<language::declaration>{*root_node};
-    ASTNodeTypeCleaner<language::let_declaration>{*root_node};
+    ASTNodeTypeCleaner<language::var_declaration>{*root_node};
+    ASTNodeTypeCleaner<language::fct_declaration>{*root_node};
 
     ASTNodeEmptyBlockCleaner{*root_node};
 
diff --git a/src/language/node_processor/ExecutionPolicy.hpp b/src/language/node_processor/ExecutionPolicy.hpp
index df0eb9727..f2845d9f5 100644
--- a/src/language/node_processor/ExecutionPolicy.hpp
+++ b/src/language/node_processor/ExecutionPolicy.hpp
@@ -35,12 +35,14 @@ class ExecutionPolicy
       return m_shared_values->size();
     }
 
-    DataVariant& operator[](size_t i)
+    DataVariant&
+    operator[](size_t i)
     {
       return (*m_shared_values)[i];
     }
 
-    const DataVariant& operator[](size_t i) const
+    const DataVariant&
+    operator[](size_t i) const
     {
       return (*m_shared_values)[i];
     }
diff --git a/src/mesh/ItemId.hpp b/src/mesh/ItemId.hpp
index de7790668..3e03f4e5d 100644
--- a/src/mesh/ItemId.hpp
+++ b/src/mesh/ItemId.hpp
@@ -15,7 +15,7 @@ class ItemIdT
 
  public:
   PUGS_INLINE
-  constexpr operator const base_type&() const
+  constexpr operator const base_type &() const
   {
     return m_id;
   }
diff --git a/src/mesh/ItemToItemMatrix.hpp b/src/mesh/ItemToItemMatrix.hpp
index 04b8a7b74..e76f25a77 100644
--- a/src/mesh/ItemToItemMatrix.hpp
+++ b/src/mesh/ItemToItemMatrix.hpp
@@ -29,7 +29,8 @@ class ItemToItemMatrix
     }
 
     PUGS_INLINE
-    TargetItemId operator[](const size_t& j) const
+    TargetItemId
+    operator[](const size_t& j) const
     {
       return m_row(j);
     }
@@ -73,14 +74,16 @@ class ItemToItemMatrix
   }
 
   PUGS_INLINE
-  auto operator[](const SourceItemId& source_id) const
+  auto
+  operator[](const SourceItemId& source_id) const
   {
     using RowType = decltype(m_connectivity_matrix.rowConst(source_id));
     return SubItemList<RowType>(m_connectivity_matrix.rowConst(source_id));
   }
 
   template <typename IndexType>
-  PUGS_INLINE const auto& operator[](const IndexType& source_id) const
+  PUGS_INLINE const auto&
+  operator[](const IndexType& source_id) const
   {
     static_assert(std::is_same_v<IndexType, SourceItemId>, "ItemToItemMatrix must be indexed using correct ItemId");
     using RowType = decltype(m_connectivity_matrix.rowConst(source_id));
diff --git a/src/mesh/ItemValue.hpp b/src/mesh/ItemValue.hpp
index 81301f7a3..4de89ce34 100644
--- a/src/mesh/ItemValue.hpp
+++ b/src/mesh/ItemValue.hpp
@@ -85,14 +85,16 @@ class ItemValue
   // Following Kokkos logic, these classes are view and const view does allow
   // changes in data
   PUGS_FORCEINLINE
-  DataType& operator[](const ItemId& i) const noexcept(NO_ASSERT)
+  DataType&
+  operator[](const ItemId& i) const noexcept(NO_ASSERT)
   {
     Assert(this->isBuilt());
     return m_values[i];
   }
 
   template <typename IndexType>
-  DataType& operator[](const IndexType&) const noexcept(NO_ASSERT)
+  DataType&
+  operator[](const IndexType&) const noexcept(NO_ASSERT)
   {
     static_assert(std::is_same_v<IndexType, ItemId>, "ItemValue must be indexed by ItemId");
   }
diff --git a/src/mesh/SubItemValuePerItem.hpp b/src/mesh/SubItemValuePerItem.hpp
index a115bdede..f4d40a0e5 100644
--- a/src/mesh/SubItemValuePerItem.hpp
+++ b/src/mesh/SubItemValuePerItem.hpp
@@ -59,14 +59,16 @@ class SubItemValuePerItem
 
    public:
     PUGS_INLINE
-    const DataType& operator[](const size_t& i) const noexcept(NO_ASSERT)
+    const DataType&
+    operator[](const size_t& i) const noexcept(NO_ASSERT)
     {
       Assert(i < m_size);
       return m_sub_values[i];
     }
 
     PUGS_FORCEINLINE
-    DataType& operator[](const size_t& i) noexcept(NO_ASSERT)
+    DataType&
+    operator[](const size_t& i) noexcept(NO_ASSERT)
     {
       Assert(i < m_size);
       return m_sub_values[i];
@@ -130,14 +132,16 @@ class SubItemValuePerItem
   // Following Kokkos logic, these classes are view and const view does allow
   // changes in data
   PUGS_FORCEINLINE
-  DataType& operator[](const size_t& i) const noexcept(NO_ASSERT)
+  DataType&
+  operator[](const size_t& i) const noexcept(NO_ASSERT)
   {
     Assert(this->isBuilt());
     return m_values[i];
   }
 
   template <typename IndexType>
-  DataType& operator[](const IndexType& i) const noexcept(NO_ASSERT)
+  DataType&
+  operator[](const IndexType& i) const noexcept(NO_ASSERT)
   {
     static_assert(std::is_same_v<IndexType, size_t>, "Access to SubItemValuePerItem's array must be indexed by "
                                                      "size_t");
diff --git a/src/utils/Array.hpp b/src/utils/Array.hpp
index eaf368b3e..a04d78a25 100644
--- a/src/utils/Array.hpp
+++ b/src/utils/Array.hpp
@@ -43,7 +43,8 @@ class Array
   friend PUGS_INLINE Array<DataType2> encapsulate(const Kokkos::View<DataType2*, RT...>& values);
 
   PUGS_INLINE
-  DataType& operator[](const index_type& i) const noexcept(NO_ASSERT)
+  DataType&
+  operator[](const index_type& i) const noexcept(NO_ASSERT)
   {
     Assert(i < m_values.extent(0));
     return m_values[i];
diff --git a/src/utils/CastArray.hpp b/src/utils/CastArray.hpp
index 5202d8862..274f5d8d4 100644
--- a/src/utils/CastArray.hpp
+++ b/src/utils/CastArray.hpp
@@ -26,7 +26,8 @@ class CastArray
   }
 
   PUGS_INLINE
-  CastDataType& operator[](const size_t& i) const
+  CastDataType&
+  operator[](const size_t& i) const
   {
     Assert(i < m_size);
     return m_values[i];
diff --git a/tests/mpi_test_Messenger.cpp b/tests/mpi_test_Messenger.cpp
index 4d446ba65..4fe260f42 100644
--- a/tests/mpi_test_Messenger.cpp
+++ b/tests/mpi_test_Messenger.cpp
@@ -22,7 +22,7 @@ struct integer
   {
     return m_int;
   }
-  operator const int&() const
+  operator const int &() const
   {
     return m_int;
   }
diff --git a/tests/test_ASTBuilder.cpp b/tests/test_ASTBuilder.cpp
index 505528c00..bf64540f3 100644
--- a/tests/test_ASTBuilder.cpp
+++ b/tests/test_ASTBuilder.cpp
@@ -35,23 +35,23 @@ string s = "foo";
 
       std::string_view result = R"(
 (root)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::N_set)
  |   +-(language::name:n)
  |   `-(language::integer:2)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::Z_set)
  |   +-(language::name:z)
  |   `-(language::integer:3)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::R_set)
  |   +-(language::name:r)
  |   `-(language::real:2.3e-5)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::B_set)
  |   +-(language::name:b)
  |   `-(language::false_kw)
- `-(language::declaration)
+ `-(language::var_declaration)
      +-(language::string_type)
      +-(language::name:s)
      `-(language::literal:"foo")
@@ -71,31 +71,31 @@ string s; s = "foo";
 
       std::string_view result = R"(
 (root)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::N_set)
  |   `-(language::name:n)
  +-(language::eq_op)
  |   +-(language::name:n)
  |   `-(language::integer:2)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::Z_set)
  |   `-(language::name:z)
  +-(language::eq_op)
  |   +-(language::name:z)
  |   `-(language::integer:3)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::R_set)
  |   `-(language::name:r)
  +-(language::eq_op)
  |   +-(language::name:r)
  |   `-(language::real:2.3e-5)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::B_set)
  |   `-(language::name:b)
  +-(language::eq_op)
  |   +-(language::name:b)
  |   `-(language::false_kw)
- +-(language::declaration)
+ +-(language::var_declaration)
  |   +-(language::string_type)
  |   `-(language::name:s)
  `-(language::eq_op)
@@ -433,12 +433,12 @@ if (a > 0) {
      |   +-(language::name:a)
      |   `-(language::integer:0)
      +-(language::block)
-     |   `-(language::declaration)
+     |   `-(language::var_declaration)
      |       +-(language::R_set)
      |       +-(language::name:b)
      |       `-(language::name:a)
      `-(language::block)
-         `-(language::declaration)
+         `-(language::var_declaration)
              +-(language::R_set)
              +-(language::name:c)
              `-(language::multiply_op)
@@ -466,12 +466,12 @@ if (a > 0) {
      |   +-(language::name:a)
      |   `-(language::integer:0)
      +-(language::block)
-     |   `-(language::declaration)
+     |   `-(language::var_declaration)
      |       +-(language::R_set)
      |       +-(language::name:b)
      |       `-(language::name:a)
      `-(language::block)
-         +-(language::declaration)
+         +-(language::var_declaration)
          |   +-(language::R_set)
          |   +-(language::name:c)
          |   `-(language::multiply_op)
@@ -501,14 +501,14 @@ if (a > 0) {
      |   +-(language::name:a)
      |   `-(language::integer:0)
      +-(language::block)
-     |   +-(language::declaration)
+     |   +-(language::var_declaration)
      |   |   +-(language::R_set)
      |   |   +-(language::name:b)
      |   |   `-(language::name:a)
      |   `-(language::unary_plusplus)
      |       `-(language::name:b)
      `-(language::block)
-         `-(language::declaration)
+         `-(language::var_declaration)
              +-(language::R_set)
              +-(language::name:c)
              `-(language::multiply_op)
@@ -529,7 +529,7 @@ for(N i=0; i<10; ++i) {
       std::string_view result = R"(
 (root)
  `-(language::for_statement)
-     +-(language::declaration)
+     +-(language::var_declaration)
      |   +-(language::N_set)
      |   +-(language::name:i)
      |   `-(language::integer:0)
@@ -557,7 +557,7 @@ for(N i=0; i<10; ++i) {
       std::string_view result = R"(
 (root)
  `-(language::for_statement)
-     +-(language::declaration)
+     +-(language::var_declaration)
      |   +-(language::N_set)
      |   +-(language::name:i)
      |   `-(language::integer:0)
@@ -570,7 +570,7 @@ for(N i=0; i<10; ++i) {
          +-(language::pluseq_op)
          |   +-(language::name:i)
          |   `-(language::integer:3)
-         `-(language::declaration)
+         `-(language::var_declaration)
              +-(language::R_set)
              +-(language::name:j)
              `-(language::divide_op)
diff --git a/tests/test_ASTDotPrinter.cpp b/tests/test_ASTDotPrinter.cpp
index 486db0b4a..c9f245802 100644
--- a/tests/test_ASTDotPrinter.cpp
+++ b/tests/test_ASTDotPrinter.cpp
@@ -31,7 +31,7 @@ digraph parse_tree
 {
   x0 [ label="root \nundefined" ]
   x0 -> { x1 }
-  x1 [ label="language::declaration\nN n = 2 + 3\nundefined" ]
+  x1 [ label="language::var_declaration\nN n = 2 + 3\nundefined" ]
   x1 -> { x2, x3, x4 }
   x2 [ label="language::N_set\nN\nundefined" ]
   x3 [ label="language::name\nn\nundefined" ]
diff --git a/tests/test_ASTNodeAffectationExpressionBuilder.cpp b/tests/test_ASTNodeAffectationExpressionBuilder.cpp
index 15c9af9d1..3e3f3168c 100644
--- a/tests/test_ASTNodeAffectationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeAffectationExpressionBuilder.cpp
@@ -31,7 +31,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
@@ -54,7 +54,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                             \
                                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                      \
                                                                                               \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, expected_error);                      \
   }
diff --git a/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp b/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp
index c3c0d49f6..741182f8a 100644
--- a/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp
+++ b/tests/test_ASTNodeBinaryOperatorExpressionBuilder.cpp
@@ -31,7 +31,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
@@ -52,7 +52,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                  \
                                                                                    \
     ASTNodeDeclarationToAffectationConverter{*ast};                                \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                               \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                           \
                                                                                    \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, expected_output);          \
   }
diff --git a/tests/test_ASTNodeCFunctionExpressionBuilder.cpp b/tests/test_ASTNodeCFunctionExpressionBuilder.cpp
index fbc810423..665136bee 100644
--- a/tests/test_ASTNodeCFunctionExpressionBuilder.cpp
+++ b/tests/test_ASTNodeCFunctionExpressionBuilder.cpp
@@ -100,7 +100,7 @@ class CFunctionRegister
     ASTSymbolTableBuilder{*ast};                                                                    \
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
     std::stringstream ast_output;                                                                   \
@@ -123,7 +123,7 @@ class CFunctionRegister
     ASTSymbolTableBuilder{*ast};                                                                    \
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, Catch::Matchers::Contains(expected_error)); \
   }
 
diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index 496cd68cd..1a92afb70 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -237,7 +237,7 @@ R*B*N*string (x,b,n,s);
 
       std::string_view result = R"(
 (root:void)
- `-(language::declaration:typename)
+ `-(language::var_declaration:typename)
      +-(language::type_expression:typename)
      |   +-(language::R_set:typename)
      |   +-(language::B_set:typename)
@@ -337,7 +337,7 @@ let double : R^2 -> R^2, x -> 2*x;
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:double:function)
 )";
 
@@ -352,7 +352,7 @@ let square : R -> R^2, x -> (x, x*x);
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:square:function)
 )";
 
@@ -370,7 +370,7 @@ let weird : R^2*R -> R, (x,y) -> x[0]-y*x[1];
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:weird:function)
 )";
 
@@ -385,7 +385,7 @@ let substract : R*R -> R, (x,y) -> x-y;
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:substract:function)
 )";
 
@@ -400,7 +400,7 @@ let square : R -> R*R, x -> (x,x*x);
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:square:function)
 )";
 
@@ -415,7 +415,7 @@ let f : R -> R, x -> x;
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -430,7 +430,7 @@ let f : R -> R, (x) -> (x+2)/2;
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -445,7 +445,7 @@ let f : R -> R, x -> (x*x);
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -460,7 +460,7 @@ let f : R -> R, (x) -> (x+1);
 
         std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -476,7 +476,7 @@ let f : Z -> Z, z -> z-1;
 
       std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -491,7 +491,7 @@ let f : N -> N, x -> (x+1)/2;
 
       std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -506,7 +506,7 @@ let f : N*B -> B, (n,b) -> (n>3) and b;
 
       std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:f:function)
 )";
 
@@ -521,7 +521,7 @@ let cat : string*N -> string, (s,n) -> s+n;
 
       std::string_view result = R"(
 (root:void)
- `-(language::let_declaration:void)
+ `-(language::fct_declaration:void)
      `-(language::name:cat:function)
 )";
 
@@ -596,9 +596,9 @@ x = f(x);
 
         std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:f:function)
- +-(language::declaration:R^2)
+ +-(language::var_declaration:R^2)
  |   +-(language::vector_type:typename)
  |   |   +-(language::R_set:typename)
  |   |   `-(language::integer:2:Z)
@@ -628,9 +628,9 @@ R x = incr(3);
 
         std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:incr:function)
- `-(language::declaration:R)
+ `-(language::var_declaration:R)
      +-(language::R_set:typename)
      +-(language::name:x:R)
      `-(language::function_evaluation:R)
@@ -650,9 +650,9 @@ R diff = substract(3,2);
 
         std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:substract:function)
- `-(language::declaration:R)
+ `-(language::var_declaration:R)
      +-(language::R_set:typename)
      +-(language::name:diff:R)
      `-(language::function_evaluation:R)
@@ -675,9 +675,9 @@ Z z = incr(3);
 
       std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:incr:function)
- `-(language::declaration:Z)
+ `-(language::var_declaration:Z)
      +-(language::Z_set:typename)
      +-(language::name:z:Z)
      `-(language::function_evaluation:Z)
@@ -697,9 +697,9 @@ N n = double(3);
 
       std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:double:function)
- `-(language::declaration:N)
+ `-(language::var_declaration:N)
      +-(language::N_set:typename)
      +-(language::name:n:N)
      `-(language::function_evaluation:N)
@@ -719,9 +719,9 @@ B b = greater_than_2(3);
 
       std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:greater_than_2:function)
- `-(language::declaration:B)
+ `-(language::var_declaration:B)
      +-(language::B_set:typename)
      +-(language::name:b:B)
      `-(language::function_evaluation:B)
@@ -741,9 +741,9 @@ string s = cat("foo", "bar");
 
       std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:cat:function)
- `-(language::declaration:string)
+ `-(language::var_declaration:string)
      +-(language::string_type:typename)
      +-(language::name:s:string)
      `-(language::function_evaluation:string)
@@ -765,9 +765,9 @@ R*R (x,x2) = x_x2(3);
 
       std::string_view result = R"(
 (root:void)
- +-(language::let_declaration:void)
+ +-(language::fct_declaration:void)
  |   `-(language::name:x_x2:function)
- `-(language::declaration:typename)
+ `-(language::var_declaration:typename)
      +-(language::type_expression:typename)
      |   +-(language::R_set:typename)
      |   `-(language::R_set:typename)
@@ -831,7 +831,7 @@ for (N i=0; i<3; ++i){
     std::string_view result = R"(
 (root:void)
  `-(language::for_statement:void)
-     +-(language::declaration:N)
+     +-(language::var_declaration:N)
      |   +-(language::N_set:typename)
      |   +-(language::name:i:N)
      |   `-(language::integer:0:Z)
@@ -856,7 +856,7 @@ B b;
 
     std::string_view result = R"(
 (root:void)
- `-(language::declaration:B)
+ `-(language::var_declaration:B)
      +-(language::B_set:typename)
      `-(language::name:b:B)
 )";
@@ -872,7 +872,7 @@ N n;
 
     std::string_view result = R"(
 (root:void)
- `-(language::declaration:N)
+ `-(language::var_declaration:N)
      +-(language::N_set:typename)
      `-(language::name:n:N)
 )";
@@ -888,7 +888,7 @@ Z z;
 
     std::string_view result = R"(
 (root:void)
- `-(language::declaration:Z)
+ `-(language::var_declaration:Z)
      +-(language::Z_set:typename)
      `-(language::name:z:Z)
 )";
@@ -904,7 +904,7 @@ R r;
 
     std::string_view result = R"(
 (root:void)
- `-(language::declaration:R)
+ `-(language::var_declaration:R)
      +-(language::R_set:typename)
      `-(language::name:r:R)
 )";
@@ -920,7 +920,7 @@ string s;
 
     std::string_view result = R"(
 (root:void)
- `-(language::declaration:string)
+ `-(language::var_declaration:string)
      +-(language::string_type:typename)
      `-(language::name:s:string)
 )";
@@ -965,7 +965,7 @@ a = 1;
 
     std::string_view result = R"(
 (root:void)
- +-(language::declaration:N)
+ +-(language::var_declaration:N)
  |   +-(language::N_set:typename)
  |   `-(language::name:a:N)
  `-(language::eq_op:N)
@@ -985,7 +985,7 @@ a *= 1.2;
 
     std::string_view result = R"(
 (root:void)
- +-(language::declaration:N)
+ +-(language::var_declaration:N)
  |   +-(language::N_set:typename)
  |   +-(language::name:a:N)
  |   `-(language::integer:1:Z)
@@ -1006,7 +1006,7 @@ a /= 2;
 
     std::string_view result = R"(
 (root:void)
- +-(language::declaration:R)
+ +-(language::var_declaration:R)
  |   +-(language::R_set:typename)
  |   +-(language::name:a:R)
  |   `-(language::integer:3:Z)
@@ -1027,7 +1027,7 @@ a += 2;
 
     std::string_view result = R"(
 (root:void)
- +-(language::declaration:Z)
+ +-(language::var_declaration:Z)
  |   +-(language::Z_set:typename)
  |   +-(language::name:a:Z)
  |   `-(language::integer:3:Z)
@@ -1048,7 +1048,7 @@ a -= 2;
 
     std::string_view result = R"(
 (root:void)
- +-(language::declaration:Z)
+ +-(language::var_declaration:Z)
  |   +-(language::Z_set:typename)
  |   +-(language::name:a:Z)
  |   `-(language::integer:1:Z)
@@ -1087,7 +1087,7 @@ for (Z i=0; i<3; i += 1) { i += 2; }
     std::string_view result = R"(
 (root:void)
  `-(language::for_statement:void)
-     +-(language::declaration:Z)
+     +-(language::var_declaration:Z)
      |   +-(language::Z_set:typename)
      |   +-(language::name:i:Z)
      |   `-(language::integer:0:Z)
diff --git a/tests/test_ASTNodeDataTypeFlattener.cpp b/tests/test_ASTNodeDataTypeFlattener.cpp
index 0ffd646cb..eac325916 100644
--- a/tests/test_ASTNodeDataTypeFlattener.cpp
+++ b/tests/test_ASTNodeDataTypeFlattener.cpp
@@ -81,8 +81,8 @@ f(2);
       // optimizations
       ASTNodeDeclarationToAffectationConverter{*root_node};
 
-      ASTNodeTypeCleaner<language::declaration>{*root_node};
-      ASTNodeTypeCleaner<language::let_declaration>{*root_node};
+      ASTNodeTypeCleaner<language::var_declaration>{*root_node};
+      ASTNodeTypeCleaner<language::fct_declaration>{*root_node};
 
       REQUIRE(root_node->children[0]->is_type<language::function_evaluation>());
 
@@ -110,8 +110,8 @@ f(2);
       // optimizations
       ASTNodeDeclarationToAffectationConverter{*root_node};
 
-      ASTNodeTypeCleaner<language::declaration>{*root_node};
-      ASTNodeTypeCleaner<language::let_declaration>{*root_node};
+      ASTNodeTypeCleaner<language::var_declaration>{*root_node};
+      ASTNodeTypeCleaner<language::fct_declaration>{*root_node};
 
       REQUIRE(root_node->children[0]->is_type<language::function_evaluation>());
 
@@ -142,8 +142,8 @@ f(2);
       // optimizations
       ASTNodeDeclarationToAffectationConverter{*root_node};
 
-      ASTNodeTypeCleaner<language::declaration>{*root_node};
-      ASTNodeTypeCleaner<language::let_declaration>{*root_node};
+      ASTNodeTypeCleaner<language::var_declaration>{*root_node};
+      ASTNodeTypeCleaner<language::fct_declaration>{*root_node};
 
       REQUIRE(root_node->children[0]->is_type<language::function_evaluation>());
 
diff --git a/tests/test_ASTNodeDeclarationToAffectationConverter.cpp b/tests/test_ASTNodeDeclarationToAffectationConverter.cpp
index 5d9503d9b..115145a57 100644
--- a/tests/test_ASTNodeDeclarationToAffectationConverter.cpp
+++ b/tests/test_ASTNodeDeclarationToAffectationConverter.cpp
@@ -38,7 +38,7 @@ R z;
 
     std::string_view result = R"(
 (root)
- `-(language::declaration)
+ `-(language::var_declaration)
      +-(language::R_set)
      `-(language::name:z)
 )";
diff --git a/tests/test_ASTNodeEmptyBlockCleaner.cpp b/tests/test_ASTNodeEmptyBlockCleaner.cpp
index 5a8048662..18c84cbbf 100644
--- a/tests/test_ASTNodeEmptyBlockCleaner.cpp
+++ b/tests/test_ASTNodeEmptyBlockCleaner.cpp
@@ -31,7 +31,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeEmptyBlockCleaner{*ast};                                                                 \
                                                                                                     \
diff --git a/tests/test_ASTNodeExpressionBuilder.cpp b/tests/test_ASTNodeExpressionBuilder.cpp
index e2e14d267..c315caef9 100644
--- a/tests/test_ASTNodeExpressionBuilder.cpp
+++ b/tests/test_ASTNodeExpressionBuilder.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
     std::stringstream ast_output;                                                                   \
diff --git a/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp b/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp
index 5c97bf253..02ef25691 100644
--- a/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeFunctionEvaluationExpressionBuilder.cpp
@@ -32,7 +32,7 @@
     ASTSymbolTableBuilder{*ast};                                                                    \
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                                            \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
     std::stringstream ast_output;                                                                   \
diff --git a/tests/test_ASTNodeFunctionExpressionBuilder.cpp b/tests/test_ASTNodeFunctionExpressionBuilder.cpp
index 802e2eeb6..b44d99c1a 100644
--- a/tests/test_ASTNodeFunctionExpressionBuilder.cpp
+++ b/tests/test_ASTNodeFunctionExpressionBuilder.cpp
@@ -33,8 +33,8 @@
     ASTSymbolTableBuilder{*ast};                                                                    \
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                                            \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                                            \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
     std::stringstream ast_output;                                                                   \
@@ -56,8 +56,8 @@
     ASTSymbolTableBuilder{*ast};                                                   \
     ASTNodeDataTypeBuilder{*ast};                                                  \
                                                                                    \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                               \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                           \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                           \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                           \
     REQUIRE_THROWS_AS(ASTNodeExpressionBuilder{*ast}, parse_error);                \
   }
 
@@ -75,8 +75,8 @@
     ASTSymbolTableBuilder{*ast};                                                   \
     ASTNodeDataTypeBuilder{*ast};                                                  \
                                                                                    \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                               \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                           \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                           \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                           \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, error);                    \
   }
 
diff --git a/tests/test_ASTNodeIncDecExpressionBuilder.cpp b/tests/test_ASTNodeIncDecExpressionBuilder.cpp
index 7a68d8ca6..9f24a2e0c 100644
--- a/tests/test_ASTNodeIncDecExpressionBuilder.cpp
+++ b/tests/test_ASTNodeIncDecExpressionBuilder.cpp
@@ -31,7 +31,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
@@ -54,7 +54,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                             \
                                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                      \
                                                                                               \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, expected_error);                      \
   }
diff --git a/tests/test_ASTNodeListAffectationExpressionBuilder.cpp b/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
index 31a01e7a2..654049f15 100644
--- a/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
@@ -31,8 +31,8 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                                            \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
@@ -54,8 +54,8 @@
     ASTNodeDataTypeBuilder{*ast};                                                  \
                                                                                    \
     ASTNodeDeclarationToAffectationConverter{*ast};                                \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                               \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                           \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                           \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                           \
                                                                                    \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, error);                    \
   }
diff --git a/tests/test_ASTNodeListProcessor.cpp b/tests/test_ASTNodeListProcessor.cpp
index aaa78a060..8d46c678a 100644
--- a/tests/test_ASTNodeListProcessor.cpp
+++ b/tests/test_ASTNodeListProcessor.cpp
@@ -33,7 +33,7 @@ true;
   ASTNodeDataTypeBuilder{*ast};
 
   ASTNodeDeclarationToAffectationConverter{*ast};
-  ASTNodeTypeCleaner<language::declaration>{*ast};
+  ASTNodeTypeCleaner<language::var_declaration>{*ast};
 
   ASTNodeExpressionBuilder{*ast};
   ExecutionPolicy exec_policy;
diff --git a/tests/test_ASTNodeTypeCleaner.cpp b/tests/test_ASTNodeTypeCleaner.cpp
index e166b11d2..4bf4fcfdd 100644
--- a/tests/test_ASTNodeTypeCleaner.cpp
+++ b/tests/test_ASTNodeTypeCleaner.cpp
@@ -20,7 +20,7 @@
     ASTSymbolTableBuilder{*ast};                                                               \
     ASTNodeDataTypeBuilder{*ast};                                                              \
                                                                                                \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                           \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                       \
                                                                                                \
     std::stringstream ast_output;                                                              \
     ast_output << '\n' << ASTPrinter{*ast, ASTPrinter::Format::raw, {ASTPrinter::Info::none}}; \
diff --git a/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp b/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp
index e2067b253..98944b177 100644
--- a/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp
+++ b/tests/test_ASTNodeUnaryOperatorExpressionBuilder.cpp
@@ -31,7 +31,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                                   \
                                                                                                     \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                 \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                            \
                                                                                                     \
     ASTNodeExpressionBuilder{*ast};                                                                 \
                                                                                                     \
diff --git a/tests/test_ASTPrinter.cpp b/tests/test_ASTPrinter.cpp
index a2e593e0d..eaaf6b759 100644
--- a/tests/test_ASTPrinter.cpp
+++ b/tests/test_ASTPrinter.cpp
@@ -33,7 +33,7 @@ N n = 2 + 3;
 
     std::string_view result = R"(
 (root:undefined)
- `-(language::declaration:undefined)
+ `-(language::var_declaration:undefined)
      +-(language::N_set:undefined)
      +-(language::name:n:undefined)
      `-(language::plus_op:undefined)
@@ -51,7 +51,7 @@ N n = 2 + 3;
 
     std::string_view result = R"(
 (root:undefined)
- └──(language::declaration:undefined)
+ └──(language::var_declaration:undefined)
      ├──(language::N_set:undefined)
      ├──(language::name:n:undefined)
      └──(language::plus_op:undefined)
@@ -69,7 +69,7 @@ string s = "a string";
 
     std::string_view result = R"(
 (root:undefined)
- `-(language::declaration:undefined)
+ `-(language::var_declaration:undefined)
      +-(language::string_type:undefined)
      +-(language::name:s:undefined)
      `-(language::literal:"a string":undefined)
diff --git a/tests/test_AffectationProcessor.cpp b/tests/test_AffectationProcessor.cpp
index a821277d9..06428a8a3 100644
--- a/tests/test_AffectationProcessor.cpp
+++ b/tests/test_AffectationProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
@@ -57,7 +57,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                            \
                                                                                              \
     ASTNodeDeclarationToAffectationConverter{*ast};                                          \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                         \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                     \
                                                                                              \
     REQUIRE_THROWS(ASTNodeExpressionBuilder{*ast},                                           \
                    Catch::Matchers::Contains("invalid operands to affectation expression")); \
@@ -72,7 +72,7 @@
     ASTNodeDataTypeBuilder{*ast};                                       \
                                                                         \
     ASTNodeDeclarationToAffectationConverter{*ast};                     \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                    \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                \
                                                                         \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, error_message); \
   }
diff --git a/tests/test_AffectationToStringProcessor.cpp b/tests/test_AffectationToStringProcessor.cpp
index 3f692c3bc..94763b678 100644
--- a/tests/test_AffectationToStringProcessor.cpp
+++ b/tests/test_AffectationToStringProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_ArraySubscriptProcessor.cpp b/tests/test_ArraySubscriptProcessor.cpp
index d5c6dbfe5..eaab8764a 100644
--- a/tests/test_ArraySubscriptProcessor.cpp
+++ b/tests/test_ArraySubscriptProcessor.cpp
@@ -34,8 +34,8 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                      \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
@@ -67,8 +67,8 @@
       ASTNodeDataTypeBuilder{*ast};                           \
                                                               \
       ASTNodeDeclarationToAffectationConverter{*ast};         \
-      ASTNodeTypeCleaner<language::declaration>{*ast};        \
-      ASTNodeTypeCleaner<language::let_declaration>{*ast};    \
+      ASTNodeTypeCleaner<language::var_declaration>{*ast};    \
+      ASTNodeTypeCleaner<language::fct_declaration>{*ast};    \
                                                               \
       ASTNodeExpressionBuilder{*ast};                         \
       ExecutionPolicy exec_policy;                            \
diff --git a/tests/test_BinaryExpressionProcessor_utils.hpp b/tests/test_BinaryExpressionProcessor_utils.hpp
index 4a43c3d43..8b97dc96a 100644
--- a/tests/test_BinaryExpressionProcessor_utils.hpp
+++ b/tests/test_BinaryExpressionProcessor_utils.hpp
@@ -30,7 +30,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_CFunctionProcessor.cpp b/tests/test_CFunctionProcessor.cpp
index 983362b34..6c8c5c5b8 100644
--- a/tests/test_CFunctionProcessor.cpp
+++ b/tests/test_CFunctionProcessor.cpp
@@ -26,8 +26,8 @@
     ASTNodeDataTypeBuilder{*ast};                                                                    \
                                                                                                      \
     ASTNodeDeclarationToAffectationConverter{*ast};                                                  \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                                 \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                                             \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                             \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                                             \
                                                                                                      \
     ASTNodeExpressionBuilder{*ast};                                                                  \
     ExecutionPolicy exec_policy;                                                                     \
diff --git a/tests/test_ConcatExpressionProcessor.cpp b/tests/test_ConcatExpressionProcessor.cpp
index 79c20b9d4..0eb52cfc0 100644
--- a/tests/test_ConcatExpressionProcessor.cpp
+++ b/tests/test_ConcatExpressionProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_DoWhileProcessor.cpp b/tests/test_DoWhileProcessor.cpp
index d68b2f9e4..a4c50d9be 100644
--- a/tests/test_DoWhileProcessor.cpp
+++ b/tests/test_DoWhileProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_ForProcessor.cpp b/tests/test_ForProcessor.cpp
index 51195d9b3..3c03b99f2 100644
--- a/tests/test_ForProcessor.cpp
+++ b/tests/test_ForProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_FunctionProcessor.cpp b/tests/test_FunctionProcessor.cpp
index 3a946e8d8..2a4deb6c4 100644
--- a/tests/test_FunctionProcessor.cpp
+++ b/tests/test_FunctionProcessor.cpp
@@ -34,8 +34,8 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                      \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_IfProcessor.cpp b/tests/test_IfProcessor.cpp
index 492d9b7b3..bc1c57e9b 100644
--- a/tests/test_IfProcessor.cpp
+++ b/tests/test_IfProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_IncDecExpressionProcessor.cpp b/tests/test_IncDecExpressionProcessor.cpp
index a2a2d988f..2aee0a6b5 100644
--- a/tests/test_IncDecExpressionProcessor.cpp
+++ b/tests/test_IncDecExpressionProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_ListAffectationProcessor.cpp b/tests/test_ListAffectationProcessor.cpp
index a5775adbb..b4397fdfb 100644
--- a/tests/test_ListAffectationProcessor.cpp
+++ b/tests/test_ListAffectationProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
@@ -57,7 +57,7 @@
     ASTNodeDataTypeBuilder{*ast};                                                            \
                                                                                              \
     ASTNodeDeclarationToAffectationConverter{*ast};                                          \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                                         \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                                     \
                                                                                              \
     REQUIRE_THROWS(ASTNodeExpressionBuilder{*ast},                                           \
                    Catch::Matchers::Contains("invalid operands to affectation expression")); \
@@ -72,7 +72,7 @@
     ASTNodeDataTypeBuilder{*ast};                                       \
                                                                         \
     ASTNodeDeclarationToAffectationConverter{*ast};                     \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                    \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                \
                                                                         \
     REQUIRE_THROWS_WITH(ASTNodeExpressionBuilder{*ast}, error_message); \
   }
diff --git a/tests/test_NameProcessor.cpp b/tests/test_NameProcessor.cpp
index 28e81a461..b6db88102 100644
--- a/tests/test_NameProcessor.cpp
+++ b/tests/test_NameProcessor.cpp
@@ -37,7 +37,7 @@ n = 2;
   ASTNodeDataTypeBuilder{*ast};
 
   ASTNodeDeclarationToAffectationConverter{*ast};
-  ASTNodeTypeCleaner<language::declaration>{*ast};
+  ASTNodeTypeCleaner<language::var_declaration>{*ast};
 
   ASTNodeExpressionBuilder{*ast};
   ExecutionPolicy exec_policy;
diff --git a/tests/test_OStreamProcessor.cpp b/tests/test_OStreamProcessor.cpp
index ad6b8578e..14905645a 100644
--- a/tests/test_OStreamProcessor.cpp
+++ b/tests/test_OStreamProcessor.cpp
@@ -43,7 +43,7 @@ _replaceOStream(ASTNode& node, std::ostringstream& sout)
     ASTNodeDataTypeBuilder{*ast};                             \
                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};      \
                                                               \
     ASTNodeExpressionBuilder{*ast};                           \
     ExecutionPolicy exec_policy;                              \
diff --git a/tests/test_TupleToVectorProcessor.cpp b/tests/test_TupleToVectorProcessor.cpp
index 5f0c8d9ac..1ef3e6ad9 100644
--- a/tests/test_TupleToVectorProcessor.cpp
+++ b/tests/test_TupleToVectorProcessor.cpp
@@ -34,8 +34,8 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
-    ASTNodeTypeCleaner<language::let_declaration>{*ast};                      \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
+    ASTNodeTypeCleaner<language::fct_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
@@ -67,8 +67,8 @@
       ASTNodeDataTypeBuilder{*ast};                           \
                                                               \
       ASTNodeDeclarationToAffectationConverter{*ast};         \
-      ASTNodeTypeCleaner<language::declaration>{*ast};        \
-      ASTNodeTypeCleaner<language::let_declaration>{*ast};    \
+      ASTNodeTypeCleaner<language::var_declaration>{*ast};    \
+      ASTNodeTypeCleaner<language::fct_declaration>{*ast};    \
                                                               \
       ASTNodeExpressionBuilder{*ast};                         \
       ExecutionPolicy exec_policy;                            \
diff --git a/tests/test_UnaryExpressionProcessor.cpp b/tests/test_UnaryExpressionProcessor.cpp
index 63b7c2698..da5296b43 100644
--- a/tests/test_UnaryExpressionProcessor.cpp
+++ b/tests/test_UnaryExpressionProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
diff --git a/tests/test_WhileProcessor.cpp b/tests/test_WhileProcessor.cpp
index 98e46e73e..4f4974868 100644
--- a/tests/test_WhileProcessor.cpp
+++ b/tests/test_WhileProcessor.cpp
@@ -29,7 +29,7 @@
     ASTNodeDataTypeBuilder{*ast};                                             \
                                                                               \
     ASTNodeDeclarationToAffectationConverter{*ast};                           \
-    ASTNodeTypeCleaner<language::declaration>{*ast};                          \
+    ASTNodeTypeCleaner<language::var_declaration>{*ast};                      \
                                                                               \
     ASTNodeExpressionBuilder{*ast};                                           \
     ExecutionPolicy exec_policy;                                              \
-- 
GitLab