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>
This commit is contained in:
parent
32e03a7233
commit
e9d2bbdcb0
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue