diff options
author | Qt Forward Merge Bot <[email protected]> | 2020-03-20 01:00:59 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <[email protected]> | 2020-03-20 01:00:59 +0100 |
commit | 1eef06e64fe91dc1f2148477fb932b293fba0312 (patch) | |
tree | 38a9a2de87bec5e6a45c090ea086f978421bb554 /tools/qmllint/findunqualified.cpp | |
parent | 4b0034a01c360ac8b17c9503dba010c56a307c63 (diff) | |
parent | f726d237277de0f4c8f276d20a5bb1b6a8cd007c (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I6f320ea43b5837444226228c118e57c4bda8702a
Diffstat (limited to 'tools/qmllint/findunqualified.cpp')
-rw-r--r-- | tools/qmllint/findunqualified.cpp | 17 |
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()); |