diff options
author | Moody Liu <mooodyhunter@outlook.com> | 2022-05-25 18:41:28 +0100 |
---|---|---|
committer | Moody Liu <mooodyhunter@outlook.com> | 2022-05-26 11:57:35 +0100 |
commit | f65fac151469570ff5b751a46ab0c175e3f670fb (patch) | |
tree | 0d851dc237de4094b4cc5dc5790657c4aa24b5e8 | |
parent | 83f18c3191fd27ea66e0d4e9ade50e94ae8da091 (diff) |
qmlls: use CompletionItemKind::Class for QML types
Change-Id: Ia121463cf4352bedc03475268f38ce32c0073d50
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r-- | tests/auto/qmlls/completions/tst_qmllscompletions.cpp | 14 | ||||
-rw-r--r-- | tools/qmlls/qmlcompletionsupport.cpp | 33 |
2 files changed, 26 insertions, 21 deletions
diff --git a/tests/auto/qmlls/completions/tst_qmllscompletions.cpp b/tests/auto/qmlls/completions/tst_qmllscompletions.cpp index bfb475f625..0cb7e08aa8 100644 --- a/tests/auto/qmlls/completions/tst_qmllscompletions.cpp +++ b/tests/auto/qmlls/completions/tst_qmllscompletions.cpp @@ -144,7 +144,7 @@ void tst_QmllsCompletions::completions_data() QTest::newRow("objEmptyLine") << uri << 7 << 0 << ExpectedCompletions({ - { u"Rectangle"_s, CompletionItemKind::Field }, + { u"Rectangle"_s, CompletionItemKind::Class }, { u"property"_s, CompletionItemKind::Keyword }, { u"width"_s, CompletionItemKind::Property }, { u"function"_s, CompletionItemKind::Keyword }, @@ -153,7 +153,7 @@ void tst_QmllsCompletions::completions_data() QTest::newRow("inBindingLabel") << uri << 4 << 9 << ExpectedCompletions({ - { u"Rectangle"_s, CompletionItemKind::Field }, + { u"Rectangle"_s, CompletionItemKind::Class }, { u"property"_s, CompletionItemKind::Keyword }, { u"width"_s, CompletionItemKind::Property }, }) @@ -177,14 +177,14 @@ void tst_QmllsCompletions::completions_data() QTest::newRow("fileStart") << uri << 0 << 0 << ExpectedCompletions({ - { u"Rectangle"_s, CompletionItemKind::Field }, + { u"Rectangle"_s, CompletionItemKind::Class }, { u"import"_s, CompletionItemKind::Keyword }, }) << QStringList({ u"QtQuick"_s, u"vector4d"_s, u"width"_s }); QTest::newRow("importImport") << uri << 0 << 3 << ExpectedCompletions({ - { u"Rectangle"_s, CompletionItemKind::Field }, + { u"Rectangle"_s, CompletionItemKind::Class }, { u"import"_s, CompletionItemKind::Keyword }, }) << QStringList({ u"QtQuick"_s, u"vector4d"_s, u"width"_s }); @@ -329,7 +329,7 @@ void tst_QmllsCompletions::buildDir() ExpectedCompletions({ { u"property"_s, CompletionItemKind::Keyword }, { u"function"_s, CompletionItemKind::Keyword }, - { u"Rectangle"_s, CompletionItemKind::Field }, + { u"Rectangle"_s, CompletionItemKind::Class }, }), QStringList({ u"BuildDirType"_s, u"QtQuick"_s, u"width"_s, u"vector4d"_s })); Notifications::AddBuildDirsParams bDirs; @@ -349,8 +349,8 @@ void tst_QmllsCompletions::buildDir() m_protocol.notifyDidChangeTextDocument(didChange); checkCompletions(uri, 3, 0, ExpectedCompletions({ - { u"BuildDirType"_s, CompletionItemKind::Field }, - { u"Rectangle"_s, CompletionItemKind::Field }, + { u"BuildDirType"_s, CompletionItemKind::Class }, + { u"Rectangle"_s, CompletionItemKind::Class }, { u"property"_s, CompletionItemKind::Keyword }, { u"width"_s, CompletionItemKind::Property }, { u"function"_s, CompletionItemKind::Keyword }, diff --git a/tools/qmlls/qmlcompletionsupport.cpp b/tools/qmlls/qmlcompletionsupport.cpp index 18933684fa..51d9fab776 100644 --- a/tools/qmlls/qmlcompletionsupport.cpp +++ b/tools/qmlls/qmlcompletionsupport.cpp @@ -457,7 +457,7 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion { // returns completions for the reachable types or attributes from context QList<CompletionItem> res; - QSet<QString> symbols; + QMap<CompletionItemKind, QSet<QString>> symbols; QSet<quintptr> visited; QList<Path> visitedRefs; auto addLocalSymbols = [&res, typeCompletionType, completeMethodCalls, &symbols](DomItem &el) { @@ -466,19 +466,20 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion return false; case TypeCompletionsType::Types: switch (el.internalKind()) { - case DomType::ImportScope: + case DomType::ImportScope: { + const QSet<QString> localSymbols = el.localSymbolNames( + LocalSymbolsType::QmlTypes | LocalSymbolsType::Namespaces); qCDebug(complLog) << "adding local symbols of:" << el.internalKindStr() - << el.canonicalPath() - << el.localSymbolNames(LocalSymbolsType::QmlTypes - | LocalSymbolsType::Namespaces); - symbols += el.localSymbolNames(LocalSymbolsType::QmlTypes - | LocalSymbolsType::Namespaces); + << el.canonicalPath() << localSymbols; + symbols[CompletionItemKind::Class] += localSymbols; break; - default: + } + default: { qCDebug(complLog) << "skipping local symbols for non type" << el.internalKindStr() << el.canonicalPath(); break; } + } break; case TypeCompletionsType::TypesAndAttributes: auto localSymbols = el.localSymbolNames(LocalSymbolsType::All); @@ -518,7 +519,7 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion } qCDebug(complLog) << "adding local symbols of:" << el.internalKindStr() << el.canonicalPath() << localSymbols; - symbols += localSymbols; + symbols[CompletionItemKind::Field] += localSymbols; break; } return true; @@ -546,11 +547,15 @@ static QList<CompletionItem> reachableSymbols(DomItem &context, const Completion context.resolve(toSearch, addReachableSymbols, &defaultErrorHandler); // add attached types? technically we should... } - for (const QString &s : qAsConst(symbols)) { - CompletionItem comp; - comp.label = s.toUtf8(); - comp.kind = int(CompletionItemKind::Field); - res.append(comp); + for (auto symbolKinds = symbols.constBegin(); symbolKinds != symbols.constEnd(); + ++symbolKinds) { + for (auto symbol = symbolKinds.value().constBegin(); + symbol != symbolKinds.value().constEnd(); ++symbol) { + CompletionItem comp; + comp.label = symbol->toUtf8(); + comp.kind = int(symbolKinds.key()); + res.append(comp); + } } return res; } |