[clang-tools-extra] LSP 3.18 - Symbol Tags (PR #167536)
Nathan Ridge via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 13 23:12:09 PST 2026
================
@@ -35,6 +35,8 @@ MATCHER_P(withName, N, "") { return arg.name == N; }
MATCHER_P(withKind, Kind, "") { return arg.kind == Kind; }
MATCHER_P(withDetail, Detail, "") { return arg.detail == Detail; }
MATCHER_P(symRange, Range, "") { return arg.range == Range; }
+MATCHER_P(withSymbolTag, Tag, "") { return llvm::is_contained(arg.tags, Tag); }
----------------
HighCommander4 wrote:
Instead of doing a separate lookup for each tag (quadratic in the number of tags), we can check them in a single go with:
```
::testing::Matcher<DocumentSymbol>
withSymbolTags(std::initializer_list<SymbolTag> Tags) {
return Field(&DocumentSymbol::tags, ElementsAreArray(Tags));
}
```
and then
```
withSymbolTags({SymbolTag::Abstract, SymbolTag::Definition})
```
You can also use `UnorderedElementsAreArray` if you'd prefer.
https://github.com/llvm/llvm-project/pull/167536
More information about the cfe-commits
mailing list