diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-11-25 17:13:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-25 17:13:41 +0100 |
commit | fc28de64c4de9d0fec5650b1638854d3ee24eaaf (patch) | |
tree | 15c67d1d9711c6fd2ccf1b241ff3a50c8da80ade | |
parent | a5ee8d881ff2203c3c5ad7250148718b92151495 (diff) | |
parent | ed3d8f31df143337f43bb219da12f68f1d620df7 (diff) |
Merge pull request #43856 from vnen/gdscript-some-fixes
A couple of GDScript fixes
-rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 16 | ||||
-rw-r--r-- | modules/gdscript/gdscript_compiler.cpp | 2 |
2 files changed, 11 insertions, 7 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 6b23ab1616..851994eff3 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -978,7 +978,7 @@ void GDScriptAnalyzer::resolve_for(GDScriptParser::ForNode *p_for) { if (!call->arguments[i]->is_constant) { all_is_constant = false; - } else { + } else if (all_is_constant) { args.write[i] = call->arguments[i]->reduced_value; } @@ -1011,11 +1011,15 @@ void GDScriptAnalyzer::resolve_for(GDScriptParser::ForNode *p_for) { } } - GDScriptParser::DataType list_type; - list_type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT; - list_type.kind = GDScriptParser::DataType::BUILTIN; - list_type.builtin_type = Variant::ARRAY; - p_for->list->set_datatype(list_type); + if (p_for->list->is_constant) { + p_for->list->set_datatype(type_from_variant(p_for->list->reduced_value, p_for->list)); + } else { + GDScriptParser::DataType list_type; + list_type.type_source = GDScriptParser::DataType::ANNOTATED_EXPLICIT; + list_type.kind = GDScriptParser::DataType::BUILTIN; + list_type.builtin_type = Variant::ARRAY; + p_for->list->set_datatype(list_type); + } } } } diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index d47c9accc9..3d327cebeb 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -437,7 +437,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code gen->pop_temporary(); } - return source; + return result; } break; case GDScriptParser::Node::CALL: { const GDScriptParser::CallNode *call = static_cast<const GDScriptParser::CallNode *>(p_expression); |