1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-17 11:47:37 +00:00

LanguageServers/Cpp: Autocomplete function and struct/class names

This commit is contained in:
Itamar 2021-02-10 21:46:25 +02:00 committed by Andreas Kling
parent e42b9e879c
commit 64c80f6ea4
2 changed files with 8 additions and 0 deletions

View file

@ -143,6 +143,12 @@ Vector<GUI::AutocompleteProvider::Entry> ParserAutoComplete::autocomplete_identi
if (decl.is_variable_or_parameter_declaration()) { if (decl.is_variable_or_parameter_declaration()) {
add_name(((Cpp::VariableOrParameterDeclaration&)decl).m_name); 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); auto partial_text = document.parser.text_of_node(node);

View file

@ -128,6 +128,7 @@ public:
virtual bool is_variable_declaration() const { return false; } virtual bool is_variable_declaration() const { return false; }
virtual bool is_parameter() const { return false; } virtual bool is_parameter() const { return false; }
virtual bool is_struct_or_class() const { return false; } virtual bool is_struct_or_class() const { return false; }
virtual bool is_function() const { return false; }
protected: protected:
Declaration(ASTNode* parent, Optional<Position> start, Optional<Position> end) Declaration(ASTNode* parent, Optional<Position> start, Optional<Position> end)
@ -152,6 +153,7 @@ public:
virtual ~FunctionDeclaration() override = default; virtual ~FunctionDeclaration() override = default;
virtual const char* class_name() const override { return "FunctionDeclaration"; } virtual const char* class_name() const override { return "FunctionDeclaration"; }
virtual void dump(size_t indent) const override; virtual void dump(size_t indent) const override;
virtual bool is_function() const override { return true; }
const StringView& name() const { return m_name; } const StringView& name() const { return m_name; }
RefPtr<FunctionDefinition> definition() { return m_definition; } RefPtr<FunctionDefinition> definition() { return m_definition; }