nridge created this revision. nridge added a reviewer: sammccall. Herald added subscribers: cfe-commits, kadircet, arphaman, jkorous, MaskRay, ilya-biryukov. Herald added a project: clang.
Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D64613 Files: clang-tools-extra/clangd/XRefs.cpp clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp Index: clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp +++ clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp @@ -630,7 +630,8 @@ ASSERT_TRUE(bool(Result)); EXPECT_THAT( *Result, - AllOf(WithName("Parent"), WithKind(SymbolKind::Struct), Parents(), + AllOf(WithName("Parent"), WithKind(SymbolKind::Struct), + ParentsNotResolved(), Children(AllOf(WithName("Child1"), WithKind(SymbolKind::Struct), ParentsNotResolved(), ChildrenNotResolved())))); Index: clang-tools-extra/clangd/XRefs.cpp =================================================================== --- clang-tools-extra/clangd/XRefs.cpp +++ clang-tools-extra/clangd/XRefs.cpp @@ -1134,9 +1134,9 @@ static Optional<TypeHierarchyItem> getTypeAncestors(const CXXRecordDecl &CXXRD, ASTContext &ASTCtx, - RecursionProtectionSet &RPSet) { + RecursionProtectionSet &RPSet, bool ResolveParents = true) { Optional<TypeHierarchyItem> Result = declToTypeHierarchyItem(ASTCtx, CXXRD); - if (!Result) + if (!Result || !ResolveParents) return Result; Result->parents.emplace(); @@ -1232,8 +1232,10 @@ return llvm::None; RecursionProtectionSet RPSet; + bool ResolveParents = (Direction == TypeHierarchyDirection::Parents || + Direction == TypeHierarchyDirection::Both); Optional<TypeHierarchyItem> Result = - getTypeAncestors(*CXXRD, AST.getASTContext(), RPSet); + getTypeAncestors(*CXXRD, AST.getASTContext(), RPSet, ResolveParents); if (!Result) return Result;
Index: clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp +++ clang-tools-extra/clangd/unittests/TypeHierarchyTests.cpp @@ -630,7 +630,8 @@ ASSERT_TRUE(bool(Result)); EXPECT_THAT( *Result, - AllOf(WithName("Parent"), WithKind(SymbolKind::Struct), Parents(), + AllOf(WithName("Parent"), WithKind(SymbolKind::Struct), + ParentsNotResolved(), Children(AllOf(WithName("Child1"), WithKind(SymbolKind::Struct), ParentsNotResolved(), ChildrenNotResolved())))); Index: clang-tools-extra/clangd/XRefs.cpp =================================================================== --- clang-tools-extra/clangd/XRefs.cpp +++ clang-tools-extra/clangd/XRefs.cpp @@ -1134,9 +1134,9 @@ static Optional<TypeHierarchyItem> getTypeAncestors(const CXXRecordDecl &CXXRD, ASTContext &ASTCtx, - RecursionProtectionSet &RPSet) { + RecursionProtectionSet &RPSet, bool ResolveParents = true) { Optional<TypeHierarchyItem> Result = declToTypeHierarchyItem(ASTCtx, CXXRD); - if (!Result) + if (!Result || !ResolveParents) return Result; Result->parents.emplace(); @@ -1232,8 +1232,10 @@ return llvm::None; RecursionProtectionSet RPSet; + bool ResolveParents = (Direction == TypeHierarchyDirection::Parents || + Direction == TypeHierarchyDirection::Both); Optional<TypeHierarchyItem> Result = - getTypeAncestors(*CXXRD, AST.getASTContext(), RPSet); + getTypeAncestors(*CXXRD, AST.getASTContext(), RPSet, ResolveParents); if (!Result) return Result;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits