diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-04-09 18:43:43 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-04-15 13:42:45 +0200 |
commit | e9d2bbdcb0b314e73606992787681586ab7c1e9b (patch) | |
tree | 9152ce6eed482a5ecacc3da5c1a09f12f659a95c /tools | |
parent | 32e03a72339e9ffbbe27b0a0fde747dafc8568ee (diff) |
ScopeTree: Make methods a QMultiHash
You can have multiple overloads with the same name.
Change-Id: Ifffcc634e96b41f99152092b72b61dad64713b23
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmllint/findunqualified.cpp | 19 | ||||
-rw-r--r-- | tools/shared/scopetree.h | 6 |
2 files changed, 15 insertions, 10 deletions
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp index 604cf49122..77d7d487fc 100644 --- a/tools/qmllint/findunqualified.cpp +++ b/tools/qmllint/findunqualified.cpp @@ -627,13 +627,18 @@ bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiScriptBinding *uisb) } } - auto method = m_currentScope->methods()[signal]; - for (auto const ¶m : method.parameterNames()) { - const auto firstSourceLocation = statement->firstSourceLocation(); - bool hasMultilineStatementBody - = statement->lastSourceLocation().startLine > firstSourceLocation.startLine; - m_currentScope->insertSignalIdentifier(param, method, firstSourceLocation, - hasMultilineStatementBody); + const auto methods = m_currentScope->methods(); + const auto methodsRange = methods.equal_range(signal); + for (auto method = methodsRange.first; method != methodsRange.second; ++method) { + if (method->methodType() != MetaMethod::Signal) + continue; + for (auto const ¶m : method->parameterNames()) { + const auto firstSourceLocation = statement->firstSourceLocation(); + bool hasMultilineStatementBody + = statement->lastSourceLocation().startLine > firstSourceLocation.startLine; + m_currentScope->insertSignalIdentifier(param, *method, firstSourceLocation, + hasMultilineStatementBody); + } } return true; } diff --git a/tools/shared/scopetree.h b/tools/shared/scopetree.h index 90f772ab98..92e60d6d0a 100644 --- a/tools/shared/scopetree.h +++ b/tools/shared/scopetree.h @@ -119,9 +119,9 @@ public: ScopeType scopeType() const { return m_scopeType; } - void addMethods(const QHash<QString, MetaMethod> &methods) { m_methods.insert(methods); } + void addMethods(const QMultiHash<QString, MetaMethod> &methods) { m_methods.unite(methods); } void addMethod(const MetaMethod &method) { m_methods.insert(method.methodName(), method); } - QHash<QString, MetaMethod> methods() const { return m_methods; } + QMultiHash<QString, MetaMethod> methods() const { return m_methods; } void addEnum(const MetaEnum &fakeEnum) { m_enums.insert(fakeEnum.name(), fakeEnum); } QHash<QString, MetaEnum> enums() const { return m_enums; } @@ -194,7 +194,7 @@ private: QSet<QString> m_jsIdentifiers; QMultiHash<QString, MethodUsage> m_injectedSignalIdentifiers; - QHash<QString, MetaMethod> m_methods; + QMultiHash<QString, MetaMethod> m_methods; QHash<QString, MetaProperty> m_properties; QHash<QString, MetaEnum> m_enums; |