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