diff --git a/src/libs/languageserverprotocol/semantictokens.cpp b/src/libs/languageserverprotocol/semantictokens.cpp index fc8233b1704..2182aa466dd 100644 --- a/src/libs/languageserverprotocol/semantictokens.cpp +++ b/src/libs/languageserverprotocol/semantictokens.cpp @@ -80,8 +80,11 @@ static int convertModifiers(int modifiersData, const QList &tokenModifiers) { int result = 0; for (int i = 0; i < tokenModifiers.size() && modifiersData > 0; ++i) { - if (modifiersData & 0x1) - result |= tokenModifiers[i]; + if (modifiersData & 0x1) { + const int modifier = tokenModifiers[i]; + if (modifier > 0) + result |= modifier; + } modifiersData = modifiersData >> 1; } return result; diff --git a/src/plugins/languageclient/semantichighlightsupport.cpp b/src/plugins/languageclient/semantichighlightsupport.cpp index 2038f91f18c..9d442ca7ce5 100644 --- a/src/plugins/languageclient/semantichighlightsupport.cpp +++ b/src/plugins/languageclient/semantichighlightsupport.cpp @@ -254,7 +254,9 @@ void addModifiers(int key, if (tokenModifiers.isEmpty()) return; int modifier = tokenModifiers.takeLast(); - auto addModifier = [&](TextStyle style){ + if (modifier < 0) + return; + auto addModifier = [&](TextStyle style) { if (key & modifier) // already there don't add twice return; key = key | modifier;