diff options
author | Thomas ten Cate <ttencate@gmail.com> | 2018-11-16 10:46:05 +0100 |
---|---|---|
committer | Thomas ten Cate <ttencate@gmail.com> | 2018-11-16 10:46:05 +0100 |
commit | 4a530433d4054c504c1c8255b7156774ad0b9dd8 (patch) | |
tree | d1c07396d222ef7a7f7f69fd61f3ef69958ef59d /modules | |
parent | 26d33d1c6eedf9271bac20a24ea37453c21ef890 (diff) |
Prevent unused_argument warning when passing arg to parent constructor
This requires creating the FunctionNode object a bit sooner, and setting
it as the current_function while parsing the parent constructor call
arguments.
Note that the return type has not yet been parsed at this point, but
that doesn't seem to be a problem.
Fixes #22139
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gdscript/gdscript_parser.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 09b3a5631f..471768932a 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -3752,6 +3752,19 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { BlockNode *block = alloc_node<BlockNode>(); block->parent_class = p_class; + FunctionNode *function = alloc_node<FunctionNode>(); + function->name = name; + function->arguments = arguments; + function->argument_types = argument_types; + function->default_values = default_values; + function->_static = _static; + function->line = fnline; +#ifdef DEBUG_ENABLED + function->arguments_usage = arguments_usage; +#endif // DEBUG_ENABLED + function->rpc_mode = rpc_mode; + rpc_mode = MultiplayerAPI::RPC_MODE_DISABLED; + if (name == "_init") { if (_static) { @@ -3782,7 +3795,9 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { parenthesis++; while (true) { + current_function = function; Node *arg = _parse_and_reduce_expression(p_class, _static); + current_function = NULL; cparent->arguments.push_back(arg); if (tokenizer->get_token() == GDScriptTokenizer::TK_COMMA) { @@ -3826,19 +3841,7 @@ void GDScriptParser::_parse_class(ClassNode *p_class) { return; } - FunctionNode *function = alloc_node<FunctionNode>(); - function->name = name; function->return_type = return_type; - function->arguments = arguments; - function->argument_types = argument_types; - function->default_values = default_values; - function->_static = _static; - function->line = fnline; -#ifdef DEBUG_ENABLED - function->arguments_usage = arguments_usage; -#endif // DEBUG_ENABLED - function->rpc_mode = rpc_mode; - rpc_mode = MultiplayerAPI::RPC_MODE_DISABLED; if (_static) p_class->static_functions.push_back(function); |