diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-03-16 12:15:10 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-03-16 14:57:13 +0100 |
commit | afe20375bab3dea584c3b6c9bc5812da78f6618e (patch) | |
tree | 67d89d63dfbb968bd7e87246381fdf1b941833c7 /tools | |
parent | 3e57c56aa1d54ac4587284727ca9c952d33f3e43 (diff) |
qmllint: Use fully qualified QML type names as superClass
Otherwise we miss subtleties such as Label vs. T.Label.
Task-number: QTBUG-82817
Change-Id: Idc2131426b2fd96f279dab83292a348b9295d5c0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmllint/findunqualified.cpp | 9 | ||||
-rw-r--r-- | tools/qmllint/importedmembersvisitor.cpp | 11 |
2 files changed, 11 insertions, 9 deletions
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp index ae23d6d5f8..5bb9b62529 100644 --- a/tools/qmllint/findunqualified.cpp +++ b/tools/qmllint/findunqualified.cpp @@ -43,6 +43,7 @@ static const QString prefixedName(const QString &prefix, const QString &name) { + Q_ASSERT(!prefix.endsWith('.')); return prefix.isEmpty() ? name : (prefix + QLatin1Char('.') + name); } @@ -88,11 +89,9 @@ void FindUnqualifiedIDVisitor::parseHeaders(QQmlJS::AST::UiHeaderItemList *heade uri = uri->next; } path.chop(1); - QString prefix = QLatin1String(""); - if (import->asToken.isValid()) { - prefix += import->importId + QLatin1Char('.'); - } - importHelper(path, prefix, import->version->majorVersion, + importHelper(path, + import->asToken.isValid() ? import->importId.toString() : QString(), + import->version->majorVersion, import->version->minorVersion); } } diff --git a/tools/qmllint/importedmembersvisitor.cpp b/tools/qmllint/importedmembersvisitor.cpp index 676903d135..c5214f2bb9 100644 --- a/tools/qmllint/importedmembersvisitor.cpp +++ b/tools/qmllint/importedmembersvisitor.cpp @@ -57,10 +57,13 @@ ScopeTree *ImportedMembersVisitor::result(const QString &scopeName) const bool ImportedMembersVisitor::visit(UiObjectDefinition *definition) { ScopeTree::Ptr scope(new ScopeTree(ScopeType::QMLScope)); - auto qualifiedId = definition->qualifiedTypeNameId; - while (qualifiedId && qualifiedId->next) - qualifiedId = qualifiedId->next; - scope->setSuperclassName(qualifiedId->name.toString()); + QString superType; + for (auto segment = definition->qualifiedTypeNameId; segment; segment = segment->next) { + if (!superType.isEmpty()) + superType.append('.'); + superType.append(segment->name.toString()); + } + scope->setSuperclassName(superType); if (!m_rootObject) m_rootObject = scope; m_currentObjects.append(scope); |