[c++20][clangd] Simplify code using the new ConceptReference nodes.

Directly traverse `ConceptReference`s in FindTarget.cpp.

There is no need for the extra logic for `AutoTypeLoc`s in SemanticHightlighting.cpp as the concept information is stored in a `ConceptReference` which is now traversed.

Differential Revision: https://reviews.llvm.org/D159268
This commit is contained in:
Jens Massberg 2023-08-31 13:06:24 +02:00
parent 34a35a8b24
commit c39dcd2c2b
2 changed files with 5 additions and 23 deletions

View File

@ -742,13 +742,6 @@ llvm::SmallVector<ReferenceLoc> refInStmt(const Stmt *S,
// FIXME: handle more complicated cases: more ObjC, designated initializers.
llvm::SmallVector<ReferenceLoc> Refs;
void VisitConceptSpecializationExpr(const ConceptSpecializationExpr *E) {
Refs.push_back(ReferenceLoc{E->getNestedNameSpecifierLoc(),
E->getConceptNameLoc(),
/*IsDecl=*/false,
{E->getNamedConcept()}});
}
void VisitDeclRefExpr(const DeclRefExpr *E) {
Refs.push_back(ReferenceLoc{E->getQualifierLoc(),
E->getNameInfo().getLoc(),
@ -1063,15 +1056,12 @@ public:
return RecursiveASTVisitor::TraverseConstructorInitializer(Init);
}
bool TraverseTypeConstraint(const TypeConstraint *TC) {
// We want to handle all ConceptReferences but RAV is missing a
// polymorphic Visit or Traverse method for it, so we handle
// TypeConstraints specially here.
Out(ReferenceLoc{TC->getNestedNameSpecifierLoc(),
TC->getConceptNameLoc(),
bool VisitConceptReference(ConceptReference *ConceptRef) {
Out(ReferenceLoc{ConceptRef->getNestedNameSpecifierLoc(),
ConceptRef->getConceptNameLoc(),
/*IsDecl=*/false,
{TC->getNamedConcept()}});
return RecursiveASTVisitor::TraverseTypeConstraint(TC);
{ConceptRef->getNamedConcept()}});
return true;
}
private:

View File

@ -736,14 +736,6 @@ public:
return true;
}
bool VisitAutoTypeLoc(AutoTypeLoc L) {
if (L.isConstrained()) {
H.addAngleBracketTokens(L.getLAngleLoc(), L.getRAngleLoc());
H.addToken(L.getConceptNameInfo().getLoc(), HighlightingKind::Concept);
}
return true;
}
bool VisitFunctionDecl(FunctionDecl *D) {
if (D->isOverloadedOperator()) {
const auto AddOpDeclToken = [&](SourceLocation Loc) {