aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-04-09 18:43:43 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-04-15 13:42:45 +0200
commite9d2bbdcb0b314e73606992787681586ab7c1e9b (patch)
tree9152ce6eed482a5ecacc3da5c1a09f12f659a95c /tools
parent32e03a72339e9ffbbe27b0a0fde747dafc8568ee (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.cpp19
-rw-r--r--tools/shared/scopetree.h6
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 &param : 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 &param : 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;