You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
GDScript: Fix common mismatched external parser errors
This commit is contained in:
@@ -41,9 +41,22 @@
|
||||
class GDScriptAnalyzer {
|
||||
GDScriptParser *parser = nullptr;
|
||||
|
||||
template <typename Fn>
|
||||
class Finally {
|
||||
Fn fn;
|
||||
|
||||
public:
|
||||
Finally(Fn p_fn) :
|
||||
fn(p_fn) {}
|
||||
~Finally() {
|
||||
fn();
|
||||
}
|
||||
};
|
||||
|
||||
const GDScriptParser::EnumNode *current_enum = nullptr;
|
||||
GDScriptParser::LambdaNode *current_lambda = nullptr;
|
||||
List<GDScriptParser::LambdaNode *> pending_body_resolution_lambdas;
|
||||
HashMap<const GDScriptParser::ClassNode *, Ref<GDScriptParserRef>> external_class_parser_cache;
|
||||
bool static_context = false;
|
||||
|
||||
// Tests for detecting invalid overloading of script members
|
||||
@@ -52,7 +65,7 @@ class GDScriptAnalyzer {
|
||||
Error check_native_member_name_conflict(const StringName &p_member_name, const GDScriptParser::Node *p_member_node, const StringName &p_native_type_string);
|
||||
Error check_class_member_name_conflict(const GDScriptParser::ClassNode *p_class_node, const StringName &p_member_name, const GDScriptParser::Node *p_member_node);
|
||||
|
||||
void get_class_node_current_scope_classes(GDScriptParser::ClassNode *p_node, List<GDScriptParser::ClassNode *> *p_list);
|
||||
void get_class_node_current_scope_classes(GDScriptParser::ClassNode *p_node, List<GDScriptParser::ClassNode *> *p_list, GDScriptParser::Node *p_source);
|
||||
|
||||
Error resolve_class_inheritance(GDScriptParser::ClassNode *p_class, const GDScriptParser::Node *p_source = nullptr);
|
||||
Error resolve_class_inheritance(GDScriptParser::ClassNode *p_class, bool p_recursive);
|
||||
@@ -132,6 +145,10 @@ class GDScriptAnalyzer {
|
||||
void resolve_pending_lambda_bodies();
|
||||
bool class_exists(const StringName &p_class) const;
|
||||
void reduce_identifier_from_base_set_class(GDScriptParser::IdentifierNode *p_identifier, GDScriptParser::DataType p_identifier_datatype);
|
||||
Ref<GDScriptParserRef> ensure_cached_parser_for_class(const GDScriptParser::ClassNode *p_class, const GDScriptParser::ClassNode *p_from_class, const String &p_context, const GDScriptParser::Node *p_source);
|
||||
Ref<GDScriptParserRef> find_cached_parser_for_class(const GDScriptParser::ClassNode *p_class, const Ref<GDScriptParserRef> &p_dependant_parser);
|
||||
Ref<GDScriptParserRef> find_cached_parser_for_class(const GDScriptParser::ClassNode *p_class, GDScriptParser *p_dependant_parser);
|
||||
Ref<GDScript> get_depended_shallow_script(const String &p_path, Error &r_error);
|
||||
#ifdef DEBUG_ENABLED
|
||||
void is_shadowing(GDScriptParser::IdentifierNode *p_identifier, const String &p_context, const bool p_in_local_scope);
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user