diff --git a/Userland/DevTools/HackStudio/LanguageServers/Cpp/ParserAutoComplete.cpp b/Userland/DevTools/HackStudio/LanguageServers/Cpp/ParserAutoComplete.cpp index 4b31fee82c..3a26a3946c 100644 --- a/Userland/DevTools/HackStudio/LanguageServers/Cpp/ParserAutoComplete.cpp +++ b/Userland/DevTools/HackStudio/LanguageServers/Cpp/ParserAutoComplete.cpp @@ -143,6 +143,12 @@ Vector ParserAutoComplete::autocomplete_identi if (decl.is_variable_or_parameter_declaration()) { add_name(((Cpp::VariableOrParameterDeclaration&)decl).m_name); } + if (decl.is_struct_or_class()) { + add_name(((Cpp::StructOrClassDeclaration&)decl).m_name); + } + if (decl.is_function()) { + add_name(((Cpp::FunctionDeclaration&)decl).m_name); + } } auto partial_text = document.parser.text_of_node(node); diff --git a/Userland/Libraries/LibCpp/AST.h b/Userland/Libraries/LibCpp/AST.h index 62dfacf764..dada06ad28 100644 --- a/Userland/Libraries/LibCpp/AST.h +++ b/Userland/Libraries/LibCpp/AST.h @@ -128,6 +128,7 @@ public: virtual bool is_variable_declaration() const { return false; } virtual bool is_parameter() const { return false; } virtual bool is_struct_or_class() const { return false; } + virtual bool is_function() const { return false; } protected: Declaration(ASTNode* parent, Optional start, Optional end) @@ -152,6 +153,7 @@ public: virtual ~FunctionDeclaration() override = default; virtual const char* class_name() const override { return "FunctionDeclaration"; } virtual void dump(size_t indent) const override; + virtual bool is_function() const override { return true; } const StringView& name() const { return m_name; } RefPtr definition() { return m_definition; }