File indexing completed on 2024-05-19 15:46:45
0001 /* 0002 SPDX-FileCopyrightText: 2013 Andrea Scarpino <scarpino@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef USEBUILDER_H 0008 #define USEBUILDER_H 0009 0010 #include <language/duchain/builders/abstractusebuilder.h> 0011 #include <util/stack.h> 0012 0013 #include "contextbuilder.h" 0014 0015 using UseBuilderBase = KDevelop::AbstractUseBuilder<QmlJS::AST::Node, QmlJS::AST::IdentifierPropertyName, ContextBuilder>; 0016 0017 class KDEVQMLJSDUCHAIN_EXPORT UseBuilder : public UseBuilderBase 0018 { 0019 public: 0020 explicit UseBuilder(ParseSession* session); 0021 0022 protected: 0023 using Visitor::visit; 0024 using Visitor::preVisit; 0025 using Visitor::postVisit; 0026 0027 bool preVisit(QmlJS::AST::Node* node) override; 0028 void postVisit(QmlJS::AST::Node* node) override; 0029 0030 bool visit(QmlJS::AST::FieldMemberExpression* node) override; 0031 bool visit(QmlJS::AST::IdentifierExpression* node) override; 0032 bool visit(QmlJS::AST::UiQualifiedId* node) override; 0033 bool visit(QmlJS::AST::UiImport* node) override; 0034 bool visit(QmlJS::AST::UiPublicMember* node) override; 0035 bool visit(QmlJS::AST::UiScriptBinding* node) override; 0036 0037 private: 0038 void useForExpression(QmlJS::AST::Node* node, const KDevelop::RangeInRevision &range = KDevelop::RangeInRevision::invalid()); 0039 0040 private: 0041 KDevelop::Stack<QmlJS::AST::Node*> m_nodesThatOpenedContexts; 0042 }; 0043 0044 #endif // USEBUILDER_H