@@ -1618,6 +1618,35 @@ class PathHierarchyTests: XCTestCase {
1618
1618
XCTAssertEqual ( paths [ memberID] , " /ModuleName/ContainerName/MemberName " )
1619
1619
}
1620
1620
1621
+ func testOptionalMemberUnderCorrectContainer( ) throws {
1622
+ let containerID = " some-container-symbol-id "
1623
+ let otherID = " some-other-symbol-id "
1624
+ let memberID = " some-member-symbol-id "
1625
+
1626
+ let exampleDocumentation = Folder ( name: " unit-test.docc " , content: [
1627
+ JSONFile ( name: " ModuleName.symbols.json " , content: makeSymbolGraph (
1628
+ moduleName: " ModuleName " ,
1629
+ symbols: [
1630
+ ( containerID, . swift, [ " ContainerName " ] ) ,
1631
+ ( otherID, . swift, [ " ContainerName " ] ) ,
1632
+ ( memberID, . swift, [ " ContainerName " , " MemberName1 " ] ) ,
1633
+ ] ,
1634
+ relationships: [
1635
+ . init( source: memberID, target: containerID, kind: . optionalMemberOf, targetFallback: nil ) ,
1636
+ ]
1637
+ ) )
1638
+ ] )
1639
+
1640
+ let tempURL = try createTempFolder ( content: [ exampleDocumentation] )
1641
+ let ( _, _, context) = try loadBundle ( from: tempURL)
1642
+ let tree = try XCTUnwrap ( context. linkResolver. localResolver? . pathHierarchy)
1643
+
1644
+ let paths = tree. caseInsensitiveDisambiguatedPaths ( includeDisambiguationForUnambiguousChildren: true )
1645
+ XCTAssertEqual ( paths [ otherID] , " /ModuleName/ContainerName-2vaqf " )
1646
+ XCTAssertEqual ( paths [ containerID] , " /ModuleName/ContainerName-qwwf " )
1647
+ XCTAssertEqual ( paths [ memberID] , " /ModuleName/ContainerName-qwwf/MemberName1 " )
1648
+ }
1649
+
1621
1650
func testMultiPlatformModuleWithExtension( ) throws {
1622
1651
let ( _, context) = try testBundleAndContext ( named: " MultiPlatformModuleWithExtension " )
1623
1652
let tree = try XCTUnwrap ( context. linkResolver. localResolver? . pathHierarchy)
0 commit comments