[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:
parent
34a35a8b24
commit
c39dcd2c2b
@ -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:
|
||||
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user