Преглед изворни кода

LanguageServers/Cpp: Autocomplete function and struct/class names

Itamar пре 4 година
родитељ
комит
64c80f6ea4

+ 6 - 0
Userland/DevTools/HackStudio/LanguageServers/Cpp/ParserAutoComplete.cpp

@@ -143,6 +143,12 @@ Vector<GUI::AutocompleteProvider::Entry> 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);

+ 2 - 0
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<Position> start, Optional<Position> 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<FunctionDefinition> definition() { return m_definition; }