summaryrefslogtreecommitdiff
path: root/src/libs/languageserverprotocol/lsptypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/languageserverprotocol/lsptypes.h')
-rw-r--r--src/libs/languageserverprotocol/lsptypes.h70
1 files changed, 36 insertions, 34 deletions
diff --git a/src/libs/languageserverprotocol/lsptypes.h b/src/libs/languageserverprotocol/lsptypes.h
index d6de79b430..1c6820a4aa 100644
--- a/src/libs/languageserverprotocol/lsptypes.h
+++ b/src/libs/languageserverprotocol/lsptypes.h
@@ -83,17 +83,27 @@ public:
int character() const { return typedValue<int>(characterKey); }
void setCharacter(int character) { insert(characterKey, character); }
- bool isValid(ErrorHierarchy *error) const override
- { return check<int>(error, lineKey) && check<int>(error, characterKey); }
+ bool isValid() const override
+ { return contains(lineKey) && contains(characterKey); }
int toPositionInDocument(QTextDocument *doc) const;
QTextCursor toTextCursor(QTextDocument *doc) const;
};
-static bool operator<=(const Position &first, const Position &second)
+inline bool operator<(const Position &first, const Position &second)
{
return first.line() < second.line()
- || (first.line() == second.line() && first.character() <= second.character());
+ || (first.line() == second.line() && first.character() < second.character());
+}
+
+inline bool operator>(const Position &first, const Position &second)
+{
+ return second < first;
+}
+
+inline bool operator<=(const Position &first, const Position &second)
+{
+ return !(first > second);
}
class LANGUAGESERVERPROTOCOL_EXPORT Range : public JsonObject
@@ -113,10 +123,11 @@ public:
void setEnd(const Position &end) { insert(endKey, end); }
bool contains(const Position &pos) const { return start() <= pos && pos <= end(); }
+ bool contains(const Range &other) const;
bool overlaps(const Range &range) const;
- bool isValid(ErrorHierarchy *error) const override
- { return check<Position>(error, startKey) && check<Position>(error, endKey); }
+ bool isValid() const override
+ { return JsonObject::contains(startKey) && JsonObject::contains(endKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT Location : public JsonObject
@@ -133,8 +144,7 @@ public:
Utils::Link toLink() const;
- bool isValid(ErrorHierarchy *error) const override
- { return check<QString>(error, uriKey) && check<Range>(error, rangeKey); }
+ bool isValid() const override { return contains(uriKey) && contains(rangeKey); }
};
enum class DiagnosticSeverity
@@ -180,7 +190,7 @@ public:
{ return typedValue<QString>(messageKey); }
void setMessage(const QString &message) { insert(messageKey, message); }
- bool isValid(ErrorHierarchy *error) const override;
+ bool isValid() const override { return contains(rangeKey) && contains(messageKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT Command : public JsonObject
@@ -203,10 +213,7 @@ public:
void setArguments(const QJsonArray &arguments) { insert(argumentsKey, arguments); }
void clearArguments() { remove(argumentsKey); }
- bool isValid(ErrorHierarchy *error) const override
- { return check<QString>(error, titleKey)
- && check<QString>(error, commandKey)
- && checkOptional<QJsonArray>(error, argumentsKey); }
+ bool isValid() const override { return contains(titleKey) && contains(commandKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT TextEdit : public JsonObject
@@ -225,8 +232,8 @@ public:
Utils::Text::Replacement toReplacement(QTextDocument *document) const;
- bool isValid(ErrorHierarchy *error) const override
- { return check<Range>(error, rangeKey) && check<QString>(error, newTextKey); }
+ bool isValid() const override
+ { return contains(rangeKey) && contains(newTextKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT TextDocumentIdentifier : public JsonObject
@@ -240,7 +247,7 @@ public:
DocumentUri uri() const { return DocumentUri::fromProtocol(typedValue<QString>(uriKey)); }
void setUri(const DocumentUri &uri) { insert(uriKey, uri); }
- bool isValid(ErrorHierarchy *error) const override { return check<QString>(error, uriKey); }
+ bool isValid() const override { return contains(uriKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT VersionedTextDocumentIdentifier : public TextDocumentIdentifier
@@ -258,10 +265,9 @@ public:
LanguageClientValue<int> version() const { return clientValue<int>(versionKey); }
void setVersion(LanguageClientValue<int> version) { insert(versionKey, version); }
- bool isValid(ErrorHierarchy *error) const override
+ bool isValid() const override
{
- return TextDocumentIdentifier::isValid(error)
- && checkVariant<int, std::nullptr_t>(error, versionKey);
+ return TextDocumentIdentifier::isValid() && contains(versionKey);
}
};
@@ -280,7 +286,7 @@ public:
QList<TextEdit> edits() const { return array<TextEdit>(editsKey); }
void setEdits(const QList<TextEdit> edits) { insertArray(editsKey, edits); }
- bool isValid(ErrorHierarchy *error) const override;
+ bool isValid() const override { return contains(textDocumentKey) && contains(editsKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT WorkspaceEdit : public JsonObject
@@ -306,9 +312,6 @@ public:
{ return optionalArray<TextDocumentEdit>(documentChangesKey); }
void setDocumentChanges(const QList<TextDocumentEdit> &changes)
{ insertArray(documentChangesKey, changes); }
-
- bool isValid(ErrorHierarchy *error) const override
- { return checkOptionalArray<TextDocumentEdit>(error, documentChangesKey); }
};
LANGUAGESERVERPROTOCOL_EXPORT QMap<QString, QString> languageIds();
@@ -334,7 +337,7 @@ public:
QString text() const { return typedValue<QString>(textKey); }
void setText(const QString &text) { insert(textKey, text); }
- bool isValid(ErrorHierarchy *error) const override;
+ bool isValid() const override;
static QString mimeTypeToLanguageId(const Utils::MimeType &mimeType);
static QString mimeTypeToLanguageId(const QString &mimeTypeName);
@@ -356,7 +359,7 @@ public:
Position position() const { return typedValue<Position>(positionKey); }
void setPosition(const Position &position) { insert(positionKey, position); }
- bool isValid(ErrorHierarchy *error) const override;
+ bool isValid() const override { return contains(textDocumentKey) && contains(positionKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT DocumentFilter : public JsonObject
@@ -381,8 +384,6 @@ public:
bool applies(const Utils::FilePath &fileName,
const Utils::MimeType &mimeType = Utils::MimeType()) const;
-
- bool isValid(ErrorHierarchy *error) const override;
};
class LANGUAGESERVERPROTOCOL_EXPORT MarkupKind
@@ -400,7 +401,7 @@ public:
bool operator==(const Value &value) const { return m_value == value; }
- bool isValid(void *) const { return true; }
+ bool isValid() const { return true; }
private:
Value m_value = plaintext;
};
@@ -420,8 +421,8 @@ public:
QString content() const { return typedValue<QString>(contentKey); }
void setContent(const QString &content) { insert(contentKey, content); }
- bool isValid(ErrorHierarchy *error) const override
- { return check<MarkupKind>(error, kindKey) && check<QString>(error, contentKey); }
+ bool isValid() const override
+ { return contains(kindKey) && contains(contentKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT MarkupOrString : public Utils::variant<QString, MarkupContent>
@@ -433,7 +434,7 @@ public:
explicit MarkupOrString(const MarkupContent &val);
MarkupOrString(const QJsonValue &val);
- bool isValid(ErrorHierarchy *error) const;
+ bool isValid() const { return true; }
QJsonValue toJson() const;
};
@@ -453,8 +454,8 @@ public:
QString name() const { return typedValue<QString>(nameKey); }
void setName(const QString &name) { insert(nameKey, name); }
- bool isValid(ErrorHierarchy *error) const override
- { return check<QString>(error, uriKey) && check<QString>(error, nameKey); }
+ bool isValid() const override
+ { return contains(uriKey) && contains(nameKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT SymbolInformation : public JsonObject
@@ -480,7 +481,8 @@ public:
void setContainerName(const QString &containerName) { insert(containerNameKey, containerName); }
void clearContainerName() { remove(containerNameKey); }
- bool isValid(ErrorHierarchy *error) const override;
+ bool isValid() const override
+ { return contains(nameKey) && contains(kindKey) && contains(locationKey); }
};
class LANGUAGESERVERPROTOCOL_EXPORT DocumentSymbol : public JsonObject