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 &methods) { m_methods.insert(methods); } + void addMethods(const QMultiHash &methods) { m_methods.unite(methods); } void addMethod(const MetaMethod &method) { m_methods.insert(method.methodName(), method); } - QHash methods() const { return m_methods; } + QMultiHash methods() const { return m_methods; } void addEnum(const MetaEnum &fakeEnum) { m_enums.insert(fakeEnum.name(), fakeEnum); } QHash enums() const { return m_enums; } @@ -194,7 +194,7 @@ private: QSet m_jsIdentifiers; QMultiHash m_injectedSignalIdentifiers; - QHash m_methods; + QMultiHash m_methods; QHash m_properties; QHash m_enums;