aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-03-20 01:00:59 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-03-20 01:00:59 +0100
commit1eef06e64fe91dc1f2148477fb932b293fba0312 (patch)
tree38a9a2de87bec5e6a45c090ea086f978421bb554 /tools
parent4b0034a01c360ac8b17c9503dba010c56a307c63 (diff)
parentf726d237277de0f4c8f276d20a5bb1b6a8cd007c (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'tools')
-rw-r--r--tools/qmllint/findunqualified.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp
index 305dd65c66..96921ecdc5 100644
--- a/tools/qmllint/findunqualified.cpp
+++ b/tools/qmllint/findunqualified.cpp
@@ -367,11 +367,28 @@ void FindUnqualifiedIDVisitor::importFileOrDirectory(const QString &fileOrDirect
void FindUnqualifiedIDVisitor::importExportedNames(const QStringRef &prefix, QString name)
{
+ QList<ScopeTree::ConstPtr> scopes;
for (;;) {
ScopeTree::ConstPtr scope = m_exportedName2Scope.value(m_exportedName2Scope.contains(name)
? name
: prefix + QLatin1Char('.') + name);
if (scope) {
+ if (scopes.contains(scope)) {
+ QString inheritenceCycle = name;
+ for (const auto seen: qAsConst(scopes)) {
+ inheritenceCycle.append(QLatin1String(" -> "));
+ inheritenceCycle.append(seen->superclassName());
+ }
+
+ m_colorOut.write(QLatin1String("Warning: "), Warning);
+ m_colorOut.write(QString::fromLatin1("%1 is part of an inheritance cycle: %2\n")
+ .arg(name)
+ .arg(inheritenceCycle));
+ m_unknownImports.insert(name);
+ m_visitFailed = true;
+ break;
+ }
+ scopes.append(scope);
const auto properties = scope->properties();
for (auto property : properties) {
property.setType(m_exportedName2Scope.value(property.typeName()).get());