diff --git a/src/language/ast/ASTNodeDataTypeFlattener.cpp b/src/language/ast/ASTNodeDataTypeFlattener.cpp
index 7212d6b001a12de45e6b81e2955a80fe71cd07b4..9cc1fa483196815ed97b3b8134797b79aeea770e 100644
--- a/src/language/ast/ASTNodeDataTypeFlattener.cpp
+++ b/src/language/ast/ASTNodeDataTypeFlattener.cpp
@@ -40,9 +40,11 @@ ASTNodeDataTypeFlattener::ASTNodeDataTypeFlattener(ASTNode& node, FlattenedDataT
               {ASTNodeDataType::build<ASTNodeDataType::type_id_t>(image_sub_domain->m_data_type.nameOfTypeId()), node});
             break;
           }
+            // LCOV_EXCL_START
           default: {
             throw UnexpectedError("invalid data type");
           }
+            // LCOV_EXCL_STOP
           }
         }
         break;
diff --git a/tests/test_ASTNodeDataTypeFlattener.cpp b/tests/test_ASTNodeDataTypeFlattener.cpp
index d4b4bbe6c65e7bc0a110d70b406b24f678f82576..aaa3739b2266f45e9c62b8a606000749468c33d8 100644
--- a/tests/test_ASTNodeDataTypeFlattener.cpp
+++ b/tests/test_ASTNodeDataTypeFlattener.cpp
@@ -8,6 +8,9 @@
 #include <language/ast/ASTNodeDeclarationToAffectationConverter.hpp>
 #include <language/ast/ASTNodeTypeCleaner.hpp>
 #include <language/ast/ASTSymbolTableBuilder.hpp>
+#include <language/utils/ASTNodeDataTypeTraits.hpp>
+#include <language/utils/BasicAffectationRegistrerFor.hpp>
+#include <language/utils/TypeDescriptor.hpp>
 
 #include <test_BuiltinFunctionRegister.hpp>
 
@@ -106,11 +109,11 @@ f(2);
       REQUIRE(&flattened_datatype_list[0].m_parent_node == root_node->children[0].get());
     }
 
-    SECTION("function evaluation -> N*R*B*string*Z")
+    SECTION("function evaluation -> N*R*B*string*Z*builtin_t")
     {
       std::string_view data = R"(
-let f: N -> N*R*B*string*Z, n -> (n, 0.5*n, n>2, n, 3-n);
-f(2);
+let f: N*builtin_t -> N*R*B*string*Z*builtin_t, (n,b) -> (n, 0.5*n, n>2, n, 3-n, b);
+f(2, b);
 )";
 
       TAO_PEGTL_NAMESPACE::string_input input{data, "test.pgs"};
@@ -118,6 +121,21 @@ f(2);
 
       ASTModulesImporter{*root_node};
       ASTNodeTypeCleaner<language::import_instruction>{*root_node};
+      SymbolTable& symbol_table = *root_node->m_symbol_table;
+
+      auto [i_symbol, success] = symbol_table.add(builtin_data_type.nameOfTypeId(), root_node->begin());
+      if (not success) {
+        throw UnexpectedError("cannot add '" + builtin_data_type.nameOfTypeId() + "' type for testing");
+      }
+
+      i_symbol->attributes().setDataType(ASTNodeDataType::build<ASTNodeDataType::type_name_id_t>());
+      i_symbol->attributes().setIsInitialized();
+      i_symbol->attributes().value() = symbol_table.typeEmbedderTable().size();
+      symbol_table.typeEmbedderTable().add(std::make_shared<TypeDescriptor>(builtin_data_type.nameOfTypeId()));
+
+      auto [i_b_symbol, b_success] = symbol_table.add("b", root_node->begin());
+      i_b_symbol->attributes().setDataType(ast_node_data_type_from<std::shared_ptr<const double>>);
+      i_b_symbol->attributes().setIsInitialized();
 
       ASTSymbolTableBuilder{*root_node};
       ASTNodeDataTypeBuilder{*root_node};
@@ -133,12 +151,13 @@ f(2);
       ASTNodeDataTypeFlattener::FlattenedDataTypeList flattened_datatype_list;
       ASTNodeDataTypeFlattener{*root_node->children[0], flattened_datatype_list};
 
-      REQUIRE(flattened_datatype_list.size() == 5);
+      REQUIRE(flattened_datatype_list.size() == 6);
       REQUIRE(flattened_datatype_list[0].m_data_type == ASTNodeDataType::unsigned_int_t);
       REQUIRE(flattened_datatype_list[1].m_data_type == ASTNodeDataType::double_t);
       REQUIRE(flattened_datatype_list[2].m_data_type == ASTNodeDataType::bool_t);
       REQUIRE(flattened_datatype_list[3].m_data_type == ASTNodeDataType::string_t);
       REQUIRE(flattened_datatype_list[4].m_data_type == ASTNodeDataType::int_t);
+      REQUIRE(flattened_datatype_list[5].m_data_type == ASTNodeDataType::type_id_t);
     }
 
     SECTION("function evaluation -> R*R^3")