From 16c3f4be2dc3dda8c588e37add09a22d5cf1fc9b Mon Sep 17 00:00:00 2001 From: MoltenCoffee <13321277+MoltenCoffee@users.noreply.github.com> Date: Fri, 14 Jul 2023 11:36:48 +0200 Subject: [PATCH] Add error for undefined function in shader --- servers/rendering/shader_language.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp index ff4f670c587..9c2280c4b8c 100644 --- a/servers/rendering/shader_language.cpp +++ b/servers/rendering/shader_language.cpp @@ -3388,12 +3388,14 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionI } int last_arg_count = 0; + bool exists = false; String arg_list = ""; for (int i = 0; i < shader->functions.size(); i++) { if (name != shader->functions[i].name) { continue; } + exists = true; if (!shader->functions[i].callable) { _set_error(vformat(RTR("Function '%s' can't be called from source code."), String(name))); @@ -3494,10 +3496,12 @@ bool ShaderLanguage::_validate_function_call(BlockNode *p_block, const FunctionI } } - if (last_arg_count > args.size()) { - _set_error(vformat(RTR("Too few arguments for \"%s(%s)\" call. Expected at least %d but received %d."), String(name), arg_list, last_arg_count, args.size())); - } else if (last_arg_count < args.size()) { - _set_error(vformat(RTR("Too many arguments for \"%s(%s)\" call. Expected at most %d but received %d."), String(name), arg_list, last_arg_count, args.size())); + if (exists) { + if (last_arg_count > args.size()) { + _set_error(vformat(RTR("Too few arguments for \"%s(%s)\" call. Expected at least %d but received %d."), String(name), arg_list, last_arg_count, args.size())); + } else if (last_arg_count < args.size()) { + _set_error(vformat(RTR("Too many arguments for \"%s(%s)\" call. Expected at most %d but received %d."), String(name), arg_list, last_arg_count, args.size())); + } } return false;