From 1cc7b80aad222d59ec71d7a648b8da0520867f7c Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Sun, 20 Oct 2019 18:21:46 +0200
Subject: [PATCH] Fix function declaration data type builder

``
let f : R -> R, (x) -> x + 1;
``
is now interpreted correctly
---
 src/language/ASTNodeDataTypeBuilder.cpp | 8 ++++++--
 tests/test_ASTNodeDataTypeBuilder.cpp   | 4 ++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp
index 3ba18153d..20233042e 100644
--- a/src/language/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ASTNodeDataTypeBuilder.cpp
@@ -122,9 +122,13 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n)
           Assert(found);
           i_symbol->attributes().setDataType(data_type);
         };
-#warning This test is probably incorrect
+
         if (parameters_domain_node.children.size() == 0) {
-          simple_type_allocator(parameters_domain_node, parameters_name_node);
+          if (parameters_name_node.is<language::name_list>()) {
+            simple_type_allocator(parameters_domain_node, *parameters_name_node.children[0]);
+          } else {
+            simple_type_allocator(parameters_domain_node, parameters_name_node);
+          }
         } else {
           for (size_t i = 0; i < function_descriptor.domainMappingNode().children.size(); ++i) {
             simple_type_allocator(*parameters_domain_node.children[i], *parameters_name_node.children[i]);
diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp
index 5faacdbf3..4729bdecf 100644
--- a/tests/test_ASTNodeDataTypeBuilder.cpp
+++ b/tests/test_ASTNodeDataTypeBuilder.cpp
@@ -146,8 +146,8 @@ let f : R -> R, (x) -> x;
  `-(language::let_declaration:void)
      `-(language::name:f:function)
 )";
-#warning finish this test
-      //      CHECK_AST(data, result);
+
+      CHECK_AST(data, result);
     }
   }
 
-- 
GitLab