summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorThomas ten Cate <ttencate@gmail.com>2018-11-16 10:46:05 +0100
committerThomas ten Cate <ttencate@gmail.com>2018-11-16 10:46:05 +0100
commit4a530433d4054c504c1c8255b7156774ad0b9dd8 (patch)
treed1c07396d222ef7a7f7f69fd61f3ef69958ef59d /modules
parent26d33d1c6eedf9271bac20a24ea37453c21ef890 (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.cpp27
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);