forked from qt-creator/qt-creator
LSP: Avoid running strlen() on json keys
This feels better when stepping through the code but doesn't really make a difference in the profile. Change-Id: I2c30578bf1e990b039caadb8b8ce532f009b775d Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -18,8 +18,8 @@ using namespace Utils;
|
||||
|
||||
namespace ClangCodeModel::Internal {
|
||||
|
||||
static constexpr char roleKey[] = "role";
|
||||
static constexpr char arcanaKey[] = "arcana";
|
||||
static constexpr LanguageServerProtocol::Key roleKey{"role"};
|
||||
static constexpr LanguageServerProtocol::Key arcanaKey{"arcana"};
|
||||
|
||||
QString ClangdAstNode::role() const { return typedValue<QString>(roleKey); }
|
||||
QString ClangdAstNode::kind() const { return typedValue<QString>(kindKey); }
|
||||
|
||||
@@ -98,7 +98,7 @@ class SymbolDetails : public JsonObject
|
||||
public:
|
||||
using JsonObject::JsonObject;
|
||||
|
||||
static constexpr char usrKey[] = "usr";
|
||||
static constexpr Key usrKey{"usr"};
|
||||
|
||||
// the unqualified name of the symbol
|
||||
QString name() const { return typedValue<QString>(nameKey); }
|
||||
@@ -229,15 +229,15 @@ class DiagnosticsCapabilities : public JsonObject
|
||||
{
|
||||
public:
|
||||
using JsonObject::JsonObject;
|
||||
void enableCategorySupport() { insert("categorySupport", true); }
|
||||
void enableCodeActionsInline() {insert("codeActionsInline", true);}
|
||||
void enableCategorySupport() { insert(Key{"categorySupport"}, true); }
|
||||
void enableCodeActionsInline() {insert(Key{"codeActionsInline"}, true);}
|
||||
};
|
||||
|
||||
class InactiveRegionsCapabilities : public JsonObject
|
||||
{
|
||||
public:
|
||||
using JsonObject::JsonObject;
|
||||
void enableInactiveRegionsSupport() { insert("inactiveRegions", true); }
|
||||
void enableInactiveRegionsSupport() { insert(Key{"inactiveRegions"}, true); }
|
||||
};
|
||||
|
||||
class ClangdTextDocumentClientCapabilities : public TextDocumentClientCapabilities
|
||||
@@ -246,9 +246,9 @@ public:
|
||||
using TextDocumentClientCapabilities::TextDocumentClientCapabilities;
|
||||
|
||||
void setPublishDiagnostics(const DiagnosticsCapabilities &caps)
|
||||
{ insert("publishDiagnostics", caps); }
|
||||
{ insert(Key{"publishDiagnostics"}, caps); }
|
||||
void setInactiveRegionsCapabilities(const InactiveRegionsCapabilities &caps)
|
||||
{ insert("inactiveRegionsCapabilities", caps); }
|
||||
{ insert(Key{"inactiveRegionsCapabilities"}, caps); }
|
||||
};
|
||||
|
||||
static qint64 getRevision(const TextDocument *doc)
|
||||
@@ -1594,7 +1594,7 @@ void ClangdClient::Private::handleSemanticTokens(TextDocument *doc,
|
||||
|
||||
std::optional<QList<CodeAction> > ClangdDiagnostic::codeActions() const
|
||||
{
|
||||
auto actions = optionalArray<LanguageServerProtocol::CodeAction>("codeActions");
|
||||
auto actions = optionalArray<LanguageServerProtocol::CodeAction>(Key{"codeActions"});
|
||||
if (!actions)
|
||||
return actions;
|
||||
static const QStringList badCodeActions{
|
||||
@@ -1611,7 +1611,7 @@ std::optional<QList<CodeAction> > ClangdDiagnostic::codeActions() const
|
||||
|
||||
QString ClangdDiagnostic::category() const
|
||||
{
|
||||
return typedValue<QString>("category");
|
||||
return typedValue<QString>(Key{"category"});
|
||||
}
|
||||
|
||||
MessageId ClangdClient::Private::getAndHandleAst(const TextDocOrFile &doc,
|
||||
|
||||
@@ -623,7 +623,7 @@ IAssistProposal *ClangdFunctionHintProcessor::perform()
|
||||
ClangdCompletionCapabilities::ClangdCompletionCapabilities(const JsonObject &object)
|
||||
: TextDocumentClientCapabilities::CompletionCapabilities(object)
|
||||
{
|
||||
insert("editsNearCursor", true); // For dot-to-arrow correction.
|
||||
insert(Key{"editsNearCursor"}, true); // For dot-to-arrow correction.
|
||||
if (std::optional<CompletionItemCapbilities> completionItemCaps = completionItem()) {
|
||||
completionItemCaps->setSnippetSupport(false);
|
||||
setCompletionItem(*completionItemCaps);
|
||||
|
||||
@@ -46,8 +46,8 @@ public:
|
||||
return components;
|
||||
}
|
||||
|
||||
static constexpr char totalKey[] = "_total";
|
||||
static constexpr char selfKey[] = "_self";
|
||||
static constexpr Key totalKey{"_total"};
|
||||
static constexpr Key selfKey{"_self"};
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -968,7 +968,9 @@ public:
|
||||
using JsonObject::JsonObject;
|
||||
|
||||
DocumentUri uri() const { return TextDocumentIdentifier(value("textDocument")).uri(); }
|
||||
QList<Range> inactiveRegions() const { return array<Range>("regions"); }
|
||||
QList<Range> inactiveRegions() const {
|
||||
return array<Range>(LanguageServerProtocol::Key{"regions"});
|
||||
}
|
||||
};
|
||||
|
||||
class InactiveRegionsNotification : public Notification<InactiveRegionsParams>
|
||||
|
||||
Reference in New Issue
Block a user