diff --git a/src/language/ASTNodeListAffectationExpressionBuilder.cpp b/src/language/ASTNodeListAffectationExpressionBuilder.cpp
index 4cc62a54402f8eaaeee5283d3bf2c7c50831be00..b95f4777d259975a7755773c80a1350d24964c4a 100644
--- a/src/language/ASTNodeListAffectationExpressionBuilder.cpp
+++ b/src/language/ASTNodeListAffectationExpressionBuilder.cpp
@@ -4,6 +4,7 @@
 #include <node_processor/AffectationProcessor.hpp>
 
 #include <ASTNodeDataTypeFlattener.hpp>
+#include <ASTNodeNaturalConversionChecker.hpp>
 
 template <typename OperatorT>
 void
@@ -32,7 +33,8 @@ ASTNodeListAffectationExpressionBuilder::_buildAffectationProcessor(
       break;
     }
     default: {
-      throw parse_error("invalid operand type for affectation", std::vector{node_sub_data_type.m_parent_node.begin()});
+      throw parse_error("unexpected error: invalid operand type for affectation",
+                        std::vector{node_sub_data_type.m_parent_node.begin()});
     }
     }
   };
@@ -73,6 +75,8 @@ ASTNodeListAffectationExpressionBuilder::_buildAffectationProcessor(
 
   auto add_affectation_processor_for_value = [&](const ASTNodeDataType& value_type,
                                                  const ASTNodeSubDataType& node_sub_data_type) {
+    ASTNodeNaturalConversionChecker{node_sub_data_type.m_parent_node, node_sub_data_type.m_data_type, value_type};
+
     switch (value_type) {
     case ASTNodeDataType::bool_t: {
       add_affectation_processor_for_data(bool{}, node_sub_data_type);
diff --git a/tests/test_ASTNodeListAffectationExpressionBuilder.cpp b/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
index 2932203cee2cceeebdc487e175d04db381063b7a..19f56548e0ab3bad08d12ab91e6b8ae8a9887737 100644
--- a/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
+++ b/tests/test_ASTNodeListAffectationExpressionBuilder.cpp
@@ -116,7 +116,7 @@ B*Z*N (b,z,m) = (false, -2, n);
     SECTION("with conversion R*B*Z*N")
     {
       std::string_view data = R"(
-R*B*Z*N (r,b,z,m) = (3.2, 1, 6, 2);
+R*B*Z*N (r,b,z,m) = (3.2, true, 6, 2);
 )";
 
       std::string_view result = R"(
@@ -129,7 +129,7 @@ R*B*Z*N (r,b,z,m) = (3.2, 1, 6, 2);
      |   `-(language::name:m:NameProcessor)
      `-(language::expression_list:ASTNodeExpressionListProcessor)
          +-(language::real:3.2:ValueProcessor)
-         +-(language::integer:1:ValueProcessor)
+         +-(language::true_kw:ValueProcessor)
          +-(language::integer:6:ValueProcessor)
          `-(language::integer:2:ValueProcessor)
 )";
@@ -290,7 +290,7 @@ let f: R -> R, x -> x+1;
 R*R (x,y) = (f,2);
 )";
 
-      CHECK_AST_THROWS_WITH(data, std::string{"invalid operand type for affectation"});
+      CHECK_AST_THROWS_WITH(data, std::string{"invalid implicit conversion: function -> R"});
     }
 
     SECTION("invalid operand type for string affectation")
@@ -300,7 +300,7 @@ let f: R -> R, x -> x+1;
 string*N (s,n) = (f,2);
 )";
 
-      CHECK_AST_THROWS_WITH(data, std::string{"invalid operand type for string affectation"});
+      CHECK_AST_THROWS_WITH(data, std::string{"invalid implicit conversion: function -> string"});
     }
 
     SECTION("invalid value type for affectation")
@@ -312,7 +312,7 @@ R x;
 (f,x) = (3,2);
 )";
 
-      CHECK_AST_THROWS_WITH(data, std::string{"undefined value type for tuple affectation"});
+      CHECK_AST_THROWS_WITH(data, std::string{"invalid implicit conversion: Z -> function"});
     }
   }
 }