[PATCH] D67341: [clangd] Simplify semantic highlighting visitor
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 10 02:03:39 PDT 2019
hokein added a comment.
thanks, looks good, just a few nits.
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:34
+ return true;
+ if (!Name.isIdentifier())
+ return false;
----------------
nit: I think the check is redundant, getAsIdentifierInfo() will return nullptr if `!Name.isIdentifier()`.
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:37
+ auto *II = Name.getAsIdentifierInfo();
+ return II && II->getName() != "";
+}
----------------
nit: `!II->getName().empty()`
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:169
private:
- void addTokenForTypedef(SourceLocation Loc, const TypedefNameDecl *TD) {
- auto *TSI = TD->getTypeSourceInfo();
- if (!TSI)
- return;
- // Try to highlight as underlying type.
- if (addType(Loc, TSI->getType().getTypePtrOrNull()))
- return;
- // Fallback to the typedef highlighting kind.
- addToken(Loc, HighlightingKind::Typedef);
- }
-
- bool addType(SourceLocation Loc, const Type *TP) {
+ llvm::Optional<HighlightingKind> kindForType(const Type *TP) {
if (!TP)
----------------
how about moving out this method (and `kindForDecl`) of the class, they seem to not depend on any fields of the class?
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:212
+ return HighlightingKind::Parameter;
+ if (const VarDecl *VD = dyn_cast<VarDecl>(D))
+ return VD->isStaticDataMember()
----------------
nit: auto
================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:260
+ void addToken(SourceLocation Loc, const NamedDecl *D) {
+ auto K = kindForDecl(D);
+ if (!K)
----------------
maybe
```
if (auto K = kindForDecl(D))
addToken(Loc, *K);
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D67341/new/
https://reviews.llvm.org/D67341
More information about the cfe-commits
mailing list