aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-03-16 12:15:10 +0100
committerUlf Hermann <ulf.hermann@qt.io>2020-03-16 14:57:13 +0100
commitafe20375bab3dea584c3b6c9bc5812da78f6618e (patch)
tree67d89d63dfbb968bd7e87246381fdf1b941833c7 /tools
parent3e57c56aa1d54ac4587284727ca9c952d33f3e43 (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.cpp9
-rw-r--r--tools/qmllint/importedmembersvisitor.cpp11
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);