aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmllint/findwarnings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qmllint/findwarnings.cpp')
-rw-r--r--tools/qmllint/findwarnings.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/tools/qmllint/findwarnings.cpp b/tools/qmllint/findwarnings.cpp
index 4ace09756f..e2a5834109 100644
--- a/tools/qmllint/findwarnings.cpp
+++ b/tools/qmllint/findwarnings.cpp
@@ -380,8 +380,8 @@ bool FindWarningVisitor::visit(QQmlJS::AST::UiPublicMember *uipm)
bool FindWarningVisitor::visit(QQmlJS::AST::IdentifierExpression *idexp)
{
- auto name = idexp->name;
- m_currentScope->addIdToAccessed(name.toString(), idexp->firstSourceLocation());
+ m_memberAccessChains[m_currentScope].append(
+ {{idexp->name.toString(), QString(), idexp->firstSourceLocation()}});
m_fieldMemberBase = idexp;
return true;
}
@@ -453,7 +453,7 @@ bool FindWarningVisitor::check()
return true;
CheckIdentifiers check(&m_colorOut, m_code, m_rootScopeImports, m_filePath);
- return check(m_qmlid2scope, m_signalHandlers, m_rootScope, m_rootId);
+ return check(m_qmlid2scope, m_signalHandlers, m_memberAccessChains, m_rootScope, m_rootId);
}
bool FindWarningVisitor::visit(QQmlJS::AST::VariableDeclarationList *vdl)
@@ -727,9 +727,13 @@ void FindWarningVisitor::endVisit(QQmlJS::AST::FieldMemberExpression *fieldMembe
type = right->m_type->toString();
}
}
- m_currentScope->accessMember(fieldMember->name.toString(),
- type,
- fieldMember->identifierToken);
+
+
+ auto &chain = m_memberAccessChains[m_currentScope];
+ Q_ASSERT(!chain.last().isEmpty());
+ chain.last().append(FieldMember {
+ fieldMember->name.toString(), type, fieldMember->identifierToken
+ });
m_fieldMemberBase = fieldMember;
} else {
m_fieldMemberBase = nullptr;