diff options
| author | George Marques <george@gmarqu.es> | 2020-09-01 18:26:52 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-01 18:26:52 -0300 |
| commit | 8e052e1a06942816de113bfc0834eef9f5fc67a2 (patch) | |
| tree | 4aa18cbea1399ffa6cda339b5b84771b5b31ee15 /modules/gdscript/gdscript_analyzer.cpp | |
| parent | 23ce1dbfd590341cb9439bfd04fede3f70336d0a (diff) | |
| parent | 635c6a0a185e590d041f5fee8297b98ec50b24b4 (diff) | |
Merge pull request #41338 from vnen/gdscript-compiler-abstraction
Add GDScript code generation abstraction
Diffstat (limited to 'modules/gdscript/gdscript_analyzer.cpp')
| -rw-r--r-- | modules/gdscript/gdscript_analyzer.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index c25307ed7f..788b3c87ab 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -505,6 +505,9 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas member.variable->set_datatype(datatype); // Allow recursive usage. reduce_expression(member.variable->initializer); datatype = member.variable->initializer->get_datatype(); + if (datatype.type_source != GDScriptParser::DataType::UNDETECTED) { + datatype.type_source = GDScriptParser::DataType::INFERRED; + } } if (member.variable->datatype_specifier != nullptr) { @@ -540,6 +543,7 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas } else if (datatype.builtin_type == Variant::NIL) { push_error(vformat(R"(Cannot infer the type of "%s" variable because the initial value is "null".)", member.variable->identifier->name), member.variable->initializer); } + datatype.type_source = GDScriptParser::DataType::ANNOTATED_INFERRED; } datatype.is_constant = false; @@ -914,6 +918,7 @@ void GDScriptAnalyzer::decide_suite_type(GDScriptParser::Node *p_suite, GDScript p_suite->datatype.type_source = GDScriptParser::DataType::UNDETECTED; } else { p_suite->set_datatype(p_statement->get_datatype()); + p_suite->datatype.type_source = GDScriptParser::DataType::INFERRED; } break; default: |