diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp --- a/clang-tools-extra/clangd/XRefs.cpp +++ b/clang-tools-extra/clangd/XRefs.cpp @@ -1716,6 +1716,11 @@ Results.push_back( CallHierarchyIncomingCall{std::move(*CHI), std::move(It->second)}); }); + // Sort results by name of container. + llvm::sort(Results, [](const CallHierarchyIncomingCall &A, + const CallHierarchyIncomingCall &B) { + return A.from.name < B.from.name; + }); return Results; } diff --git a/clang-tools-extra/clangd/unittests/CallHierarchyTests.cpp b/clang-tools-extra/clangd/unittests/CallHierarchyTests.cpp --- a/clang-tools-extra/clangd/unittests/CallHierarchyTests.cpp +++ b/clang-tools-extra/clangd/unittests/CallHierarchyTests.cpp @@ -76,12 +76,12 @@ FromRanges(Source.range("Callee"))))); auto IncomingLevel2 = incomingCalls(IncomingLevel1[0].from, Index.get()); - EXPECT_THAT(IncomingLevel2, UnorderedElementsAre( - AllOf(From(WithName("caller2")), - FromRanges(Source.range("Caller1A"), - Source.range("Caller1B"))), - AllOf(From(WithName("caller3")), - FromRanges(Source.range("Caller1C"))))); + EXPECT_THAT(IncomingLevel2, + ElementsAre(AllOf(From(WithName("caller2")), + FromRanges(Source.range("Caller1A"), + Source.range("Caller1B"))), + AllOf(From(WithName("caller3")), + FromRanges(Source.range("Caller1C"))))); auto IncomingLevel3 = incomingCalls(IncomingLevel2[0].from, Index.get()); EXPECT_THAT(IncomingLevel3, @@ -121,8 +121,8 @@ auto IncomingLevel2 = incomingCalls(IncomingLevel1[0].from, Index.get()); EXPECT_THAT(IncomingLevel2, - UnorderedElementsAre(AllOf(From(WithName("caller2")), - FromRanges(Source.range("Caller1"))))); + ElementsAre(AllOf(From(WithName("caller2")), + FromRanges(Source.range("Caller1"))))); } TEST(CallHierarchy, IncomingQualified) { @@ -149,10 +149,10 @@ EXPECT_THAT(Items, ElementsAre(WithName("Waldo::find"))); auto Incoming = incomingCalls(Items[0], Index.get()); EXPECT_THAT(Incoming, - UnorderedElementsAre(AllOf(From(WithName("caller1")), - FromRanges(Source.range("Caller1"))), - AllOf(From(WithName("caller2")), - FromRanges(Source.range("Caller2"))))); + ElementsAre(AllOf(From(WithName("caller1")), + FromRanges(Source.range("Caller1"))), + AllOf(From(WithName("caller2")), + FromRanges(Source.range("Caller2"))))); } TEST(CallHierarchy, IncomingMultiFile) { @@ -219,9 +219,9 @@ FromRanges(Caller1C.range())))); auto IncomingLevel2 = incomingCalls(IncomingLevel1[0].from, Index.get()); - EXPECT_THAT(IncomingLevel2, - UnorderedElementsAre( - AllOf(From(WithName("caller2")), + EXPECT_THAT( + IncomingLevel2, + ElementsAre(AllOf(From(WithName("caller2")), FromRanges(Caller2C.range("A"), Caller2C.range("B"))), AllOf(From(WithName("caller3")), FromRanges(Caller3C.range("Caller1")))));