[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