diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp index 8e52fddfdd64797f90c039771c6a36b522e01aab..7b249e79c58e0d36712d9d99c35bfed1be856e2e 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