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
This commit is contained in:
parent
26d33d1c6e
commit
4a530433d4
1 changed files with 15 additions and 12 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue