From 988c71b7352714c75f530de71536fee10f1740e6 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 20 Sep 2019 14:20:20 +0200
Subject: [PATCH] Add test to ensure that function calls only applies to
 function

The following code is now invalid
``
R x = 3;
x(0); // x is not a function
``
---
 src/language/ASTNodeDataTypeBuilder.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp
index 8e52fddfd..7b249e79c 100644
--- a/src/language/ASTNodeDataTypeBuilder.cpp
+++ b/src/language/ASTNodeDataTypeBuilder.cpp
@@ -199,6 +199,12 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n)
         throw parse_error(message.str(), n.begin());
       }
     } else if (n.is<language::function_evaluation>()) {
+      if (n.children[0]->m_data_type != ASTNodeDataType::function_t) {
+        std::ostringstream message;
+        message << "invalid function call\n"
+                << "note: '" << n.children[0]->string() << "' is not a function!" << std::ends;
+        throw parse_error(message.str(), n.begin());
+      }
       std::cout << rang::fgB::red << "returned type of function evaluation is incorrect" << rang::style::reset << "\n";
       n.m_data_type = ASTNodeDataType::double_t;
     } else if (n.is<language::B_set>() or n.is<language::Z_set>() or n.is<language::N_set>() or
-- 
GitLab