diff options
author | George Marques <george@gmarqu.es> | 2018-08-21 13:14:11 -0300 |
---|---|---|
committer | George Marques <george@gmarqu.es> | 2018-08-21 13:14:11 -0300 |
commit | d97624e2954dc5180f2ae28d8aab9c8eaaff2954 (patch) | |
tree | 3c35c418a51318b83d66d5797937ca9b3c3b7a95 | |
parent | 4ea3e4f551f3f364bd77242a1bc541e9b018f62e (diff) |
GDSCript: Fix cyclic class dependency detection
-rw-r--r-- | modules/gdscript/gdscript_compiler.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp index fe393957db..368601127d 100644 --- a/modules/gdscript/gdscript_compiler.cpp +++ b/modules/gdscript/gdscript_compiler.cpp @@ -1994,8 +1994,11 @@ Error GDScriptCompiler::_parse_class_level(GDScript *p_script, GDScript *p_owner p_script->_signals[name] = p_class->_signals[i].arguments; } - if (!p_class->owner) { + if (p_class->owner) { parsed_classes.insert(p_class->name); + if (parsing_classes.has(p_class->name)) { + parsing_classes.erase(p_class->name); + } } //parse sub-classes @@ -2011,7 +2014,6 @@ Error GDScriptCompiler::_parse_class_level(GDScript *p_script, GDScript *p_owner Error err = _parse_class_level(subclass.ptr(), p_script, p_class->subclasses[i], p_keep_state); if (err) return err; - parsing_classes.erase(name); } #ifdef TOOLS_ENABLED |